PYH与MAC的桥梁MII/MIIM

news/2025/1/31 9:35:07 标签: 车载系统, 车载互联网, 物理层

        在学习车载互联网时,看到了一句话,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.niftyadmin.cn/n/5838560.html

相关文章

如何解除TikTok地区限制:实用方法解析

随着社交媒体的不断发展,TikTok作为一款短视频平台,已经在全球范围内吸引了数以亿计的用户。然而,不同地区对TikTok的使用权限存在一定的限制,这使得一些用户无法享受平台提供的完整内容和功能。 一、了解TikTok地区限制的原因 在…

智能家居监控系统数据收集积压优化

亮点:RocketMQ 消息大量积压问题的解决 假设我们正在开发一个智能家居监控系统。该系统从数百万个智能设备(如温度传感器、安全摄像头、烟雾探测器等)收集数据,并通过 RocketMQ 将这些数据传输到后端进行处理和分析。 在某些情况下…

计算机网络之链路层

本文章目录结构出自于《王道计算机考研 计算机网络_哔哩哔哩_bilibili》 02 数据链路层 在网上看到其他人做了详细的笔记,就不再多余写了,直接参考着学习吧。 1 详解数据链路层-数据链路层的功能【王道计算机网络笔记】_wx63088f6683f8f的技术博客_51C…

MATLAB的数据类型和各类数据类型转化示例

一、MATLAB的数据类型 在MATLAB中 ,数据类型是非常重要的概念,因为它们决定了如何存储和操作数据。MATLAB支持数值型、字符型、字符串型、逻辑型、结构体、单元数组、数组和矩阵等多种数据类型。MATLAB 是一种动态类型语言,这意味着变量的数…

剑指 Offer II 009. 乘积小于 K 的子数组

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20009.%20%E4%B9%98%E7%A7%AF%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84/README.md 剑指 Offer II 009. 乘积小于 K 的子数组 题目描述 给…

Git进阶之旅:.gitignore 文件

介绍: 在项目中,我们可能一起提交多个文件 git add -A:提交所有变化git add -u:提交被修改(modified) 和被删除文件(deleted) 文件,不包括新文件(new) git add .:提交新文件(new) 和被修改文件(modif…

【2】阿里面试题整理

[1]. 说一下Java与C的区别。 Java和C是两种在软件开发领域应用非常广泛的语言,但它们的设计理念和应用场景有所不同。 Java是一种基于JVM的解释型语言,具有跨平台性,使用自动垃圾回收机制,这使得开发者可以更专注于业务逻辑&…

【计算机网络】设备更换地区后无法访问云服务器问题

文章目录 1. **服务器的公网 IP 是否变了**2. **服务器的防火墙或安全组设置**3. **本地运营商或 NAT 限制**4. **ISP 限制或端口封锁**5. **服务器监听地址检查** 1. 服务器的公网 IP 是否变了 在服务器上运行以下命令,检查当前的公网 IP:curl ifconfi…