PYH与MAC的桥梁MII/MIIM

        在学习车载互联网时,看到了一句话,Processor通过DMA直接存储访问与MAC之间进行数据的交互,MAC通过MII介质无关接口与PHY之间进行数据的交互。常见的以太网硬件结构是,将MAC集成进Processor芯片,将PHY留在Processor片外,做成单独的收发器芯片。但是他并没有讲解MII使用的具体流程。本篇博客将聚焦MII与MIIM讲述PYH与MAC以及MAC与Processor是如何进行信息传递的。

        在开始之前我们先简单介绍一下这些是什么。Processor也就是处理器,也就是MCU微控制器,SOC/CPU,域控制前。他是执行数据处理和协议栈的软件/硬件模块。其主要作用是:1.协议处理2.应用逻辑处理3.通信协调。PHY也就是我们常说的OSI七层模型中的物理层,在OBD连接,也就是车身诊断系统中,他与外部通过100BaseTX(2对非屏蔽双绞线)连接,而内部通常采用100BaseT1(1对非屏蔽双绞线))或者1000BaseT1相连接。通常CAN/LIN走的就是这些线路。在发送数据时,PHY接收从MAC过来的数据,将并行的数据转化为串行流数据,按照物理层的编码规则把数据编码,再变为模拟信号把数据发出去。接收数据时的流程则相反。那么PHY是如何接收MAC传递来的数据呢?

        MAC是物理链路层的一部分,负责以太网帧的生成/解析与差错校验。MAC通过MII接口与PYH层进行数据交互,通过MIIM对PHY进行管理。PHY通过MDI接口发送模拟信号。

        MII(Media Independent Interfaces)是MAC与PHY之间的标准接口,支持数据的收发和接受。

        MIIM(Management Data I/O Interface)也称为MDIO/MDC。MDC(Management Data Clock)和 MDIO(Management Data Input/Output)是两个独立的信号线,它们共同组成 MDIO 接口(MIIM,Management Interface)。MDC是 MDIO 管理接口的时钟信号,由 MAC 端主动产生,用于控制 MDIO(Management Data Input/Output) 数据的传输时序。MDIO管理数据线,用于 MAC 读写 PHY 寄存器.他们共同负责对PHY芯片寄存器进行读写,管理配置,设置工作模式,监控PHY等操作。

       MDI: MII 是 MAC 层和 PHY 层之间的接口,主要用于 逻辑信号的交互,以并行数字信号形式传输数据。而 MDI 是 PHY 层与物理介质(如双绞线或光纤)之间的接口,主要用于 模拟信号的传输。由于讨论的重点是 从 MAC 到 PHY 的信号转换和编码 ,MDI 只在最终物理信号传输时使用。

解析 MDIO/MDC 接口管理帧格式

MDIO 传输数据的格式由多个字段组成,每个字段有特定的作用:

  1. PRE(预同步字段)

    • 由多个连续的 1 组成(通常是 32 个 1)。
    • 主要用于同步时钟信号,确保 MDIO 和 PHY 设备可以正确通信。
  2. ST(起始字段,Start of Frame)

    • 固定值 01,用于标志帧的开始,告诉 PHY 一次新的传输即将开始。
  3. OP(操作码,Operation Code)

    • 用于区分本次传输是 读取(READ,10 还是 写入(WRITE,01
  4. PHYAD(PHY 地址,5 位)

    • 该字段用于指定要访问的 PHY 设备地址,支持最多 32 个不同的 PHY(0~31)。
  5. REGAD(寄存器地址,5 位)

    • 指定 PHY 内部的寄存器地址,最多支持 32 个寄存器。
  6. TA(转接字段,Turnaround)

    • 数据方向切换字段,用于协调主机(MAC)和从机(PHY)之间的数据传输:
      • 写操作时,由主机(MAC)驱动,总是 10
      • 读操作时,由从机(PHY)驱动,值是 Z0(其中 Z 表示高阻态,PHY 释放总线)。
  7. DATA(数据字段,16 位)

    • 主要用于存储数据:
      • 写操作:主机发送的数据,写入 PHY 指定寄存器。
      • 读操作:从 PHY 读取的数据。
  8. IDLE(空闲字段)

    • 当总线空闲时,MDIO 线进入 高阻态(Z),表示当前无数据传输。

        MDIO 接口的读写操作流程如下:读取操作(READ,操作码 10 由主机发送帧的前半部分(包括 PHY 地址和寄存器地址),然后 PHY 在 TA 阶段接管总线并返回 16 位数据,主机读取数据完成操作。写入操作(WRITE,操作码 01 由主机发送完整帧(包括 PHY 地址、寄存器地址和 16 位数据),PHY 在接收到数据后将其写入指定寄存器。

MII 的具体使用流程

MII 主要用于 数据发送数据接收 两个过程,每个过程都由多个信号线协同工作。

1. MII 发送流程(MAC → PHY)

当 MAC 层有数据需要通过 PHY 发送出去时,它会按照以下流程操作:

  1. MAC 准备数据

    • MAC 层按照以太网帧格式组织数据,并将其拆分为 4 位宽度(TXD[3:0])的数据块(10/100Mbps 以太网使用 MII,千兆以太网使用 GMII/SGMII)。
  2. 发送数据和控制信号

    • MAC 层通过 MII 接口的 TXD[3:0] 数据总线逐个发送数据块。
    • TX_EN(Transmit Enable):当有有效数据时,MAC 层拉高该信号,指示 PHY 接收数据。
    • TX_ER(Transmit Error):用于标记传输错误。
    • TX_CLK(Transmit Clock):PHY 生成的时钟信号,MAC 层在时钟的上升沿发送数据。
  3. PHY 编码数据并发送

    • PHY 层接收 TXD[3:0] 传输的数据,并将其转换为物理层的信号(如 MLT-3 编码、NRZ 编码)。
    • 最终 PHY 将数据发送到 MDI 端口(Medium Dependent Interface),再传输到物理网络介质(如双绞线)。

2. MII 接收流程(PHY → MAC)

当 PHY 接收到来自网络的以太网数据时,它会按照以下流程传递给 MAC 层:

  1. PHY 解析物理信号

    • PHY 层从 MDI 接口接收模拟信号,并解码成数字信号(例如 Manchester 编码 → 二进制数据)。
  2. 发送数据到 MAC

    • PHY 层通过 RXD[3:0] 数据总线逐步将数据发送给 MAC 层。
    • RX_DV(Receive Data Valid):当 PHY 发送有效数据时,拉高此信号。
    • RX_ER(Receive Error):如果 PHY 检测到错误(如 CRC 校验失败),则拉高该信号。
    • RX_CLK(Receive Clock):PHY 生成的接收时钟信号,MAC 在时钟的上升沿采样数据。
  3. MAC 处理数据

    • MAC 层从 RXD[3:0] 获取数据,并将其重新拼接成完整的以太网帧进行处理。

    TXD[3:0]MII(Media Independent Interface) 中的 发送数据总线,用于在 MAC 层和 PHY 层之间传输数据。

 同时我们也注意到MAC与Processor通过DMA进行信息传递。那么

        什么是 DMA?

DMA(Direct Memory Access,直接内存访问) 是一种计算机系统中的数据传输机制,允许 外设(如网卡、硬盘、显卡等)直接与内存交换数据,而不需要 CPU 进行数据搬运。这大大提高了数据传输效率,减少了 CPU 的负担,使其可以专注于计算任务。

DMA 的工作原理

通常,数据传输可以分为以下几种方式:

  1. 程序控制方式(CPU 控制)

    • CPU 负责从内存读取数据,然后再写入外设,或者从外设读取数据再写入内存。
    • 缺点:CPU 需要全程参与数据搬运,占用大量计算资源,影响系统性能。
  2. 中断驱动方式

    • 设备通过中断请求 CPU 进行数据传输,CPU 响应后执行数据搬运操作。
    • 缺点:虽然减少了一些 CPU 轮询的开销,但 CPU 仍然需要执行数据搬运,影响效率。
  3. DMA(直接内存访问)方式最优方式

    • DMA 控制器(DMAC)接管数据传输,允许数据 直接内存和外设(如 MAC 网卡) 之间传输,而不经过 CPU。
    • CPU 仅需要发起 DMA 传输请求,剩下的传输过程由 DMA 控制器完成
    • 优点
      • 释放 CPU 资源,让 CPU 可以处理其他任务。
      • 提高数据传输效率,尤其是大块数据传输时效果明显。

        

        

        

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/68642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端进阶:深度剖析预解析机制

一、预解析是什么? 在前端开发中,我们常常会遇到一些看似不符合常规逻辑的代码执行现象,比如为什么在变量声明之前访问它,得到的结果是undefined,而不是报错?为什么函数在声明之前就可以被调用&#xff1f…

基于聚类与相关性分析对马来西亚房价数据进行分析

碎碎念:由于最近太忙了,更新的比较慢,提前祝大家新春快乐,万事如意!本数据集的下载地址,读者可以自行下载。 1.项目背景 本项目旨在对马来西亚房地产市场进行初步的数据分析,探索各州的房产市…

范冰冰担任第75届柏林电影节主竞赛单元评委 共鉴电影佳作

近日,备受瞩目的柏林电影节迎来了新一届盛事,而华人演员范冰冰将以主竞赛单元评委身份亮相,引发了广泛关注。此前她已担任过戛纳国际电影节、东京国际电影节、圣塞巴斯蒂安国际电影节等众多电影节主竞赛单元评委。作为国际影坛的知名人物&…

Ollama 运行从 ModelScope 下载的 GGUF 格式的模型

本文系统环境 Windows 10 Ollama 0.5.7 Ollama 是什么? Ollama 可以让你快速集成和部署本地 AI 模型。它支持各种不同的 AI 模型,并允许用户通过简单的 API 进行调用 Ollama 的安装 Ollama 官网 有其下载及安装方法,非常简便 但如果希…

“腾讯、钉钉、飞书” 会议开源平替,免费功能强大

在数字化时代,远程办公和线上协作越来越火。然而,市面上的视频会议工具要么贵得离谱,要么功能受限,甚至还有些在数据安全和隐私保护上让人不放心。 今天开源君给大家安利一个超棒的开源项目 - Jitsi Meet,这可是我在网…

【教学类-89-01】20250127新年篇01—— 蛇年红包(WORD模版)

祈愿在2025蛇年里, 伟大的祖国风调雨顺、国泰民安、每个人齐心协力,共同经历这百年未有之大变局时代(国际政治、AI技术……) 祝福亲友同事孩子们平安健康(安全、安全、安全)、巳巳如意! 背景需…

2025年1月30日(任意截面、自定义截面梁的设置)

Ansys 在ANSYS中,以下是这些术语的详细解释: Nodal Solution (节点解): Nodal Solution指的是在有限元分析中计算出的节点处的物理量解。通常包括节点的位移、反应力等信息。节点解是分析结果的基础,因为它们可以用来计算其他重要的物理量&a…

unity使用内置videoplayer打包到安卓手机进行视频播放

1.新建UI,新建RawImage在画布当作视频播放的显示载体 2.新建VideoPlayer 3.新建Render Texture作为连接播放器视频显示和幕布的渲染纹理 将Render Texture同时挂载在VideoPlayer播放器和RawImage上。这样就可以将显示的视频内容在RawImage上显示出来了。 问题在于&a…

【Envi遥感图像处理】008:波段(批量)分离与波段合成

文章目录 一、波段分离提取1. 提取单个波段2. 批量提取单个波段二、波段合成相关阅读:【ArcGIS微课1000例】0058:波段合成(CompositeBands)工具的使用 一、波段分离提取 1. 提取单个波段

MongoDB平替数据库对比

背景 项目一直是与实时在线监测相关,特点数据量大,读写操作大,所以选用的是MongoDB。但按趋势来讲,需要有一款国产数据库可替代,实现信创要求。选型对比如下 1. IoTDB 这款是由清华大学主导的开源时序数据库&#x…

C语言------数组从入门到精通

1.一维数组 目标:通过思维导图了解学习一维数组的核心知识点: 1.1定义 使用 类型名 数组名[数组长度]; 定义数组。 // 示例: int arr[5]; 1.2一维数组初始化 数组的初始化可以分为静态初始化和动态初始化两种方式。 它们的主要区别在于初始化的时机和内存分配的方…

物联网智能项目之——智能家居项目的实现!

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于物联网智能项目之——智能家居项目…

Nxopen 直齿轮参数化设计

NXUG1953 Visualstudio 2019 参考论文&#xff1a; A Method for Determining the AGMA Tooth Form Factor from Equations for the Generated Tooth Root Fillet //FullGear// Mandatory UF Includes #include <uf.h> #include <uf_object_types.h>// Internal I…

蓝桥杯模拟算法:蛇形方阵

P5731 【深基5.习6】蛇形方阵 - 洛谷 | 计算机科学教育新生态 我们只要定义两个方向向量数组&#xff0c;这种问题就可以迎刃而解了 比如我们是4的话&#xff0c;我们从左向右开始存&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4 到5的时候y就大于4了就是越界了&…

VLLM性能调优

1. 抢占 显存不够的时候&#xff0c;某些request会被抢占。其KV cache被清除&#xff0c;腾退给其他request&#xff0c;下次调度到它&#xff0c;重新计算KV cache。 报这条消息&#xff0c;说明已被抢占&#xff1a; WARNING 05-09 00:49:33 scheduler.py:1057 Sequence gr…

HTML特殊符号的使用示例

目录 一、基本特殊符号的使用 1、空格符号&#xff1a; 2、小于号 和 大于号&#xff1a; 3、引号&#xff1a; 二、版权、注册商标符号的使用 1、版权符号&#xff1a;© 2、注册商标符号&#xff1a; 三、数学符号的使用 四、箭头符号的使用 五、货币符号的使用…

three.js用粒子使用canvas生成的中文字符位图材质

three.js用粒子使用canvas生成中文字符材质 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Three.…

STM32 PWM驱动直流电机

接线图&#xff1a; 代码配置&#xff1a; 根据驱动舵机的代码来写&#xff0c;与舵机不同的是&#xff0c;这次的引脚接到了PA2上&#xff0c;所以需要改一下引脚以及改为OC3通道。 另外还需在配置两个GPIO引脚&#xff0c;来控制电机的旋转方向&#xff0c;这里连接到了PA4与…

【外文原版书阅读】《机器学习前置知识》2.用看电影推荐的例子带你深入了解向量点积在机器学习的作用

目录 3.3 Where Are You Looking, Vector? The Dot Product 个人主页&#xff1a;Icomi 大家好&#xff0c;我是Icomi&#xff0c;本专栏是我阅读外文原版书《Before Machine Learning》对于文章中我认为能够增进线性代数与机器学习之间的理解的内容的一个输出&#xff0c;希望…

Conditional DETR for Fast Training Convergence论文学习

1. 写作背景 最近提出的 DETR 成功地将 transformer 引入到物体检测任务中&#xff0c;获得了很不错的性能。DETR 的重要意义在于去除了物体检测算法里需要人工设计的部分&#xff0c;比如 anchor 的生成和 NMS 操作。这大大简化了物体检测的设计流程。基本的结构还是沿用了以…