emac接口与phy交互

news/2024/11/29 13:30:24/

nuc970的emac接口

nuc970的EMAC以太网接口与PHY芯片之间的数据交换是通过MII(Media Independent Interface)或RMII(Reduced Media Independent Interface)接口实现的。

在MII接口中,EMAC和PHY之间通过4对数据线(TXD0–TXD3和RXD0–RXD3)、两条时钟线(TX_CLK和RX_CLK)、一个数据同步线(TX_EN和RX_EN)以及一个管理线(MDC)进行数据传输。

在RMII接口中,EMAC和PHY之间只需要通过2对数据线(TXD0和RXD0)、两条时钟线(REF_CLK和TX_EN/RX_EN)以及一个管理线(MDIO)进行数据传输。具体的数据传输流程可以参考MII或RMII协议的规定。

RMII通信大致过程

在NUC这样的mpu上用得多的还是,RMII通信协议,而RMII(Reduced Media Independent Interface)是一种简化版的MII(Media Independent Interface)协议,用于连接MAC(Media Access Control)和PHY(Physical Layer)之间的通信。相比于MII,RMII只需要使用2对差分信号线(TXD0/RXD0和TXD1/RXD1)和2条时钟信号线(REF_CLK和TX_EN/RX_EN),可以减少芯片的引脚数量和板子的复杂度。RMII协议的通信过程如下:

  1. PHY通过MDIO(Management Data Input/Output)接口向MAC发送PHY的ID,以便MAC能够识别PHY的类型。

  2. MAC通过MDIO接口向PHY发送配置信息,例如速度、双工模式、自动协商等。

  3. 当MAC需要发送数据时,它将数据放入TXD0和TXD1差分信号线中,并在TX_EN信号线上发送一个高电平的脉冲,表示数据已经准备好发送。

  4. PHY接收到TX_EN信号后,会将数据从TXD0和TXD1差分信号线中读取出来,并将数据发送到物理介质上进行传输。

  5. 当PHY接收到数据时,它将数据放入RXD0和RXD1差分信号线中,并在RX_EN信号线上发送一个高电平的脉冲,表示数据已经准备好接收。

  6. MAC接收到RX_EN信号后,会将数据从RXD0和RXD1差分信号线中读取出来,并进行后续处理,例如检查CRC校验和、解析数据包等。

如上就是RMII协议的大致通信,当然了具体实现可能会因为芯片设计的不同而有所差异。

RMII与MII的对比

  1. 引脚数量:MII需要使用4对差分信号线(TXD0~TXD3和RXD0~RXD3)、2条时钟信号线(TX_CLK和RX_CLK)、一个数据同步线(TX_EN和RX_EN)以及一个管理线(MDC),总共需要14根信号线。而RMII只需要使用2对差分信号线(TXD0/RXD0和TXD1/RXD1)和2条时钟信号线(REF_CLK和TX_EN/RX_EN),总共需要6根信号线。

  2. 速率:MII的最大速率为100Mbps,而RMII的最大速率为100Mbps或10Mbps。

  3. 管理接口:MII使用MDC(Management Data Clock)和MDIO(Management Data Input/Output)两个信号线,用于MAC和PHY之间的管理通信。而RMII只使用MDIO信号线,且其通信速率为MII的一半。

  4. 帧同步:在MII中,TX_EN和RX_EN信号线用于帧同步,而在RMII中,REF_CLK信号线用于帧同步。

总的来说,RMII相对于MII来说,具有引脚数量少、速率较快、协议简单等优势,因此在一些资源受限的应用场景中,RMII被广泛应用。

【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~~
在这里插入图片描述


http://www.ppmy.cn/news/30337.html

相关文章

由点到面贯穿整个Java泛型理解

泛型概述 Java泛型(generics)是DK5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许我们在编译时检测到非法的类型数据结构。 泛型的本质就是参数化类型,也就是所操作的数据类型被指定为一个参数。 如我们经常使用的Array…

算法leetcode|39. 组合总和(rust重拳出击)

文章目录39. 组合总和:样例 1:样例 2:样例 3:提示:分析:题解:rustgoccpythonjava39. 组合总和: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找…

列表(list)、数组(numpy)、张量(tensor)、元组各自怎样查看形状

列表(list)、数组(numpy)、张量(tensor)、元组各自怎样查看形状 一、查看列表(list)的形状 1.shape import numpy as npL [[1,2],[3,4],[5,6],[7,8]] L np.array(L)print(L.sha…

Spring bean生命周期分为几个阶段?

bean 的生命周期从调用 beanFactory 的 getBean 开始,到这个 bean 被销毁,可以总结为以下七个阶段:处理名称,检查缓存→处理父子容器→处理 dependsOn→选择 scope 策略→创建 bean→类型转换处理→销毁 bean划分的阶段和名称并不…

SpringBoot笔记(一)入门使用

一、为什么用SpringBootSpringBoot优点创建独立Spring应用内嵌web服务器自动starter依赖,简化构建配置自动配置Spring以及第三方功能提供生产级别的监控、健康检查及外部化配置无代码生成、无需编写XMLSpringBoot缺点人称版本帝,迭代快,需要时…

【Docker】之docker-compose的介绍与命令的使用

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录docker-compose简介docker-compose基础…

毕业设计 基于STM32单片机无线ZIGBEE智能大棚土壤湿度光照检测

基于STM32单片机无线ZIGBEE智能大棚土壤湿度光照检测1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STM32F103C8T6核心系统电路设计2.2 光敏采集电路设计2.3 温度采集电路设计3、部分代码展示3.1 读取DS18B20温度值3.2 定时器初始化1、项目简介 选题指导&#xff0c…

nginx配置详解—官方原版

一、概述本指南对nginx进行了基本介绍,并描述了一些 可以用它完成的简单任务。 据推测,nginx已经安装在阅读器的机器上。 本指南描述了如何启动和停止nginx,并重新加载其 配置,解释结构 的配置文件,并描述了如何设置 n…