【一种MII/RMII/SMII可复用以太网接口收发器IP核设计】以太网的复用技术
摘要:以太网技术的高速发展,使得利用以太网进行通信和数据交换已成为当今社会通信的潮流和方向。在很多以太网产品设计中都需要设计以太网接口电路,本文介绍了一种基于FPGA的10/100Mb/s以太网接口收发器的IP核设计。该IP核可工作于MII/RMII/SMII模式,通过FPGA验证可作为独立模块应用于相关以太网芯片设计中。
关键字:以太网;FPGA;CRC;IP
An IP design of Ethernet interface transceiver for MII/RMII/SMII
Abstract: With the high speed development of Ethernet technology, it is very important for people to use Ethernet for telecommunications and information exchange. The interface circuit is necessary for Ethernet products, this article introduces a kind of IP design about 10/100Mb/s Ethernet receiver/transmitter based on FPGA. The IP core can work in MII/RMII/SMII mode, and can be applied in IC design of Ethernet independently.
Keywords: Ethernet;FPGA;CRC;Intellectual property rights
随着以太网应用的推广,快速以太网FE(Fast Ethernet)、千兆以太网GE(Giga-bit Ethernet)等高速网络已经进入到人们的实际生活应用中,并且随着IPTV等新的电信业务的快速发展,网络产品会越来越多。根据不同的系统需求,在这些网络产品中可能会有不同模式的以太网接口,比如MII模式、RMII模式、SMII模式和GMII模式等。为了适应不同的接口模式,在一些系统应用中会采用FPGA来处理接口信号来增加系统的灵活性。针对这种需求,本文介绍了一种基于FPGA的可支持多种以太网接口的以太网接口收发器的IP核设计。
1 以太网接口工作模式介绍[1]
1.1 MII接口
MII接口提供MAC与PHY之间、PHY与STA(Station Management)之间的互联技术,该接口支持10 Mb/s与100 Mb/s的数据传输速率,数据传输的位宽为4位。两种速率下,除了时钟频率不同外,所有的功能和时序关系都是相同的。MII接口主要包括四个部分:一是从MAC层到物理层的发送数据接口,二是物理层到MAC层的接收数据接口,三是物理层到MAC层的状态指示信号,四是MAC层和物理层之间传送控制和状态信息的MDIO接口。
MII接口还可分为MAC模式和PHY模式,一般来说MAC和PHY对接,但是MAC和MAC也可以对接。MAC模式和PHY模式的区别在于接口信号的方向不同,具体的区别如表1所示。
由于MII接口信号线很多,当交换芯片的端口数据较多时,会造成芯片的管脚数目很多的问题,这给芯片的设计和系统的设计都带来了一定麻烦。为了解决这一问题,人们设计了两种新型的MII接口:RMII(Reduced MII)接口和SMII(Stream MII)接口。
1.2 RMII接口
RMII(Reduced MII)接口是简化的MII接口。它也工作在10/100 Mb/s模式下,也分为MAC模式和PHY模式。RMII接口的收发时钟都是由外部时钟源提供的。这与原来的MII接口不同,原MII接口中的收发时钟是分开的,并且都是由物理层芯片提供给MAC层芯片的。收发数据都变为2比特宽度,并将原MII中的RXDV和CRS两个信号合并为CRS_DV。
发送端,对于100 Mb/s模式下,TX_EN有效时,TXD[0:1]在每个时钟都被采样;在10 M模式下,TX_EN有效时,每10个时钟采样一次TXD[0:1]上的数据,TXD[0:1]上的数据保持10个周期不变。接收端,CRS_DV和时钟是异步的。当物理层芯片收到载波信号后,CRS_DV就变为有效,此时若无以太网数据来,则RXD[0:1]上的数据为全0,若有以太网数据,则RXD[0:1]上连续的前导码“01”后跟随以太网数据。需要注意的是,当CRS_DV在以太网数据帧尾时可能会出现周期震荡的形式,这是由外部的载波消失而引起。10/100 Mb/s时的数据采样方式和发送端相同。
1.3 SMII接口
SMII(Stream MII)接口是另外一种更简化的MII接口,它又叫串行MII接口。这是因为它的收发数据线只有1比特宽度。SMII接口包括TXD、RXD、SYNC三类信号线和一个125 M的时钟信号。因为需要在数据里传输控制信息,所以时钟信号要高于100 Mb/s。SYNC是收发数据的同步信号,每10个时钟出一个周期高脉冲。TXD和RXD上传输的是收发数据和控制信息,它们每10个比特为一组,用SYNC来指示每组数据的开始。每组第一个比特和SYNC同步,是错误指示信号,第二个比特是收发使能信号,当此信号,之后的8个比特是数据信号。当使能比特为0时,之后的8比特数据为控制信息;当使能比特为1时,之后的8比特数据为以太网数据信号。
1.4 MDIO接口
MII接口也是一个串行接口,它只有两根信号线:MDC和MDIO。MAC层芯片可以利用MIDO接口来访问物理层芯片中的寄存器,并完成对物理层芯片的控制管理。
MDC是一个非周期的时钟信号,最小正负电平时间和为400 ns,最小正/负电平时间为160 ns。MDIO是一个双向数据信号,同步于MDC时钟,在MDC的上升沿有效,MIDO引脚需要上拉。MDIO的管理帧结构如表2所示。
2以太网接口收发器IP设计
随着以太网应用的广泛普及,EOS/EOP设备被广泛应用。在这些EOS/EOP设备中都需要用到相应的芯片处理以太网数据。为了降低成本,并且满足不同客户的具体要求,很多系统设计者都尝试采用FPGA自己来开发相应的芯片。另外,一些IC设计公司也在开发相应的系列芯片。在这些设计中,一般都需要以太网收发器处理电路,在不同的系统应用中可能会有不同的接口工作模式要求。针对这种情况,本文提出一种可支持MII/RMII/SMII多种接口模式可复用的以太网接口收发器的IP核设计。
2.1 顶层模块设计
考虑到FPGA/IC设计的以太网模块一般都作为全双工MAC层器件使用,本IP核设计时只支持全双工MAC模式。为了增加该IP核的可用性和可移植性,根据具体功能要求,设计时采用“Top to Down”设计思路,自顶向下进行模块设计和信号定义,并进一步将设计分为发送器、接收器、MDIO接口、MCU接口、MAC接口环回五个模块。本设计的底层电路设计全部采用业内流行的硬件描述语言Verilog来描述,最后用FPGA进行了功能验证。
顶层框图如图1所示。
本设计工作在全双工MAC模式,对半双工所用的TX_ER、RX_ER、COL、CRS信号都不做处理。MCU接口模块负责配置MAC接口的工作模式、进行MDIO读写的请求、读写MAC发送器及接收器中的各种包统计以及产生相应的中断。MDIO接口模块根据MCU接口发来的指令产生MDIO接口的读写信号完成对外部PHY器件的寄存器的读写访问。MAC接口环回控制模块提供以太网侧的管脚环回功能,方便系统用户进行系统级的调试。MAC接收器模块根据MCU的模式控制,选择是工作在MII、RMII或SMII模式下。接收器根据不同的工作模式先对接口送来的以太网帧数据做比特转换,统一转换为8比特的数据流。同时,对送来的以太网帧做FCS校验,给出FCS校验正确指示。为了增加IP核的检测功能,还对输入的以太网帧进行超长、超短、错误FCS帧、正确FCS帧以及收包总数等各种包长的统计。发送器根据不同的工作模式先对用户侧恢复出来的8比特以太网帧数据做比特转换,转换成相应的MAC接口模式发送。同时,对发出的以太网帧进行发包统计。
2.2 MCU接口模块设计
MCU接口模块支持MOTOL总线方式和INTEL总线方式,支持复用和非复用方式。这样设计IP核可灵活适应各种MCU外部接口方式,增加了IP核的应用范围。MBEB=1,MCU接口工作在INTEL总线模式;MBEB=0,MCU接口工作在MOTOL总线模式。
在INTEL总线模式下,CSB=0时,在WRN的上升沿将MCU数据锁存到MCU地址指定的寄存器中;CSB=0时,在RDN的上升沿,MCU读取总线上的数据。
在MOTOL总线模式下,WRN作为读写指示信号,WRN=0为写指示,WRN=1为读指示。RDN为读写访问使能信号,高有效。在CSB=0,RDN=1时,在WRN的上升沿将MCU数据锁存到MCU地址指定的寄存器中;在CSB=0,RDN=1时,在RDN的上升沿,MCU读取总线上的数据。
在地址复用模式下,ALE作为MCU地址锁存信号,ALE=1时锁存地址;在非复用模式下接高。
2.3 MDIO接口模块设计
在系统应用中,为了方便用户配置PHY层器件或查询PHY层器件状态,在MAC层器件中一般都会提供MDIO接口。设计时,通过间接访问的方式由MCU接口产生MDIO的读写请求,由内部电路产生出MDIO的读写时钟(MDC)和数据(MDIO)。MDIO的帧结构如表2所示。PRE是MIDO帧的前导码,为32个连续的1,这个前导码可以省略不要,在本设计中就不包含这个前导码。ST是帧开始标志,当MDIO上出现了“01”就表示一个MIDO帧的开始。OP为读写操作码,当MDIO在ST后出现了“10”就表示此MIDO帧为读操作帧;当MDIO在ST后出现了“01”就表示此MIDO帧为写操作帧。PHYAD为要访问PHY器件的5比特器件地址。REGAD为要访问PHY器件中的32个寄存器地址。读操作时,TA=“00”;写操作时,TA=“10”。DATA为16比特的数据,写时完成PHY器件的配置,读时查询PHY器件的配置或状态。IDLE为帧结束后的空闲状态,为1。
2.4 MAC接收器模块设计
根据具体的功能需求将MAC接收器进一步进行模块细分。具体的电路模块图如2所示。
根据用户MCU配置的MAC_MODE寄存器来选择工作在哪种工作模式。因为用户在应用中只会选择使用MII/RMII/SMII中的一种具体的工作模式,所以MAC接口信号采用复用方式来节省管脚的数量。
当MAC_MODE=00,选择为MII模式。RX_CLK为接收时钟信号,10 Mb/s模式时为2.5 MHz;100 Mb/s模式时为25 MHz。RX_DV为接收数据使能信号,高有效。RXD[3:0]为MII输入的数据信号。此时MII_RECV_PRO模块工作,按照MII的接口时序将以太网帧的前导码和帧定位字以及帧后的32位CRC校验比特扣除,只将4比特以太网净荷数据变换为8比特数据流MII_RXD[7:0],并产生相应的帧数据指示MII_RX_FRM_EN和8比特数据使能MII_RX_EN。因为经过数据位宽变换,数据使能信号将不是一个连续有效的信号。
当MAC_MODE=01,选择为RMII模式。SYS_CLK为50 MHz的接收时钟信号,RX_DV为接收数据使能信号,RXD[1:0]为RMII输入数据信号。此时RMII_RECV_PRO模块工作,按照RMII的接口时序将2比特以太网净荷数据变换为8比特数据流RMII_RXD[7:0],并产生相应的帧数据指示RMII_RX_FRM_EN和8比特数据使能RMII_RX_EN。
当MAC_MODE=10,选择SMII模式。选择为SMII模式。SYS_CLK为125 MHz的接收时钟信号,RX_DV为接收数据使能信号,RXD[0]为SMII输入数据信号。此时SMII_RECV_PRO模块工作,按照SMII的接口时序将串行以太网净荷数据变换为8比特数据流SMII_RXD[7:0],并产生相应的帧数据指示SMII_RX_FRM_EN和8比特数据使能SMII_RX_EN。
根据以太网模式控制,MAC_MODE_SEL模块选择出变换处理后的8比特以太网帧数据做FCS校验。FCS校验由FCS_CHK模块完成,生成多项式为IEEE802.3标准中给出的X32+X26+X23+X22+ X16+X12+X11+X10+X8+X7+X5+X4+X3+X+1。FCS校验的初始值为全1,计算时除了前导码,帧起始定界符和原FCS校验序列外的所有数据全部参与计算。FCS_CHK模块将计算出的结果和原FCS校验序列比较,如果相同,表示校验正确,在帧尾指示信号RECV_FRM_END=1时,RECV_FRM_OK=1;否则,表示校验错误,在帧尾指示信号RECV_FRM_END=1时,RECV_FRM_OK=0。
PCK_CNT模块对收到的以太网数据进行超长、超短、FCS正确包以及FCS错误包的统计。统计采用32位的饱和计数器,这些计数器的值被送到MCU接口电路中的读后清寄存器中。
2.5 MAC发送器模块设计
根据具体的功能需求将MAC发送器进一步进行模块细分。具体的电路模块图如3所示。
发送器先对用户送来的以太网帧进行CRC32校验和包统计。CRC校验由TRAN_FCS_GEN模块完成,生成多项式和接收器中的相同。产生的32位CRC计算结果插在以太网帧数据后发送。TRAN_PCK_CNT模块对要发送的以太网数据进行32位的饱和统计计数,其统计结果被送到MCU接口电路中的读后清寄存器中。
根据MCU对MAC_MODE的配置来选择对用户送来的8比特帧数据流进行何种处理。
处理电路将用户送来的8比特以太网帧数据进行位宽变换等处理,并在帧前加入前导码和帧定位字,在帧后插入以太网帧净荷数据的CRC32校验序列。
MAC_MODE=00时选择工作于MII模式,MII_TRAN_PRO模块工作。MAC_MODE=01选择工作于RMII模式,RMII_TRAN_PRO模块工作。MAC_MODE=10选择工作于SMII模式,SMII_TRAN_PRO模块工作。
最后的模式输出由MAC_MODE_SEL模块选择。TX_EN为发送使能;MII模式下,TXD[3:0]为发送数据,RMII模式下,TXD[1:0]为发送数据,SMII模式下,TXD[0]为发送数据。
3电路仿真及FPGA验证
本IP作为EOS/EOP(以太网映射到SDH/以太网映射到PDH)芯片设计中的MAC接口电路,进行了充分的仿真。仿真采用的是Candence 公司的ncverilog仿真器,综合采用Synplify公司的Synplify pro综合工具,采用Xilinx的Spartan6系列的xc6slx45-3csg324进行了整个芯片的验证,证明了该以太网收发器IP核的可靠实用性。本IP核工作模式较多,由于篇幅有限,只给出了MAC接收器和发送器在MII模式下的仿真结果。
MAC接收器的仿真截图如图4所示。图中,输入的以太网帧字节数据为7个55,5D,00,00,00,01,02~39,56,91,70,34。最后是4个字节是FCS数据,按IEEE802.3标准规定的低位先传的约定可知其FCS校验序列应为:32’h65190734。和电路中FCS的校验结果一致,在图中可见RECV_FRM_END=1时,RECV_FRM_OK=1。
MAC发送器的仿真截图如图5所示。图中,以太网帧数据为从接收器环回的数据,接收器接收的帧相同,为7个55,5D,00,00,00,01,02~39,65,19,07,43。最后是4个字节是FCS序列32’h56917043,按IEEE802.3标准规定的低位先传的约定变为字节数据65、19、07、43,在图中可知在RECV_FRM_END=1,RECV_FRM_OK=1后的4个字节为FCS数据。
4结束语
将以太网业务利用现有的SDH网络或PHD网络传输,已具有非常广泛的需求。EOS/EOP芯片正是满足这种需求的芯片[2]。在EOS/EOP芯片中,本IP核根据配置完成了MII/RMII/SMII接口的收发器功能,并提供了多种包统计计数,方便了用户的调试和管理。本设计采用了Verilog高级硬件语言[3]描述电路设计,并通过了FPGA验证[4],可作为一个独立的模块应用于同类产品设计中。
参考文献
[1] IEEE Std 802.3 -2005, Telecommunications and information exchange between systems Local and etropolitan area networks Specific requirements. Part 3: Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications.USA:Dec.2005 。
[2] Ethernet over SDH/ Ethernet over PDH接口芯片(SE0166)器件手册,V1.00。
[3] 夏宇闻,Verilog 数字系统设计教程。北京:北京航空航天大学出版社,2003。
[4] 吴继华,王诚,Altera FPGA/CPLD设计(高级篇)。北京:人民邮电出版社,2005。
