用FPGA实现MAC核所要完成的功能
MAC接收模块
MAC接收模块负责数据帧的接收。当外部PHY将通信信道的串行数据转换为半字节长的并行数据并发送给接收模块后,接收模块会将这些半字节数据 转换为字节数据,然后经过地址识别、CRC校验、长度判断等操作后,再通过主机接口写入外部存储器,并在主机接口模块的接收队列中记录帧的相关信息。此 外,接收模块还负责前序码和CRC的移除。
接收模块由CRC校验模块、地址识别模块、接收计数器模块和接收状态机模块等四部分组成。
接收模块中的CRC校验模块可通过检查输入帧的CRC值来验证帧的正确性。其算法与CRC生成模块相同。
地址识别模块用于决定是否接收收到的帧,接收模块首先接收输入帧而不管目的地址,随后由地址识别模块检查帧中的目的地址。若MAC被设置为混杂模式(Promiscuous mode)且目的地址为广播地址,同时允许接收广播帧,帧则被接收。否则,帧被丢弃。
接收计数器模块由字节计数器(Bytecnt)和帧间间隙计数器(IFGcnt)组成。字节计数器在接收帧过程中将对字节进行计数,以用于识别 帧中的各个字段(前序码、目的地址字段、数据、FCS等)以及判断超长帧。帧间间隙计数器则对两帧之间的间隔时间进行计数,以用于判断下一帧数据的开始。 IEEE 802.3规定,两帧之间的间隔至少必须为96个比特时间(10 Mbps中为9 600ns,100 Mbps中为960 ns)。如果两帧之间的间隔小于要求,帧将被丢弃。
接收状态机为接收模块的核心,用于控制整个接收过程。接收状态机由Idle_State、Drop_State、Preamble_State、 SFD_State、 Da-ta0_State、Data1_State等六个状态组成。
系统复位后,状态机处于Drop_State。如果此时MII的数据有效信号(MRxDV)无效,状态机马上进入Idle_State状态,并一直处于Idle等待接收输入帧。
当接收模块检测到数据有效信号之后,状态机将进入Preamble_State,并开始接收前序码。此后再状态机进入SFD_State,接收 一个字节的帧起始定界符,之后,根据IFGcnt计数器的值进入不同的状态。如果,IFGcnt所确定的时间大于96个比特时间,状态机将进入Data0 状态以接收字节的低4位,然后是Data1状态,并接收字节的高4位,之后又回到Data0状态。状态机就一直在这两个状态之间循环,直到数据接收完毕 (PHY清除MRxDV信号)后进入Idle,以重新等待接收新的数据;如果接收到帧起始定界符时,IFGcnt计数器所确定的时间小于96个比特时间, 那么状态机将进入Drop_State状态,并一直维持该状态直到数据有效信号结束(PHY清除MRxDV信号)。之后,状态机再同到Idle等待接收新 的数据。
如果在接收前序码、帧起始定界符和数据期间,数据有效信号被清除,那么,状态机将回到Idle。
MAC的其它模块
MAC状态模块
在接收过程的状态信息中,接收错误表明PHY在接收过程中检测到了错误;接收到无效符号则表明接收到的帧中包括无效(PHY无法识别)的符号; 滞后冲突表明接收帧时检测到滞后冲突信号;超短帧表明接收到的帧小于最短有效的长度;超长帧表明接收到的帧大于最大有效帧的长度;半字节对齐错误表明接收 到的半字节不是偶数(即帧的长度不是字节的整数倍);接收溢出则表明接收模块来不及处理接收到的数据而导致接收FIFO溢出。
在发送过程的状态信息中,超过重试限制表示由于冲突导致的重试次数超过了额定值;滞后冲突表示发送帧的过程中检测到的冲突信号超过了规定的冲突时间窗;延迟,表明在发送帧之前检测到信道忙。
MAC控制模块
MAC控制模块提供有全双工操作中的流量控制功能,流量控制可通过发送和接收PAUSE的MAC控制帧来实现。当接收站点的接收缓冲区(Rx FIFO)快溢出而主机接口义来不及取走数据时,系统就会发出流量控制请求。MAC在接收到流量控制请求之后,即发送PAUSE控制帧,以使数据发送站点 在指定的时间内暂停发送数据。
数据发送站点接收到PAUSE控制帧后,便可根据帧中的参数设置PAUSE定时器。PAUSE定时器在减到0之前,发送模块将暂停发送数据(PAUSE控制帧除外)。PAUSE定时器减到0之后,发送模块将恢复发送数据。
MII管理模块
MII管理模块用于控制MAC与外部PHY之间的接口,以用于对PHY进行配置并读取其状态信息。该接口由时钟信号MDC和双向数据信号MDIO组成。MII管理模块则由时钟生成模块、移位寄存器模块和输出控制模块三部分组成。
时钟生成模块可以根据系统时钟和系统设置中的分频系数来产生MII管理模块的时钟信号MDC(10 Mbps速率时为2.5 MHz,100 Mbps速率时为25 MHz)。
移位寄存器模块既可用于对PHY的控制数据进行写入操作,也可用于对PHY的状态信息进行读出操作。写控制数据时,移位寄存器根据其他模块的控 制信号将并行控制数据转换为串行数据;而在读状态信息时,移位寄存器则将PHY的串行数据转换为并行数据,MAC中的其他模块可将该并行数据写入适当的寄 存器。
由于MDIO是双向信号,因此,输出控制模块就用来决定MDIO是处于输入状态还是输出状态。当MDIO处于输出状态时,移位寄存器输出的串行控制数据在经过时钟同步后发送到PHY;当MDIO处于输入状态时,移位寄存器将数据线上的串行数据转换为并行数据。
- 提供丰富产品组合方案,MACOM抢占高带宽互联市场(08-11)
- 电力线MAC/PHY集成收发器INT51X1及其应用(02-11)
- 基于PVLAN的工作原理的设计方案(03-03)
- 苹果新Macbook Pro13寸拆解:集成度创新高度 搭配史上最好音质(10-02)
- 莱迪思MachXO3 FPGA系列 助力新兴互连接口设计(09-09)
- 技术控必看,专业人士细谈USB Type-C(02-17)