工程中数据量越来越大,千兆以太网已不能满足需求,所以开发万兆网口需提上日程。基于FPGA的万兆网口代码=SFP(光模块) + PCS + PMA + MAC + UDP协议栈。xilinx提供了PCS+PMA,(MAC层也有IP核,但需要购买license)。本文只介绍MAC相关知识点。
一、MAC层帧格式
(1)Preamble
前导码,7字节的0x55。
(2)Start of Frame Delimiter(SFD)
帧分界符,1字节的0xD5
(3)Destination/Source Address
MAC源/目的地址,6字节。
(4)Length/Type
如果Length/Type=0x8100/0x88A8表示该帧是VLAN;Length/Type=0x8808表示该帧是流控帧(PAUSE,MAC层控制帧)。
(5)Pad
pad field长度是0~46B,作用是确保帧长度最少为64B(不包含Preamble和SFD)
(6)FCS
帧校验码。对destination address,source address,length/type,data,pad,进行CRC32校验。
二、Interframe Gap(帧间隔)
在进行连续帧发送时,发送完一帧数据后,需要等待一段时间,才能发送下一帧数据,其中等待一段时间称为帧间隔。
两帧之间的最小时间间隔,最小值为9.6ns对10Gb/s。
DA-Destination address;SA-Source address;L/T-Length/type