GMAC简介
网卡
用于报文控制,一般有mac和phy组成。
mac: 一般用于数据的过滤
phy: 操作数据实际的收发
mac
分类:
mac按最大传输速率可以分为emac,gmac
组成:
帧发送(Frame Transmission)
接收上层协议传来的数据,加头尾(控制信息),组成以太网帧,以位数据流形式传到物理层。
帧接收(Frame Reception)
接收物理层位数据流,检查是否有效(目的IP,校验码,字节对齐),发送给上层协议,或丢弃。
GMAC控制(GMAC Control)
用于全双工模式下控制帧的生成、检测,它处在主机和发送、接收模块之间,对普通的数据帧来说是透明的。
媒体独立接口管理(GMII)
控制物理层的输入输出操作,检查物理层的状态信息。(控制PHY)
phy
phy有两个重要的概念:
addr: 取值0-31,由板卡电路图决定
id: 由硬件厂商决定,同一类型的phy,id是一样的。一般通过读id来判断操作phy是否成功。
mac工作模式:全双工与半双工
半双工:
半双工模式:GMAC client将数据传给GMAC后,GMAC先给数据加上Preamble、FSD、FCS,组成以太网帧;
然后检查载波侦听信号(CRS);
若有载波信号,表示有数据正在 本地网段上传播,就等待直到载波信号消失;
载波信号消失后,GMAC还要等待一个帧间延时(interFrame Spacing);
若在帧间延时期间,一直没有载波信号,该以太网帧就可以开始向物理层传输。
全双工:
全双工模式:GMAC从GMAC Client接收到数据后,不需要载波侦听和冲突检测,
直接向物理层传送,其它操作与半双工相同。
mac外部引脚:
以太网MAC芯片的一端接计算机PCI总线,另外一端就接到PHY芯片上,它们之间是通过MII接口通信的。
MII接口:
包括数据接口,管理接口。
数据接口:16线;
管理接口:2线(MDC:管理时钟,MDIO:管理数据)。
支持10兆和100兆的总线接口速度,时钟都由PHY或FPGA提供。
16个数据线如下:(7+7+2 = 14)
TX:使能,错误,时钟,数据*4。
RX:使能,错误,时钟,数据*4。
CRS载波检测,COL冲突检测。
GMII接口--(数据线: 11 * 2 + 2 == 24线)
GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps(每个数据收发口每秒有125M个周期的电平变换,收发各8个口)。同时兼容MII所规定的10/100 Mbps工作方式。
发送:
GTXCLK/TXCLK:
千兆模式下,MAC提供这个时钟(与MII区别),其他信号和这个信号同步
百兆模式下,PHY提供这个时钟,其他信号和这个同步)
TXEN——发送器使能信号
TXER——发送器错误(用于破坏一个数据包)
TXD[7..0]——被发送数据
接收:
RXCLK——接收时钟信号(从收到的数据中提取,因此与GTXCLK无关联)
RXDV——接收数据有效指示
RXER——接收数据出错指示
RXD[7..0]——接收数据
管理配置:(用于配置PHY)
MDC——配置接口时钟
MDIO——配置接口I/O
RGMII接口 (24 - 10 = 14)
由GMII的24线简化为14线,TX/RX数据宽度从8为变为4位。
为了保持1000Mbps的传输速率不变,RGMII接口在时钟的上升沿和下降沿都采样数据,时钟频率仍旧为125MHz。
(100M和10M时参考时钟为25Mhz和2.5MHz)
在参考时钟的上升沿发送GMII接口中的TXD[3:0]/RXD[3:0];
在参考时钟的下降沿发送GMII接口中的TXD[7:4]/RXD[7:4]。
使能和error合到一根线上:
TX_EN信号线上传送TX_EN和TX_ER两种信息,在TX_CLK的上升沿发送TX_EN,下降沿发送TX_ER;RX同理。
GMAC控制PHY的方式:
以T3为例,通过以上两个寄存器读写phy芯片的寄存器,控制phy