一种40G以太网的编码装置和方法
技术领域
本发明涉及40G以太网技术,尤其涉及一种40G以太网的编码装置和方法。
背景技术
随着光传输网(OTN,Optical Transport Network)逐渐成为下一代骨干传送网,各种各样的客户业务开始要求封装在OTN中进行传送。
以太网作为现今IP业务的主要载体,凭其简单高效,价格低等优势,近几年来取得了突飞猛进的发展,从千兆以太网发展到10G以太网,再到最近的40G和100G以太网。
对于40G以太网到OTN的封装,由于速率的问题,不能直接将以太网PCS层数据映射到光通道有效载荷单元k(Optical Channel Payload Unit-k,OPUk)中。
OPUk对应的速率如下:
可以看出,OPU3速率为40.150519Gbit/s,而40G以太网PCS层速率为41.25Gbit/s,OPU3无法直接承载40G以太网的物理编码层(PCS)数据。由此G.709协议规定将PCS数据进行513B,1027B编码,编码后速率变为40.1171875Gbit/s,然后再根据相应的映射方式映射到OPU3中。
而40G以太网的513B和1027B编码如何实现,是本领域技术人员一个研究的热点。
发明内容
本发明提供了一种40G以太网的编码方法和装置,以解决如何实现40G以太网的513B和1027B编码的技术问题。
本发明提供了一种一种40G以太网的编码装置,所述装置包括依次连接的513B编码模块以及1027B编码模块以及1027B位宽变换模块,所述513B编码模块包括132bit数据编码子模块、128bit数据排序子模块、256bit数据排序子模块、512bit数据排序子模块、计数器data_cnt子模块以及标志位生成子模块;其中,
所述132bit数据编码子模块,用于对组成132bit的2个66B按照G.709协议规定的编码方式进行编码,将所述132bit转换为128bit,输出至128bit数据排序子模块,其中,每个66B为数据块、控制块或对齐标记(AM)块;
所述128bit数据排序子模块,用于根据所述计数器data_cnt子模块的指示,按照G.709协议规定的顺序对接收的所述128bit进行排序,并将经过排序的128bit输出至256bit数据排序子模块;
所述256bit数据排序子模块,用于根据所述计数器data_cnt子模块的指示,按照G.709协议规定的顺序对接收的连续2个128bit数据排序成256bit数据,将所述256bit输出至512bit数据排序子模块;
所述512bit数据排序子模块,用于根据所述计数器data_cnt子模块的指示,按照G.709协议规定的顺序对接收的连续2个256bit数据排序成512bit数据,将所述512bit数据以连续4个时钟,每个时钟传递128bit的方式输入至所述1027B编码模块;
所述计数器data_cnt子模块,用于通过对输入513B编码模块的132bit进行计数;根据计数结果向所述128bit数据排序子模块、256bit数据排序子模块及512bit数据排序子模块发出排序指示;以及在接收到4个132bit后向标志位生成子模块发送指示;
所述标志位生成子模块,用于接收到所述计数器data_cnt子模块的指示后,生成标志位,并将该标志位发送至所述1027B编码模块。
进一步地,所述513B编码模块还包括计数器ctl_128cnt_1子模块和ctl_128cnt_2子模块以及计数器ctl_256cnt_1子模块和ctl_256cnt_2子模块,
所述计数器ctl_128cnt_1子模块和ctl_128cnt_2子模块,用于分别统计所述128bit数据排序子模块发送至所述256bit数据排序子模块的连续2个128bit数据中控制块和AM块个数;
所述256bit数据排序子模块,还用于根据所述计数器data_cnt子模块、ctl_128cnt_1子模块和ctl_128cnt_2子模块的统计值修改256bit数据中控制块或AM块的标识连续位(FC)值;
所述计数器ctl_256cnt_1子模块和ctl_256cnt_2子模块,用于分别统计所述256bit数据排序子模块发送至所述512bit数据排序子模块的连续2个256bit数据中控制块和AM块个数;
所述512bit数据排序子模块,还用于根据所述计数器data_cnt子模块、ctl_256cnt_1子模块和ctl_256cnt_2子模块的统计值修改512bit数据中控制块或AM块的FC值。
进一步地,所述1027B编码模块包括同步头生成子模块、数据加扰子模块以及1027B输出子模块,其中,
所述同步头生成子模块,用于根据接收的连续两个来自513B编码模块的标志位产生3bit同步头;以及将该同步头与1027B输出子模块输出的第一个128bit数据同步发送至所述1027B位宽变换模块;
所述数据加扰子模块,用于对来自513B编码模块的128bit进行加扰后发送至所述1027B输出子模块;
所述1027B输出子模块,用于将加扰后的数据暂存n个有效时钟后再连续n个时钟输出至1027B位宽变换模块,根据暂存的每个1027B块后的连续输出缺口决定n;当暂存后输出缺口一直为连续8个有效,后续缺口无效,则n取8;当暂存后输出缺口连续8个有效,后续缺口仍有效,则n取4。
进一步地,当所述n取8时,所述1027B位宽变换模块包括:数据拼接子模块、计数器data_cnt_128b子模块、计数器data_cnt_1027b子模块、数据位置生成子模块以及数据输出子模块,其中,
所述计数器data_cnt_1027b子模块,用于根据来自1027B输出子模块的同步头统计接收到的1027B的个数;
所述计数器data_cnt_128b子模块,用于根据来自1027B输出子模块的同步头统计接收到的128bit的个数;
所述数据位置生成子模块,用于根据计数器data_cnt_1027b子模块的统计值生成1027B位宽变换模块输出数据的位置;
所述数据拼接子模块,用于将来自1027B编码模块的128bit数据缓存一个有效时钟后和后续有效时钟接收到的128bit、以及来自1027B编码模块同步头进行拼接,将拼接后的数据输出至所述数据输出子模块;
数据输出子模块,用于根据数据位置生成子模块生成的位置信息、计数器data_cnt_128b子模块的统计值以及计数器data_cnt_1027b子模块的统计值,将来自数据拼接子模块的数据安排在各个有效时钟中以128bit位宽输出;以及当计数器data_cnt_128b子模块的统计值为9,计数器data_cnt_1027b子模块的统计值为43、86或128时,多输出一个数据,并将无效缺口变成有效缺口。
进一步地,当所述n取为4时,所述1027B位宽变换模块包括:数据拼接子模块、计数器data_cnt_1027b子模块、数据位置生成子模块、数据缓存寄存器子模块、数据输出子模块以及输出数据选择子模块,其中,
计数器data_cnt_1027b子模块,用于根据来自1027B输出子模块的同步头统计接收到的1027B的个数;
数据位置生成子模块,用于根据计数器data_cnt_1027b子模块的统计值生成1027B位宽变换模块输出数据的位置;
所述数据拼接子模块,用于将来自1027B编码模块的128bit数据缓存一个有效时钟后和后续有效时钟接收到的128bit、以及来自1027B编码模块同步头进行拼接,将拼接后的数据输出至所述数据输出子模块和数据缓存寄存器子模块;
所述数据输出子模块,用于根据数据位置生成子模块生成的位置信息、以及计数器data_cnt_1027b子模块的统计值将来自数据拼接子模块的数据安排在各个有效时钟中,以128bit位宽输出至数据选择子模块;
数据缓存寄存器子模块,用于在1027B的同步头有效和所述data_cnt_1027b计数器模块的统计值为43、86或128时,从数据拼接子模块获取拼接后的数据;在1027B的同步头无效或所述data_cnt_1027b计数器模块的统计值为其他值时,从数据输出子模块获取数据;并将获取的数据缓存m个有效时钟后,安排在各个有效时钟中,以128bit位宽输出至数据选择子模块,其中,m的取值由时钟频率决定;
输出数据选择子模块,用于根据所述数器data_cnt_1027b子模块的统计值和1027B的同步头选择由数据输出子模块输出数据或由数据缓存器子模块输出数据。
进一步地,所述输出数据选择子模块,用于根据所述计数器data_cnt_1027b子模块的统计值和1027B的同步头选择由数据输出子模块或数据缓存器子模块输出数据,包括:
所述输出数据选择子模块,用于在1027B的同步头有效和所述计数器data_cnt_1027b子模块的统计值为43、86或128时,选择数据输出子模块输出数据;在1027B的同步头无效或所述计数器data_cnt_1027b子模块的统计值为其他值时,由数据缓存寄存器子模块输出数据;直至缺口无效时,继续由缓存寄存器子模块输出数据,同时将无效缺口变成有效缺口;缺口改变后选择由数据输出子模块输出数据。
进一步地,
所述数据缓存寄存器子模块,用于在选取的时钟频率下每42*8个时钟中最少有1个无效缺口,选择m为1;在选取的时钟频率下每85*8个时钟中最少有1个无效缺口,选择m为2;在选取的时钟频率下每127*8个时钟中最少有1个无效缺口,选择m为3。m随缺口的不同而取值不同。
进一步地,所述装置还包括数据拼接模块/拆分模块,
所述数据拼接模块/拆分模块,用于将来自40G以太网的非132bit数据转换为132bit数据后,输入至所述132bit数据编码子模块。
为解决上述技术问题,本发明还提供了一种40G以太网的编码方法,所述方法包括将来自PCS的4个时钟下的132bit输入信号变换为513B;将2个513B变换为1027B;以及将1027B中的多个128bit数据和同步头衔接在一起,以128bit依次输出,所述将来自PCS的4个时钟下的132bit输入信号变换为513B进一步包括:
对组成132bit的2个66B按照G.709协议规定的编码方式进行编码,将所述132bit转换为128bit,输出至128bit数据排序子模块,其中,每个66B为数据块、控制块或对齐标记(AM)块;
按照G.709协议规定的顺序对所述128bit进行排序;
按照G.709协议规定的顺序对连续2个排序后的128bit数据排序成256bit数据;
按照G.709协议规定的顺序对连续2个排序后的256bit数据排序成512bit,将所述512bit以连续4个时钟,每个时钟传递128bit的方式输出;
以及,对来自PCS的132bit输入信号进行计数,在接收到4个132bit后生成513B的lbit标志位输出。
进一步地,所述方法还包括:
按照G.709协议规定的顺序对128bit进行排序后,还统计连续2个排序后的128bit数据中的控制块或AM块个数,根据该个数修改所述256bit数据中控制块或AM块中的标识连续位(FC)值;
按照G.709协议规定的顺序对连续2个排序后的128bit数据排序成256bit数据后,还统计连续2个排序后的256bit数据中的控制块或AM块个数,根据该个数修改所述512bit数据中控制块或AM块的FC值。
进一步地,所述将2个513B变换为1027B,包括:
对接收的2个513B中每个128bit数据进行加扰;
将加扰后的数据暂存n个有效时钟后再连续n个时钟输出,根据暂存的每个1027B块后的连续输出缺口决定n;当暂存后输出缺口一直为连续8个有效,后续缺口无效,则n取8;当暂存后输出缺口连续8个有效,后续缺口仍有效,则n取4;
以及,由连续两个513B的标志位产生3bit同步头,将该同步头与暂存后输出的第一个128bit数据同时输出。
进一步地,当n取8时,所述将1027B中的多个128bit数据与同步头衔接在一起,以128bit依次输出,包括:
根据所述同步头统计接收到的1027B个数;
根据所述同步头统计接收到的128bit个数;
根据所述1027B个数生成输出数据位置;
将1027B的128bit数据缓存一个有效时钟后和后续接收到的128bit、以及1027B的同步头进行拼接;
根据所述输出数据位置、1027B个数以及128bit个数将进行拼接后的数据安排在各个有效时钟中以128bit位宽输出;以及当128bit计数个数为9,且1027B个数为43、86或128时,多输出一个有效数据,并将无效缺口变成有效缺口。
进一步地,当n为4时,所述将1027B中的多个数据衔接在一起,以128bit依次输出,包括:
根据所述同步头统计接收到的1027B个数;
根据所述1027B个数生成输出数据位置;
将1027B的128bit数据缓存一个有效时钟后和后续接收到的128bit、以及1027B的同步头进行拼接;
根据所述输出数据位置、1027B个数将进行拼接后的数据安排在各个有效时钟中以128bit位宽输出,或将待输出的数据缓存m个有效时钟后,再安排在各个有效时钟中以128bit位宽输出,所述m的取值由时钟频率决定;其中,在1027B的同步头有效以及1027B个数为43、86或128时,所述待输出的数据为进行拼接后的数据;在1027B的同步头无效或1027B个数为其他值时,所述待输出的数据为缓存后的根据所述输出数据位置、1027B个数将进行拼接后的数据,直至将无效缺口变为有效缺口后,所述待输出的数据为根据所述输出数据位置、1027B个数将进行拼接后的数据安排在各个有效时钟中以128bit位宽输出的数据。
进一步地,根据所述输出数据位置、1027B个数将进行拼接后的数据安排在各个有效时钟中以128bit位宽输出,或将待输出的数据缓存m个有效时钟后,再安排在各个有效时钟中以128bit位宽输出,包括:
在1027B的同步头有效和1027B个数为43、86或128时,所述待输出的数据为进行拼接后的数据,再将拼接的数据缓存m个有效时钟,在1027B的同步头无效或1027B个数为其他值时,输出缓存后的数据;直至有无效缺口时,继续输出缓存后的数据,并将无效缺口变为有效缺口,缺口改变后再根据所述输出数据位置、1027B个数输出拼接后的数据。
进一步地,所述m的取值由时钟频率决定,包括:
在选取的时钟频率下每42*8个时钟中最少有1个时钟缺口无效,选择m为1;在选取的时钟频率下每85*8个时钟中最少有1个时钟缺口无效,选择m为2;在选取的时钟频率下每127*8个时钟中最少有1个时钟缺口无效,选择m为3。
进一步地,所述方法还包括:
将来自PCS的非132bit比特数据转换为132bit数据,再将4个132bit数据变换为513B。
通过上述技术方案实现了40G以太网的513B和1027B编码。
附图说明
图1为本实施例的编码装置组成图;
图2为本实施例的513B编码模块组成图;
图3为本实施例的1027B编码模块的组成图;
图4为本实施例的1027B位宽转换模块方案一的组成图;
图5为本实施例的1027B位宽转换模块方案二的组成图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1为本实施例的编码装置组成图。
该编码装置包括依次连接的513B编码模块以及1027B编码模块以及1027B位宽变换模块,其中,
513B编码模块,用于将来自PCS的4个时钟下的132bit输入信号变换为513B输出至1027B编码模块,其中513B包括512bit的数据和lbit的标志位;
1027B编码模块,用于将来自513B编码模块的连续2个513B变换为1027B输出至1027B位宽转换模块,其中1027B包括1024bit数据和3比特同步头;
1027B位宽变换模块,用于将来自1027B编码模块的1027B的多个数据衔接在一起,以128bit依次在各个有效时钟中输出。
为了保证上述编码装置对任意比特位的40G以太网PCS数据均使用,在上述编码装置中还可设置数据拼接模块/拆分模块,用于将来自40G以太网的非132bit数据转换为132bit数据后,输入至所述132bit数据编码子模块;如PCS数据位宽为66bit,数据拼接模块/拆分模块将连续两个时钟的PCS数据拼接后输出;PCS数据位宽为132bit,数据拼接模块/拆分模块直接将PCS数据输出;PCS数据位宽为264bit,数据拼接模块/拆分模块将PCS数据拆分成两个132bit数据,由两个时钟分别输出。
图2给出了本实施例的513B编码模块组成图。
该513B编码模块包括132bit数据编码子模块、128bit数据排序子模块、256bit数据排序子模块、512bit数据排序子模块、计数器data_cnt子模块以及标志位生成子模块;
所述132bit数据编码子模块,用于对组成132bit的2个66B按照G.709协议规定的编码方式进行编码,将所述132bit转换为128bit,输出至128bit数据排序子模块,其中,每个66B为数据块、控制块或对齐标记(AM)块;
其中,G.709协议规定的编码方式包括:在66B为数据块时,将该66B数据块删除其同步头;在66B为控制块时,将该66B数据块删除其同步头、修改其控制类型编码(将原8bit的控制类型编码按照G.709协议规定的映射关系映射为4bit的控制类型编码)以及生成控制块位置信息;在66B为对齐标志(AM)块时,将该66B的AM块进行数据的bip-8计算、删除同步头,增加类型编码,生成AM块位置信息,添加bip8掩码信息。132bit数据编码子模块中可根据上述编码方式设置bip-8计算单元、同步头删除单元、类型编码单元、块位置生成单元,如图2所示;
由于132bit的PCS数据一个时钟下有2个AM块,因此在设置计算4个AM块的bip-8计算单元时,可以设置一个同时计算两个bip-8的计算电路,再对这个电路复用完成4个AM块的bip-8计算,以简化电路规模。每个bip-8计算电路可先用组合逻辑电路实现相应地计算过程,再使用时序逻辑电路暂存计算结果;
所述128bit数据排序子模块,用于按照G.709协议规定的顺序对编码后的128bit的两个64B进行排序,将经过排序的128bit输出至256bit数据排序子模块;
所述256bit数据排序子模块,用于按照G.709协议规定的顺序对接收的连续2个128bit数据排序成256bit数据,将所述256bit输出至512bit数据排序子模块;
所述512bit数据排序子模块,用于按照G.709协议规定的顺序对接收的连续2个256bit数据排序成512bit数据,将所述512bit数据以4个连续时钟,每个时钟传递128bit的方式输出至所述1027B编码模块;
所述计数器data_cnt子模块,用于对输入513B编码模块的132bit进行计数;根据计数结果向所述128bit数据排序子模块、256bit数据排序子模块及512bit数据排序子模块发出排序指示;以及在接收到4个132bit后向标志位生成子模块发送指示;该计数器data_cnt子模块还可用于帮助块位置生成模块生成控制块或AM块的位置;生成bip-8计算电路计算结果的暂存指示;该计数器data_cnt子模块可采用2bit的计数器作数据统计;
标志位生成子模块,用于接收到所述数器data_cnt子模块的指示后,生成标志位,并将该标志位发送至所述1027B编码模块。
在其他实施例中,上述513B编码模块还可包括计数器ctl_128cnt_1子模块和ctl_128cnt_2子模块以及计数器ctl_256cnt_1子模块和ctl_256cnt_2子模块,
所述计数器ctl_128cnt_1子模块和ctl_128cnt_2子模块,用于分别统计所述128bit数据排序子模块发送至所述256bit数据排序子模块的连续2个128bit数据中控制块或AM块个数;
所述256bit数据排序子模块,还用于根据所述计数器data_cnt子模块、计数器ctl_128cnt_1子模块和ctl_128cnt_2子模块的统计值修改256bit数据中控制块或AM块的标识连续位(FC)的值;;
所述计数器ctl_256cnt_1子模块和ctl_256cnt_2子模块,用于分别统计所述256bit数据排序子模块发送至所述512bit数据排序子模块的连续2个256bit数据中控制块和AM块个数;
所述512bit数据排序子模块,还用于根据所述计数器data_cnt子模块、所述计数器ctl_256cnt_1子模块和ctl_256cnt_2子模块的统计值修改512bit数据中控制块或AM块的FC的值。
图3给出了本实施例的1027B编码模块组成图。
该编码模块包括同步头生成子模块、数据加扰子模块以及1027B输出子模块,其中,
所述同步头生成子模块,用于根据接收的连续两个来自513B编码模块的标志位产生3bit同步头;以及将该同步头与1027B输出子模块输出的第一个128bit数据同步发送至所述1027B位宽变换模块;
该同步头生成子模块可对连续两个来自513B编码模块的标志位同或后产生3bit同步头;
所述数据加扰子模块,用于对来自513B编码模块的128bit数据进行加扰后发送至所述1027B输出子模块;
所述1027B输出子模块,用于将加扰后的数据暂存n个有效时钟后再连续n个时钟输出至1027B位宽变换模块,根据暂存的每个1027B块后的连续输出缺口决定n。当暂存后输出缺口一直为连续8个有效,后续缺口无效,则n取8,表明需要暂存1个1027B块后连续8个时钟输出,此时,1027B位宽转换模块采用图4所示的方案一实现;当暂存后输出缺口连续8个有效,后续缺口仍有效,则n取4,表明不需要暂存1个1027B块再连续输出,此时,1027B位宽转换模块采用图5所示的方案二实现。
图4为本实施例的1027B位宽转换模块方案一的组成图。
该1027B位宽变换模块包括数据拼接子模块、计数器data_cnt_128b子模块、计数器data_cnt_1027b子模块、数据位置生成子模块以及数据子输出模块,其中,
计数器data_cnt_1027b子模块,用于根据来自1027B输出子模块的同步头统计接收到的1027B的个数;
计数器data_cnt_128b,用于根据来自1027B输出子模块的同步头统计接收到的128bit的个数;
当计数器data_cnt_1027b子模块计数为43、86或128时,data_cnt_128b子模块从1计数到9;当计数器data_cnt_1027b子模块计数为其它值时,data_cnt_128b子模块从1计数到8;
数据位置生成子模块,用于根据计数器data_cnt_1027b子模块的统计值生成1027B位宽变换模块输出数据的位置;每一个1027B经过8个时钟的128bit输出后仍有3bit没有输出,所以输出的数据位置为每一个1027B输出后在拼接后的数据中移动3个位置。在计数器data_cnt_1027b子模块的统计值为43、86或128时,输出的数据位置要重新调整。
数据拼接子模块,用于将来自1027B编码模块的128bit数据缓存一个有效时钟后和后续接收到的128bit、以及来自1027B编码模块同步头进行拼接,将拼接后的数据输出至所述数据输出子模块;
数据输出子模块,用于根据数据位置生成子模块生成的位置信息、计数器data_cnt_128b子模块的统计值以及计数器data_cnt_1027b子模块的统计值,将来自数据拼接子模块的数据安排在各个有效时钟中以128bit位宽输出;以及当计数器data_cnt_128b子模块的统计值为9,计数器data_cnt_1027b子模块的统计值为43、86或128时,多输出一个有效数据,并将无效缺口变成有效缺口。对时钟下对应的数据用一个指示信号表明该数据的有效性,此指示信号称为缺口。当时钟下的数据有效,此缺口为有效缺口;当时钟下的数据无效,此缺口为无效缺口。
图5为本实施例的1027B位宽转换模块方案二的组成图。
该1027B位宽变换模块包括数据拼接子模块、计数器data_cnt_1027b子模块、数据位置生成子模块、数据缓存寄存器子模块、数据输出子模块以及输出数据选择子模块,其中,
计数器data_cnt_1027b子模块,用于根据来自1027B输出子模块的同步头统计接收到的128bit的个数;
数据位置生成子模块,用于根据计数器data_cnt_1027b子模块的统计值生成1027B位宽变换模块输出数据的位置;
所述数据拼接子模块,用于将来自1027B编码模块的128bit数据缓存一个有效时钟后和后续接收到的128bit、以及来自1027B编码模块同步头进行拼接,将拼接后的数据输出至所述数据输出子模块和数据缓存寄存器子模块;
所述数据输出子模块,用于根据数据位置生成子模块生成的位置信息、以及计数器data_cnt_1027b子模块的统计值将来自数据拼接子模块的数据安排在各个有效时钟中以128bit位宽输出至数据选择子模块;
数据缓存寄存器子模块,用于在1027B的同步头有效和所述data_cnt_1027b计数器模块的统计值为43、86或128时,从数据拼接子模块获取拼接后的数据;在1027B的同步头无效或所述data_cnt_1027b计数器模块的统计值为其他值时,从数据输出子模块获取数据,并将获取的数据缓存m个有效时钟后,安排在各个有效时钟中以128bit位宽输出至数据选择子模块,其中,m的取值由时钟频率决定:在选取的时钟频率下每42*8个时钟中最少有1个时钟缺口无效,选择m为1;在选取的时钟频率下每85*8个时钟中最少有1个时钟缺口无效,选择m为2;在选取的时钟频率下每127*8个时钟中最少有1个时钟缺口无效,选择m为3。以此类推,m的取值随缺口大小而取值不同。m取值越大,实现电路就越复杂。
输出数据选择子模块,用于根据所述数器data_cnt_1027b子模块的统计值和1027B同步头指示选择由数据输出子模块或由数据缓存器子模块输出数据;所述输出数据选择子模块,用于在1027B的同步头有效和所述计数器data_cnt_1027b子模块的统计值为43、86或128时,选择数据输出子模块输出数据;在1027B的同步头无效或所述计数器data_cnt_1027b子模块的统计值为其他值时,由数据缓存寄存器子模块输出数据;直至缺口无效时,继续由缓存寄存器子模块输出数据,同时将无效缺口变成有效缺口;缺口改变后选择由数据输出子模块输出数据。
上述1027B位宽转换模块方案一和方案二,都是通过改变无效缺口为有效缺口,使1027B块的数据输出有效来实现1027B的数据输出,两者都可以避免采用FIFO带来的复杂设计。方案一对系统时钟频率大小的选择和此编码装置的前级模块的缺口有特殊要求,并且实现起来相对简单;方案二对系统时钟频率大小的选择要求比方案一小,且能兼容方案一,但比方案一实现电路复杂些。在整个系统没有缺口的设计中,可以在1027B位宽转换模块前加入FIFO,当读出的1027B计数到43、86或128和同步头有效时,停读,产生缺口,再采取方案二实现1027B的数据以128bit输出。
现有技术中,为实现将40G以太网PCS层速率映射到OPU3,需要经过以下步骤:
将来自PCS的4个时钟下的132bit输入信号变换为513B;
将2个513B变换为1027B;
将1027B中的多个128bit数据和同步头衔接在一起,以128bit依次输出。
为了保证上述编码装置对任意比特位的40G以太网PCS数据均使用,本实施例可将来自PCS的非132bit比特数据转换为132bit数据,再将4个132bit数据变换为513B。
本实施例还给出了一种如何实现上述将来自PCS的4个时钟下的132bit输入信号变换为513B的方法,具体为:
对组成132bit的2个66B按照G.709协议规定的编码方式进行编码,将所述132bit转换为128bit,输出至128bit数据排序子模块,其中,每个66B为数据块、控制块或对齐标记(AM)块;
按照G.709协议规定的顺序对所述128bit进行排序;
按照G.709协议规定的顺序对连续2个排序后的128bit数据排序成256bit数据;
按照G.709协议规定的顺序对连续2个排序后的256bit数据排序成512bit,将所述512bit以连续4个时钟,每个时钟传递128bit的方式输出;
以及,对来自PCS的132bit输入信号进行计数,在接收到4个132bit后生成513B的1bit标志位输出。
在其他实施例中,按照G.709协议规定的顺序对128bit进行排序后,还统计连续2个排序后的128bit数据中的控制块或AM块个数,根据该个数修改所述256bit数据中控制块或AM块中的标识连续位(FC)的值;
按照G.709协议规定的顺序对连续2个排序后的128bit数据排序成256bit数据后,还统计连续2个排序后的256bit数据中的控制块或AM块个数,根据该个数修改所述512bit数据中控制块或AM块的FC的值。
本实施例还给出了一种如何实现上述将2个513B变换为1027B的方法,具体为:
对接收的2个513B中每个128bit数据进行加扰;
将加扰后的数据暂存n个有效时钟后再连续n个时钟输出,根据暂存的每个1027B块后的连续输出缺口决定n。当暂存后输出缺口一直为连续8个有效,后续缺口无效,则n取8,表明需要暂存1个1027B块后连续8个时钟输出;当暂存后输出缺口连续8个有效,后续缺口仍有效,则n取4,表明不需要暂存1个1027B块再连续输出;
以及,由连续两个513B的标志位产生3bit同步头,将该同步头与暂存后输出的第一个128bit数据同时输出。
当n取8时,实现将1027B中的多个128bit数据与同步头衔接在一起,以128bit依次输出的方法为:
根据所述同步头统计接收到的1027B个数;
根据所述同步头统计接收到的128bit个数;
根据所述1027B个数生成输出数据位置;
将1027B的128bit数据缓存一个有效时钟后和后续接收到的128bit、以及1027B的同步头进行拼接;
根据所述输出数据位置、1027B个数以及128bit个数将进行拼接后的数据安排在各个有效时钟中以128bit位宽输出;当128bit计数个数为9,且1027B个数为43、86或128时,多输出一个数据,并将无效缺口变成有效缺口。
当n取4时,实现将1027B中的多个128bit数据与同步头衔接在一起,以128bit依次输出的方法为:
根据所述同步头统计接收到的1027B个数;
根据所述1027B个数生成输出数据位置;
将1027B的128bit数据缓存一个有效时钟后和后续接收到的128bit、以及1027B的同步头进行拼接;
根据所述输出数据位置、1027B个数将进行拼接后的数据安排在各个有效时钟中以128bit位宽输出,或将待输出的数据缓存m个有效时钟后,再安排在各个有效时钟中以128bit位宽输出,所述m的取值由时钟频率决定;其中,在1027B的同步头有效以及1027B个数为43、86或128时,所述待输出的数据为进行拼接后的数据;在1027B的同步头无效或1027B个数为其他值时,所述待输出的数据为缓存后的根据所述输出数据位置、1027B个数将进行拼接后的数据,直至有无效缺口变为有效缺口后,所述待输出的数据为根据所述输出数据位置、1027B个数将进行拼接后的数据安排在各个有效时钟中以128bit位宽输出的数据;
在1027B的同步头有效和1027B个数为43、86或128时,所述待输出的数据为进行拼接后的数据,再将拼接的数据缓存m个有效时钟,在1027B的同步头无效或1027B个数为其他值时,输出缓存后的数据,直至有无效缺口时,继续输出缓存后的数据,并将无效缺口变为有效缺口,缺口改变后再根据所述输出数据位置、1027B个数输出拼接后的数据;
上述,在选取的时钟频率下每42*8个时钟中最少有1个时钟缺口无效,选择m为1;在选取的时钟频率下每85*8个时钟中最少有1个时钟缺口无效,选择m为2;在选取的时钟频率下每127*8个时钟中最少有1个时钟缺口无效,选择m为3。以此类推,m的取值随缺口大小而取值不同。m取值越大,实现电路就越复杂。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
需要说明的是,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。