![](https://csdnimg.cn/release/download_crawler_static/86164106/bg6.jpg)
2)SFD(Start.of-Frame Delimiter):定界符,表示一个有效帧的开始,1字节的0xD5。当接收
站收到定界符时表示一帧数据的开始。
3)DA(Destination Address):目的地址,69节。DA字段用于识别需要接收帧的站点。目的
地址可以分为单播地址,多播地址和广播地址。单播地址是一个站点的特定的地址,当发送地址为
单播地址只有这个地址的站点才能接收。多播地址是一个组地址,当发送目的地址为多播地址时,
这一组站点才能接收。广播地址,当发送目的地址为广播地址时,这个广播域的地址都可以接收。
广播地址为特殊的组播地址,地址全为1。
4)SA(Source Address):源地址,69节。SA字段用于识别发送帧的站点。
5)Length/Type:长度/类型,29节。如果是采用可选格式组成帧结构时,该字段既表示包含
在帧数据字段中的MAC数据大小,也表示帧类型。
6)Data(Pad):数据和填充域,是一组n(46≤n≤1500)字节的任意值序列。由于CSMA/CD
算法的限制,以太网帧必须不小于64字节,如果小于该字节长度,则要进行数据填充以达到最小帧
长度。帧长度最长为1518字节。
7)FCS(Frame Check Sequence):帧校验,49节。该序列包括32位的循环冗余校验值,由发
送MAC方生成,在接收时用同样的算法进行校验,用来判断这帧数据是不是在发送过程中产生错
误。被校验的范围包括目的地址域,源地址域,长度/类型域,数据域和填充域。
2.2 功能模块分析
2.2.1 寄存器模块
eth_registers 是 MAC 层的寄存器模块。所有的寄存器都是 32 位宽度,但是具体用到的则由
寄存器实际所需宽度所决定,其余位填 0.每个寄存器都有两个参数:宽度和 Reset 值。Reset 值定
义寄存器清零后设置的默认值。寄存器模块共有 23 个寄存器。通过访问寄存器并对寄存器内容进
行读写操作便可完成一些状态监测和功能选择。
2.2.2 接收帧模块
接收帧模块 eth_rxethmac.v 的任务就是接收帧数据。外部的以太网 PHY 芯片将串行数据传送
至 MII 模块,最后成为一个个 nibble(MRxD[3:0])发送到接收模块里去,同时还有“数据有效”
的掩码位 MRxDV.然后发送模块就把这些 nibble 聚集成字节 byte 的形式,再和一些表示数据开始
和结束的信号一起发送到主机总线接口。接收模块还需要实现的功能包括有移除接收到的帧的前导
码、帧起始定界符,产生用于地址识别并发送到 HASH 表内,对所有接收到的包进行 CRC 校验。图
2-3 是该模块的整体结构框图。图中“计数匹配信号”表示当计数器达到一些特定值时,将相应特
征信号触发输出为 1。