在FPGA有关的以太网设计中,FPGA实现的代码工 能工作在mac层。因此,设计FPGA网口代码时常需要对网络包进行打包和解包,这就需要相关网络协议包格式的知识。
常用的以太网MAC帧格式有两种标准 :DIX Ethernet II标准,IEEE 的 802.3 标准。
Ethernet II和IEEE802.3的帧格式比较类似,主要的不同点在于前者定义的2字节为包类型,而后者定义的2字节为的长度;所幸的是,后者定义的有效长度值与前者定义的有效类型值无一相同,这样就容易区分两种帧格式了。如果值大于 1500(0x05DC),说明是以太网类型字段,EthernetII 帧格式。如果值小于等于1500,说明是长度字段,IEEE802.3 帧格式。因此类型字段值最小的是 0x0600。而长度最大为 1500。
MAC层要求定界字符之后的内容要在64字节到1518个字节之间,其中包括14字节的目标和源MAC,4字节的CRC32值。并且报文帧之间的传递间隔要大于9.6us。
最常用的 MAC 帧是以太网V2的格式:
IEEE 的 802.3 标准
![](https://i-blog.csdnimg.cn/blog_migrate/8f1ab194dfd65b5a0e7e7a394b46b015.png)
类型字段
(
2
个字节):
用来标志上一层使用的是什么协议,以便把收到的
MAC
帧的数据上交给上一层的这个协议;数据字段 (
46-1500
):
正式名称是
MAC
客户数据字段最小长度
64
字节
-18
字节的首部和尾部
=
数据字段的最小长度;
FCS
字段 (
4
字节):当数据字段的长度小于
46
字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的
MAC
帧长不小于
64
字节;在帧的前面插入的
8
字节中的第一个字段共
7
个字节,是前同步码,用来迅速实现
MAC
帧的比特同步。第二个字段是帧开始定界符,表示后面的信息就是
MAC
帧。
参考:
UDP协议 收发数据的FPGA实现 verilog
https://www.cnblogs.com/alifpga/p/7679851.html
FPGA极客空间《internet上的网络层》