以太网接口硬件知识

本文介绍了以太网接口的几种常见类型,包括GMII接口的22根线信号结构,RGMII接口的精简设计,SS_SMII接口的源同步时钟特性,SMII接口的公共时钟模型以及RMII接口的50MHz时钟和数据线要求。设计原则涉及时钟数据等长、信号完整性和阻抗匹配。

以太网口是我们日常工程中常用的通信接口,以太网接口有很多种,本文将对常用以太网接口进行科普介绍。

1、GMII接口

1.1 GMII接口概述

GMII接口属于源同步时钟类型(时钟与数据都是由同一芯片驱动),时钟速率125MHz,接口连接关系如图1所示,22根线,其中TX_EN, TX_ER, TXD<7:0>这些信号同步于TX_CLK;RX_DV, RX_ER,

图片

图1 GMII接口原理框图

RXD<7:0>这些信号同步于RX_CLK。其它的两个信号CRS, COL只用于半双工模式,一般设计中不会用到,而且这两个信号与时钟是异步的,对这两个信号不做要求。各信号说明见表1。

表1 UTOPIA LEVEL 2接口信号说明

信号名称

信号说明

TX_CLK

发送方向时钟信号

TX_EN

发送方向使能信号

TX_ER

发送方向错误指示信号

TXD<7:0>

发送方向数据信号

RX_CLK

接收方向时钟信号

RX_DV

接收方向使能信号

RX_ER

接收方向错误指示信号

RXD<7:0>

接收方向数据信号

COL

碰撞指示信号

CRS

载荷检测信号

1.2 设计原则

1、要求同方向的时钟数据严格等长,即TX_EN, TX_ER, TXD<7:0>这些控制/数据信号与TX_CLK等长;RX_DV, RX_ER, RXD<7:0>这些控制/数据信号与RX_CLK等长。一般设计中,要求控制/数据信号与时钟信号的长度差不大于1cm(约0.1ns)。

2、要求信号的发送端(包括时钟/数据/控制信号)串接33欧姆电阻以减小反射,提高信号完整性。

3、信号走线中要注意保持阻抗的连续性,尽量减少过孔数量(一般过孔数量在3个以内)

4、因信号线较多,在布局允许情况下,PHY与MAC尽量靠近,减小高速信号受的串扰。

2、RGMII接口概述

2.1 RGMII接口概述

RGMII属于源同步时钟类型,最初是由HP制定的一个GMII精简版专利标准,得到各大主流厂家的认可,成为一个普遍应用的关于xMII系列接口的标准。RGMII经历了1.0\1.1\1.2\1.2a\1.3\2.0几个版本。从2.0版本开始支持HSTL,之前的版本支持2.5V CMOS。

TXC/RXC时钟频率支持125MHz,25MHz,2.5MHz,可以适配1000M,100M,10M速率。在时钟的上升沿和下降沿均进行数据采样,相比GMII接口,数据信号线收发方向各减半变为4根,信号线总共有12根。如图2和表2说明。

图片

图2 RGMII接口原理框图

表2 RGMII接口信号说明

信号

方向

说明

TXC

MAC-->PHY

发送时钟信号

TX[3:0]

MAC-->PHY

发送数据信号

TX_CTL

MAC-->PHY

发送控制信号

RXC

MAC<--PHY

接收时钟信号

RX[3:0]

MAC<--PHY

接收数据信号

RX_CTL

MAC<--PHY

接收控制信号

2.2 设计原则

1、要求同方向的时钟数据严格等长,即TX_CTL,TXD<3:0>这些控制/数据信号与TXC等长;RX_CTL,RXD<3:0>这些控制/数据信号与RXC等长。一般设计中,要求控制/数据信号与时钟信号的长度差不大于0.5cm(约0.05ns)。

2、要求信号的发送端(包括时钟/数据/控制信号)串接33欧姆电阻以减小反射,提高信号完整性。

3、信号走线中要注意保持阻抗的连续性,尽量减少过孔数量(一般过孔数量在3个以内)。

4、因信号线较多,在布局允许情况下,PHY与MAC尽量靠近,减小高速信号受的串扰,线长最好小于4000mil。

3、SS_SMII接口

3.1 SS_SMII 接口概述

SS_SMII(又叫S3MII)接口属于源同步时钟类型,接口原理框图如图3所示,时钟速率125M Hz;信号与时钟间的关系等同于GMII。

图片

图3 S3MII接口原理框图

3.2 SS_SMII接口设计原则

1、要求TX_SYNC, TXD信号与TX_CLK等长;RX_SYNC, RXD信号与RX_CLK等长。一般设计中,要求控制/数据信号与时钟信号的长度差不大于1cm(约0.1ns)。

2、要求信号的发送端(包括时钟/数据/控制信号)串接33欧姆电阻以减小反射,提高信号完整性。

3、信号走线中要注意保持阻抗的连续性,尽量减少过孔数量(一般过孔数量在3个以内)。

4、在时间允许的情况下,尽量对接口进行仿真。

4、SMII接口

4.1 SMII接口概述

SMII接口公共时钟模型(两端芯片的时钟来自共同的时钟BUFFER),时钟速率125M Hz,接口原理框图如图4所示;并不要求数据线与时钟等长。

4.2 SMII接口设计原则

  1. 设计时可以先考虑使REFCLK1, REFCLK2等长。

图片

图4 SMII接口原理框图

2、要求SYNC,TXD,RXD这几个信号走线尽量短;(从芯片资料理论上看出这些线

的最大长度为1.5ns,21cm;但由于芯片差异性较大,因此实际布线中尽量走短)。

  1. 要求信号的发送端(包括时钟/数据/控制信号)串接33欧姆电阻以减小反射,提高信号完整性;

  2. 信号走线中要注意保持阻抗的连续性,尽量减少过孔数量(一般过孔数量在3个以内)。

5、RMII接口

5.1 RMII接口概述

RMII接口属于公共时钟传输模型,时钟速率50M Hz;并不要求数据线与时钟等长。图5所示为RMII接口的原理框图。

图片

图5 RMII接口原理框图

5.2 RMII接口设计原则

  1. 设计时可以先考虑使REFCLK1, REFCLK2等长。

  2. 要求其它的数据/控制信号走线尽量短;(RMII规范规定信号的驱动能力在包含负载输入电容情况下不小于12inch,也就是30cm;但由于芯片差异,实际布线情况下尽量短)。

  3. 要求信号的发送端(包括时钟/数据/控制信号)串接33欧姆电阻以减小反射,提高信号完整性。

6、MII接口

MII接口属于公共时钟传输模型,时钟频率25M(100M以太网)或2.5M(10M以太网)。两个时钟都是由Phy发送给MAC的。接口框图如图6所示。另外,该接口的其它两个信号CRS、COL是异步信号,无特殊要求,故不在此图中画出。

对于MII信号,由于信号速率较低,因此在布线上无特殊要求,只要求Phy与MAC离的不要太远就可以了。

图片

图6 MII接口原理框图

### 以太网网口驱动开发教程及解决方案 在进行以太网网口驱动开发时,通常需要关注以下几个方面:硬件接口配置、PHY芯片初始化、MAC控制器设置以及DMA控制器操作。以下是一些技术资料和解决方案的总结: #### 硬件接口配置 以太网口的硬件接口主要包括MII(Media Independent Interface)和RMII(Reduced Media Independent Interface)。选择合适的接口类型取决于具体的硬件设计。例如,使用RMII接口时,通常需要一个50 MHz的时钟信号来驱动PHY芯片[^5]。 #### PHY芯片初始化 PHY芯片的初始化是驱动开发的重要步骤之一。通过SMI(Serial Management Interface)接口对PHY寄存器进行配置,可以实现自适应速度、双工模式等功能。如果遇到`phy setup error`问题,可以参考米联官方提供的库修改教程,确保Realtek等芯片的正确识别和配置[^4]。 #### MAC控制器设置 MAC控制器负责处理以太网帧的发送和接收。其主要功能包括帧格式解析、中断管理、过滤功能以及回送模式等。在开发过程中,可以通过配置SYSCFG_PMC寄存器来调整MAC的工作状态[^5]。 #### DMA控制器操作 DMA(Direct Memory Access)控制器用于高效地传输数据。在以太网驱动中,DMA控制器负责管理发送和接收路径上的所有事务。具体操作包括设置控制和状态寄存器(CSR)、描述符列表以及数据缓冲区[^5]。 #### 开发工具与资源 - **书籍推荐**:《FPGA与SOPC设计教程DE2实践》和《NIOSII 嵌入式软核SOPC设计原理和应用》提供了关于FPGA网口开发的详细指导[^3]。 - **开发板支持**:对于ESP32 C3开发板,可以参考相关SPI以太网口芯片(如DM9051ANX)的接线方法和通讯开发指导[^2]。 - **LWIP移植**:在嵌入式系统中,LWIP协议栈的移植是一个常见的需求。需要注意的是,不同版本的LWIP可能对特定PHY芯片的支持有所不同,因此需要根据实际情况调整代码[^4]。 #### 示例代码:以太网驱动初始化 以下是一个简单的以太网驱动初始化示例,展示了如何配置MAC和DMA控制器: ```c #include "ethernetif.h" void ethernet_init(void) { // 配置RMII接口时钟 ETH->MACCR |= ETH_MACCR_DM | ETH_MACCR_TE | ETH_MACCR_RE; // 初始化DMA控制器 ETH->DMABMR = ETH_DMABMR_ABT | ETH_DMABMR_RTP_2_2 | ETH_DMABMR_FB; ETH->DMATPDR = (uint32_t)&TxDescriptor[0]; ETH->DMARPDR = (uint32_t)&RxDescriptor[0]; // 启动接收和发送 ETH->DMAIER |= ETH_DMAIER_NISE | ETH_DMAIER_RIE | ETH_DMAIER_TIE; NVIC_EnableIRQ(ETH_IRQn); } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值