发明内容
本发明提供一种基于10Gbase-R协议的以太网系统,其主要目的在于降低以太网系统的时钟频率,有效提高该方案对FPGA芯片的适用性。
本发明实施例提供一种基于10Gbase-R协议的以太网系统,包括:PCS层传输模块、高速串行收发器和PCS层接收模块,其中:
所述PCS层传输模块用于对XGMII发送数据进行预设处理,得到64位的位宽数据;
所述高速串行收发器用于接收所述位宽数据,并根据状态监测信号对所述位宽数据进行自动移位,以发送所述位宽数据;
所述PCS层接收模块用于生成所述状态监测信号,接收并对所述位宽数据进行预设逆处理,以获取XGMII接收数据。
优选地,所述PCS层传输模块包括编码器、加扰器和位宽转换器,其中:
所述编码器用于对所述XGMII发送数据进行编码,得到编码数据;
所述加扰器用于对所述编码数据进行扰码处理,得到扰码数据;
所述位宽转换器用于对所述扰码数据进行位宽拓展,得到64位的所述位宽数据。
优选地,所述PCS层接收模块包括同步模块、解扰器、解码器和频偏模块,其中:
所述同步模块用于对所述高速串行收发器发送的数据进行帧同步头检测,生成所述状态监测信号,并接收所述位宽数据;
所述解扰器用于对所述位宽数据进行解扰处理,获取解扰数据;
所述解码器用于对所述解扰数据进行解码处理,获取解码数据;
所述频偏模块用于对所述解码数据进行缓存处理和时钟域的转换,获取所述XGMII接收数据。
优选地,所述位宽转换器用于对所述扰码数据进行位宽拓展,得到64位的所述位宽数据,具体包括:
所述扰码数据包括32位的传输组数据、数据有效序列信号、数据同步头信号和数据有效指示信号;
所述位宽转换器用于将32位的传输组数据转换为64位的传输组数据,并将64位的传输组数据、所述数据有效序列信号、数据同步头信号和数据有效指示信号发送给所述高速串行收发器。
优选地,所述数据有效序列信号和所述数据同步头信号保持一个时钟周期。
优选地,若所述数据有效序列信号为32位,则所述数据有效序列信号无效。
优选地,所述同步模块的工作原理包括:
所述同步模块位于同步头监测状态时,判断接收的数据同步头信号是否合理或者是否为控制数据,如果是合理的且为控制数据,则输出有效监控信号,并进入有效监控状态,否则,输出无效监控信号,进入无效监控状态;
在无效监控状态,对有效监控信号进行计数统计,得到有效计数值,对无效监控信号进行计数统计,得到无效计数值,如果无效计数值等于16或者同步锁定信号未拉高,则进入移位状态;
若所述同步模块位于移位状态,则输出所述状态监测信号,以使得所述高速串行收发器根据所述状态监测信号进行移位操作。
优选地,所述同步模块的工作原理还包括:
若所述以太网系统处于空闲时,进入初始化状态,并从所述初始化状态自动进入到复位状态,若在复位状态检测有效的数据同步头信号,则进入同步头监测状态。
优选地,所述同步模块的工作原理还包括:
如果有效计数值等于64、且无效计数值小于16、且同步锁定信号拉高,则重新回到复位状态。
优选地,所述同步模块的工作原理还包括:
如果同步头监测信号有效且有效计数值小于64、无效计数值小于16且同步锁定信号拉高,则再次进入同步头监测状态。
本发明实施例提出一种基于10Gbase-R协议的以太网系统,与传统的以太网系统相比,本发明实施例中的PCS层传输模块对XGMII发送数据进行预设处理后得到的是64位的位宽数据,而不是32位的位宽数据,在总带宽不变的情况下,数据位宽变大,从而使得以太网系统的时钟频率变小,因此本发明实施例中提出的以太网系统对FPGA芯片的时钟频率要求较低,使得该以太网系统能够在更多的FPGA芯片上实现。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以太网技术是目前使用最广泛的局域网技术之一,发展应用30多年,从最初的半双工发展成为全双工的工作方式,经历了10Mbps初期以太网、100Mbps快速以太网、1000Mbps千兆以太网、10Gbps万兆以太网的发展路程,以太网标准包含多种协议,构成一个完整体系的协议族,现如今在局域网领域,以太网技术早已取代诸如令牌环、令牌总线、FDDI、ARCNET等技术,成为了局域网领域最主流的技术。
以太网技术具有多种优良特性,现如今不仅在局域网领域占据了重要地位,已经扩展到了城域网、广域网等其它领域中。
以太网技术最重要的一个领域是10G万兆以太网领域,和传统的以太网相比具有多种特性:支持星型结构网络,采用点对点方式,发展出了新的PMD物理媒介相关子层,数据速率高达10G,保留了最大/最小帧长,全双工的工作模式,到现在已经发展成为一个庞大的协议族,按照传输介质可以分为:
(1)光纤上传输的IEEE802.3ae,包含7个规范,10GBase-LX4,10GBase-W(10GBase-SW;10GBase-LW;10GBase-EW),10GBase-R(10GBase-SR;10GBase-LR;10GBase-ER)。
(2)同轴电缆上传输的IEEE802.3ak,包含1个规范,10GBase-CX4。
(3)双绞线上传输的IEEE802.3an,包含1个规范,10GBase-T。
(4)多模光纤上传输的IEEE802.3aq,包含1个规范,10GBase-LRM。
(5)PCB板上传输的IEEE802.3aq,包含两个规范,10GBase-KX4和10GBase-KR。
以上规范按照用途又可以分为3类:
(1)局域网:10GBase-SR、10GBase-LR、10GBase-ER、10GBase-LX4、10GBase-CX4、10GBase-T和10GBase-LRM。
(2)广域网:10GBase-EW、10GBase-LW和10GBase-SW。
(3)背板:10GBase-KX4和10GBase-KR。
其中,广域网物理层主要是在局域网物理层原有的基础上增加了WIS子层,用来完成兼容性和速率适配,可以看出,10GBase-R协议既代表局域网物理层,也是广域网物理层的基础,属于以太网的关键技术,本发明实施例基于10Gbase-R协议研究以太网系统。
图1为现有技术中开放式系统互联通信参考模型(Open System InterconnectionReference Model,简称OSI)的结构示意图,如图1所示,基于10Gbase-R协议的以太网系统属于物理层,位于MAC层和PMA层之间,在发送方向上,上层数据通过MAC层传给PCS层,再传给PMA层;在接收方向上,底层数据通过PMA层传给PCS层,再传给MAC层,MAC层被称为介质访问控制层,作为协议的控制引擎,与上层进行交互。PMA层被称为物理介质接入层,实际为串化/解串模块,主要负责数据的串行和并行转换。PMA层在发送路径上,提供发送时钟,将PCS层传来的并行数据,转换成串行数据,再传递给PMD层;PMA层在接收路径上,提供接收时钟,传递状态链路信息,将PMD层传来的串行数据,进行数据解串,再转换成并行数据传给PMA层。
图2为本发明一实施例提供的一种基于10GBase-R协议的以太网系统的结构示意图,如图2所示,该以太网系统位于PCS层内部,具体可以看做由PCS层传输模块210、高速串行收发器220和PCS层接收模块230三部分组成,其中:
所述PCS层传输模块210用于对XGMII发送数据进行预设处理,得到64位的位宽数据;
所述高速串行收发器220用于接收所述位宽数据,并根据状态监测信号对所述位宽数据进行自动移位,以发送所述位宽数据;
所述PCS层接收模块230用于生成所述状态监测信号,接收并对所述位宽数据进行预设逆处理,以获取XGMII接收数据。
该以太网系统中,XGMII发送数据从PCS层传输模块的输入端输入,PCS层的输出端与高速串行收发器的一端连接,高速串行收发器的另一端与PCS层接收模块的输入端连接,PCS层接收模块的输出端用于输出XGMII接收数据。
具体地,XGMII全称为10 Gigabit Media Independent Interface,表示10Gb独立于媒体的接口,X对应罗马数字10,MII为媒体独立接口,也叫介质无关接口,它是IEEE-802.3定义的以太网行业标准,它包括一个数据接口,以及一个MAC和PHY之间的管理接口,管理接口是一个双信号接口,一个是时钟信号,另一个是数据信号,通过管理接口,上层能监视和控制PHY。
首先PCS层传输模块接收到XGMII接口过来的数据,对该发送数据进行预设处理,就可以得到64位的位宽数据,需要说明的是,该预设处理可以包括弹性缓冲处理、编码处理、扰码处理等,在PCS子层内涉及两个时钟域,MAC子层提供的时钟域和PMA子层提供的时钟域,在进行数据传输时通常需要进行跨时钟处理,因此通常需要采用异步FIFO操作实现跨时钟域,但是考虑到数据率较高即使两时钟频率偏差较小,随着时间的积累FIFO迟早被写满或者读空,因此需要先对数据进行弹性缓冲处理,以调节缓冲器处理速率,进行时钟频率补偿,实现跨时钟域的操作;另,编码处理是指按照一定规则对数据进行编码,一般用0和1对数据进行编码,以方便对数据的管理;扰码处理是由于编码后的数据存在长连1和长连0的问题,不能进行直流平衡,不利于采样时钟恢复,以此还需要对编码后的数据进行扰码操作,扰码可以降低数据直流分量,有效平衡数据流中0和1的数量,使数据尽量接近伪随机序列。其具体预设处理所包含的步骤可以根据实际情况进行确定,可以是上述几种步骤的一种或多种组合,具体根据实际情况进行确定,本发明实施例在此不做具体的限定。
另外,本发明实施例中PCS层传输模块对XGMII发送数据进行预设处理后,得到的是64位的位宽数据,传统的10Gbase-R协议的以太网系统得到的是32位的位宽数据,由于总带宽=时钟频率*数据位宽,在保持总带宽不变的情况下,由于本发明实施例中的数据位宽相比传统数据位宽有所提高,因此时钟频率比传统的时钟频率要低,因此本发明实施例中提出的以太网系统对FPGA芯片的时钟频率要求较低,使得该以太网系统能够在更多的FPGA芯片上实现。
另,PCS层得到64位的位宽数据后,将其发送给高速串行收发器,该高速串行收发器接收到该64位的位宽数据后,根据状态监测信号来实现对位宽数据的自动移位,通过自动移位来实现对数据的发送,将其发送给PCS层接收模块。
本发明实施例中,由于位宽数据的自动移位是在高速串行收发器内部进行的,而传统的以太网系统中高速串行收发器的数据收发是在FPGA芯片上进行的,与传统方案相比较而言,本发明实施例中不需要额外占用FPGA芯片内部的逻辑管脚资源,降低了FPGA芯片电路面积,使得用户能够集成更多其它的功能模块。
最后,高速串行收发器将位宽数据发送给PCS层接收模块,该PCS层接收模块接收到该位宽数据后,进行预设逆处理,即可得到XGMII接收数据。此处的预设逆处理为与前面预设处理相对应的逆处理,比如,前面的预设处理中包括编码处理,后面的预设逆处理就包括与之对应的解码处理,前面的预设处理中包括扰码处理,后面的预设逆处理中就包括与之对应的解扰处理等等。
本发明实施例提出一种基于10Gbase-R协议的以太网系统,与传统的以太网系统相比,本发明实施例中的PCS层传输模块对XGMII发送数据进行预设处理后得到的是64位的位宽数据,而不是32位的位宽数据,在总带宽不变的情况下,数据位宽变大,从而使得以太网系统的时钟频率变小,因此本发明实施例中提出的以太网系统对FPGA芯片的时钟频率要求较低,使得该以太网系统能够在更多的FPGA芯片上实现。
在上述实施例的基础上,优选地,所述PCS层传输模块包括编码器、加扰器和位宽转换器,其中:
所述编码器用于对所述XGMII发送数据进行编码,得到编码数据;
所述加扰器用于对所述编码数据进行扰码处理,得到扰码数据;
所述位宽转换器用于对所述扰码数据进行位宽拓展,得到64位的所述位宽数据。
在上述实施例的基础上,优选地,所述PCS层接收模块包括同步模块、解扰器、解码器和频偏模块,其中:
所述同步模块用于对所述高速串行收发器发送的数据进行帧同步头检测,生成所述状态监测信号,并接收所述位宽数据;
所述解扰器用于对所述位宽数据进行解扰处理,获取解扰数据;
所述解码器用于对所述解扰数据进行解码处理,获取解码数据;
所述频偏模块用于对所述解码数据进行缓存处理和时钟域的转换,获取所述XGMII接收数据。
图3为本发明又一实施例提供的一种基于10Gbase-R协议的以太网系统的结构图,如图3所示,该系统中PCS层传输模块包括编码器310、加扰器320和位宽转换器330,编码器、加扰器和位宽转换器依次连接,PCS层传输模块与高速串行收发器的一端连接,高速串行收发器的另一端与PCS层接收模块中的同步模块连接,该PCS层接收模块包括同步模块340、解扰器350、解码器360和频偏模块370,PCS层接收模块中同步模块、解扰器、解码器和频偏模块依次连接。
本发明实施例中,由于PCS层和MAC层是通过XGMII接口进行连接的,其接口数据位宽一般为64bit,因此XGMII发送数据为64bit,由于本发明实施例中采用的是64B66B编码器,经过64B66B编码器后转换为66bit,再经过加扰器后依然为66bit,最后经过位宽转换器变为64bit。
编码器对XGMII发送数据进行编码,得到编码数据,本发明实施例中采用的是64B66B编码转换方案,常用的实现方式有两种:逻辑运算和查找表法,逻辑运算法主要用于编码规则具有一定规律,编码种类数目较少的情况,对于64B66B编码,由于编码较长、情况种类较多,也不存在特定的编码映射规律,所以本发明实施例中采用查找表方法来实现,操作简单且效率较高。
需要说明的是,64B66B编码器将64bit“数据或控制信息”编码成66bit块来进行传输,这66bit中,前两位表示同步头(2bit Sync Header),主要用于接收端的数据对齐和接收数据位流的同步。
加扰器为了平衡编码数据中的0和1数量,使得数据尽量接近伪随机序列,对编码器输出的66bit数据中,其中2bit同步头不进行扰码,只将后64bit数据输入到扰码器中进行操作,扰码多项式为:
G(x)=1+x39+x58。 (1)
PCS子层和PMA子层进行数据传输时需要进行66B64B的位宽变换,本发明实施例中位宽转换器为变速箱,主要将扰码器传过去的66bit的扰码数据转换成64bit的位宽数据,再传输给高速串行收发器。具体采用的是最小公倍数法则和分数分频法。具体地为66bit*32=64bit*33,将66bit数据进行缓存,没32次66bit的写入正好和33次64bit的读出匹配,通过分数分频构造出写入频率为读出频率的32/33,一个完整操作周期正好处理2112bit数据,然后以此为周期循环,最终实现66bit到64bit的位宽转换。
高速串行收发器接收到64bit的位宽数据后,发送给同步模块,经同步模块接收后,将64bit的位宽数据发送给解扰器,解扰器得到66bit的解扰数据,接着经过66B64B解码器,得到64bit的解码数据,然后经过频偏模块后得到64bit的XGMII接收数据。
图4为本发明实施例中位宽转换器、高速串行收发器和同步模块之间的连接结构示意图,如图4所示,本发明实施例的主要关注点在位宽转换器、高速串行收发器和同步模块之间的功能设计上,扰码器将扰码数据发送给位宽转换器中,位宽转换器将原本32bit的tx_data_group数据扩展到64bit的tx_data_group数据,并将该64bit的tx_data_group数据、数据有效序列信号tx_data_seq[6:0]、数据同步头信号tx_data_h[1:0]和数据有效指示信号tx_data_valid一起发送到高速串行收发器中。
图5为本发明实施例中位宽转换器向高速串行收发器发送数据的时序图,如图5所示,TXH[2:0]表示数据同步头信号,TXQ[6:0]表示数据有效序列信号,TXD[63:0]表示64bit的tx_data_group数据。
其中,数据同步头信号、数据有效序列信号和64bit的tx_data_group数据需要满足以下时序要求:数据有效序列信号和数据同步头信号均需要保持一个时钟周期,当数据有效序列为32bit时,表示该数据是无效的。
图6为本发明实施例中高速串行收发器向同步模块发送数据的时序图,如图6所示,本发明实施例中利用高速串行收发器支持灵活字边界对其功能的特性,将传统同步模块需要完成同步头状态监测和数据移位两部分工作拆分为利用同步模块完成同步头状态监测,利用高速串行收发器完成数据自移位,其具体工作原理如下:
在该以太网空闲时,进入初始化状态,该初始化状态用LOCK_INIT表示,在初始化状态中自动进入RESET_CNT状态,如果在RESET_CNT状态中检测到有效的同步头信号test_sh,并且该同步头信号有效,则进入TEST_SH状态,该TEST_SH状态即为同步头监测状态。
在同步头监测状态时,如果同步模块接收到的同步头信号,则判断该同步头信号是否为合理的数据或者是否为控制信息,如果该同步头信号是合理的数据或者是控制信息,那么就输出sh_valid信号,并且同步模块进入到VALID_SH状态;如果该同步头信号既不是合理的数据也不是控制信息,那么输出sh_invalid信号,该同步模块进入INVALID_SH状态。
在同步模块位于INVALID_SH状态时,对sh_valid信号进行sh_cnt计数统计,得到sh_cnt计数数据,对sh_invalid信号进行sh_invalid_cnt进行计数统计,得到sh_invalid_cn计数数据。
如果sh_cnt等于64并且sh_invalid_cnt小于16,并且同步锁定信号被拉高,则同步模块重新回到同步头监测状态即RESET_CNT状态。
如果sh_invalid_cnt等于16,或者同步锁定信号rx_block_lock未拉高,则进入SLIP状态。
如果test_sh有效且sh_cnt小于64,且sh_invalid_cnt小于16,且同步锁定信号rx_block_lock拉高,则同步模块再次进入同步头监测状态即TEST_SH状态。
SLIP状态表示同步信号还未锁定,输出slip信号,促使高速串行收发器继续进行移位操作。
64_GOOD状态表示同步信号锁定,rx_block_lock信号拉高,同步模块工作完成。
需要说明的是:
sh_valid表示有效监控信号,VALID_SH表示有效监控状态,sh_invalid表示无效监控信号,INVALID_SH表示无效监控状态,sh_cnt表示有效计数值,sh_invalid_cnt表示无效计数值,rx_block_lock表示同步锁定信号,SLIP表示移位状态,RESET_CNT表示复位状态,test_sh表示同步头监测信号,TEST_SH表示同步头监测状态,tx_data_group表示传输组数据。
高速串行收发器完成数据的自移位操作后,将数据发送给同步模块,同步模块接收后将其发送给解扰器。
解扰器为加扰器的逆向操作,例如加扰器的操作为:
则解扰器的操作为:
解扰器也是根据上述公式(1)来工作,采用并行解扰的方式来等效实现,满足高数据率的解扰需求。
解码器是64B66B编码器的逆运算,实现方式和基本原理相同,也采用查找表法,将66bit数据解码成64bit原始数据,并译出8bit控制码,关键是利用好66bit数据中的同步头字段和区域块类型码,首先检测出2bit同步头字段,如果同步头字段为2b’01,则说明66bit数据为纯数据,直接去掉同步头剩下的64bit数据即为解码输出的数据,并且将8bit控制码全部译为0,表示纯数据;如果同步头为2b’10,说明数据含有控制字符,则根据预设查找表确定66bit数据中包含的区域块类型码的种类,按照编码的逆运算进行解码,最终得到64bit的解码数据,并且将8bit控制码对应的位译为1。
频偏模块可以对解码数据进行缓存处理和时钟域的转换,最后得到XGMII接收数据。
综上所述,本发明实施例提供一种基于10Gbase-R协议的以太网系统,与传统的以太网系统相比,本发明实施例中的PCS层传输模块对XGMII发送数据进行预设处理后得到的是64位的位宽数据,而不是32位的位宽数据,在总带宽不变的情况下,数据位宽变大,从而使得以太网系统的时钟频率变小,因此本发明实施例中提出的以太网系统对FPGA芯片的时钟频率要求较低,使得该以太网系统能够在更多的FPGA芯片上实现。
另外,由于降低了对FPGA芯片的时钟频率要求,从而可以降低FPGA芯片的功耗,并且由于时钟频率的降低,使得用户的工程时序更容易收敛,时序更容易优化。
最后,由于位宽数据的自动移位是在高速串行收发器内部进行的,而传统的以太网系统中高速串行收发器的数据收发是在FPGA芯片上进行的,与传统方案相比较而言,本发明实施例中不需要额外占用FPGA芯片内部的逻辑管脚资源,降低了FPGA芯片电路面积,使得用户能够集成更多其它的功能模块。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。