FPGA实现UDP协议栈基本框图
FPGA侧主要实现MAC层之上的协议
PHY芯片:PHY芯片主要用来实现物理层,PHY芯片主要包括两部分PCS/PMA。
PCS(Physical Coding Sublayer,物理编码子层):主要进行线路编码和CRC校验。
(线路编码:4B/5B编码、8B/10B编码)
PMA(Physical Medium Attachment,物理媒介适配层):PMA子层的主要作用为串行化和解串。PMA子层集成了Serdes,发送和缓冲器,时钟发生器和时钟恢复电路。
PMD(Physical Media Dependent,物理介质相关子层),一般用光模块代替实现光电/电光转换。
网口:网口又分为电口和光口,电口标准包括1000Mbps/100Mbps/10Mbps,光口主要包括1G/2.5G/10G/40G/100G.(FPGA中GT收发器包含有PCS/PMA层)
MAC与PHY芯片之间的接口
MII:100Mbps,4根数据线,时钟为25MHz
RMII:100Mbps,2根数据线,时钟为50M
GMII:1000Mbps,8根数据线,时钟为125M
RGMII:1000Mbps,4根数据线,上下沿同时传输,时钟为125M
SGMII:光纤接口,走FPGA的GT引脚进行如,PHY集成在了FPGA内部
标准以太网帧格式
前导码( Preamble) : MAC物理层使用7个字节同步码( 0和1交替( 55-55-55-55-55-55-55))实现数据的同步。
帧起始界定符( SFD, Start Frame Delimiter):使用1个字节的SFD(固定值为0xd5)来表示一帧的开始,后面紧跟着传输的就是以太网的帧头。
目的MAC地址: 即接收端物理MAC地址,占用6个字节。 MAC地址从应用上可分为单播地址、组播地址和广播地址。单播地址:第一个字节的最低位为0,比如00-00-00-11-11-11,一般用于标志唯一的设备;组播地址:第一个字节的最低位为1,比如01-00-00-11-11-11,一般用于标志同属一组的多个设备;广播地址:所有48bit全为1,即FF-FF-FF-FF-FF-FF,它用于标志同一网段中的所有设备。 源MAC地址:即发送端物理MAC地址,占用6个字节。
长度/类型: 上图中的长度/类型具有两个意义,当这两个字节的值小于1536(十六进制 为0x0600)时,代表该以太网中数据段的长度;如果这两个字节的值大于1536,则表示该以太网中的数据属于哪个上层协议,例如0x0800代表IP协议( 网际协议) 、 0x0806代表ARP协议(地址解析协议)等。
数据:以太网中的数据段长度最小46个字节, 最大1500个字节。最大值1500称为以太网的最大传输单元( MTU, Maximum Transmission Unit),之所以限制最大传输单元是因为在多个计算机的数据帧排队等待传输时,如果某个数据帧太大的话,那么其它数据帧等待的时间就会加长,导致体验变差,这就像一个十字路口的红绿灯,你可以让绿灯持续亮一小时,但是等红灯的人一定不愿意的。另外还要考虑网络I/O控制器缓存区资源以及网络最大的承载能力等因素, 因此最大传输单元是由各种综合因素决定的。为了避免增加额外的配置, 通常以太网的有效数据字段小于1500个字节。
帧检验序列( FCS, Frame Check Sequence) : 为了确保数据的正确传输, 在数据的尾部 加入了4个字节的循环冗余校验码( CRC校验) 来检测数据是否传输错误。 CRC数据校验从以太 网帧头开始即不包含前导码和帧起始界定符。 通用的CRC标准有CRC-8、 CRC-16、 CRC-32、 CRCCCIT,其中在网络通信系统中应用最广泛的是CRC-32标准。
帧间隙( IFG,Interpacket Gap) :就是以太网相邻两帧之间的时间间隔,帧间隙的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备的时间, IFG的最小值是96 bit time,即在媒介中发送96位原始数据所需要的时间,在不同媒介中IFG的最小值是不一样的。
以太网标准的名称定义
参考这位大佬的文章,讲的非常详细。
详解各类以太网标准10BASE-T/100BASE-T4/100BASE-FX/1000BASE-X等_100base-t1和传统的以太网-CSDN博客
这里只引用一下这位大佬文章中的名称定义
10BASE-T、100BASE-T4、100BASE-FX、1000BASE-X 各个字段代表的意思:
- 10/100/1000:表示网线设计的频率,单位MHz。值越大,网线所支持的速度就越快。100 MHz表示以每秒100Mbit的速度传输,这在理论上指的就是12.5 MB/s。当然,实际应用中考虑到冗余设计和干扰等因素,真实值可能会小很多。
- BASE:BASE是英文BASEband的缩写,指的就是基带。表示没有使用频分复用或者其它频率转换技术,每一个信号在一个单一频率上完全控制线缆。
- 数字/T/F/C等:最后一个如果是数字,则表示单段网线的最大长度(基准单位是100m);如果是字母,则依次解释如下:T代表承载信号的物理介质是双绞线缆(Twisted Pair Cable,又分为UTP(Unshielded Twisted Pair,非屏蔽双绞线)和STP(Shielded Twicted Pair,屏蔽双绞线)两种),在这里每一对传送信号的双绞线互相缠绕以减少电磁干扰和串扰;F表示光纤;
- 最后的字母或数字(4/X等): 在同一种传送速率下有多种不同的标准,它们之间以一个字母或数字跟随T/F/C之后的方式来区隔(例如TX)。它显示了网线的结构并指出包含的绞线对的数量。某些高速标准使用同轴电缆,则分配代号为CX。