发明内容
所以,本发明提供了一种分块编码器以进行K码的自由编码,既不限制接收的XGMII数据中K码的位置也不限制生成的编码输出中经编码后的K码的位置。进一步,本发明的分块编码器对经过编码的有效载荷和相应的同步报头完全置乱以最小化干扰。此外,本发明还提供了完全置乱的编码数据块中经自由编码的K码的自由接收、解置乱和解码。
在一个实施例中,提供了一种分块编码器来对K码进行自由编码以产生经过编码的数据块。所述分块编码器接收10Gbit介质无关接口(XGMII)数据的未格式化数据块。所述未格式化数据块包括数据和/或K字符。数据和K码均可以位于所述未格式化数据块中的任何位置。分块编码器将数据字符插入到编码后数据块的第一组数据槽中。分块编码器对K字符进行编码以产生相应的编码后K字符。每个编码后的K字符包括链接域、位置域和、重编码值域。编码后的K字符被插入到编码后数据块的第二组数据槽中。在编码后数据块之上附加同步报头,以区别控制块和纯的数据块。随后,所述同步报头和编码后数据块被置乱,以备在数据传输系统内进行传输。
根据本发明的一个方面,提供了一种对一组数据进行编码来生成编码数据块的方法,所述一组数据包括多个字符,其中每个字符为第一类或第二类,所述方法包括:
将第一类字符插入到所述编码数据块的第一组数据槽之中;
对第二类字符进行编码以生成相应的编码字符;
将所述编码字符插入到所述编码数据块的第二组数据槽之中。
优选地,所述编码进一步包括:对所述第二类字符进行编码,使每个相应的编码字符包括链接域、位置域和重编码值域。
优选地,所述方法进一步包括:在链接域中编码所述第二组数据槽内的其它编码字符的标志。
优选地,所述方法进一步包括:在位置域中编码所述一组数据内的第二类字符的原始位置。
优选地,所述方法进一步包括:在重编码值域中编码已经过编码的第二类字符。
优选地,所述方法进一步包括:接收10Gbit介质无关接口(XGMII)数据的两个连续传输单位,所述10Gbit介质无关接口(XGMII)数据的两个连续传输单位包括所述一组数据。
优选地,所述方法进一步包括:在所述编码数据块上附加同步报头。
优选地,所述方法进一步包括:对所述同步报头和所述编码数据块进行置乱以生成置乱后的数据块。
优选地,所述插入第一类字符包括:从所述第一组数据槽的最低有效字节(LSB)位置依次填充到最高有效字节(MSB)位置。
优选地,所述插入第二类字符包括:从所述第二组数据槽的最高有效字节(MSB)位置依次填充到最低有效字节(LSB)位置。
根据本发明的一个方面,提供了一种分块编码器,所述分块编码器包括:
用于接收一组数据的数据接口,所述一组数据包括多个字符,其中每个字符为第一类或第二类;以及
用于将第一类字符插入到编码数据块的第一组数据槽之中以及将对应第二类字符的编码字符插入到所述编码数据块的第二组数据槽之中的编码器。
优选地,所述编码数据块的长度等于所述一组数据的长度。
优选地,所述第一组数据槽和第二组数据槽的每个槽的长度等于所述一组数据中每个字符的长度。
优选地,所述编码器从所述第一组数据槽的最低有效字节(LSB)位置到最高有效字节(MSB)位置依次对所述第一组数据槽进行填充。
优选地,所述第一组数据槽包括一组相邻的数据槽。
优选地,所述编码器从所述第二组数据槽的最高有效字节(MSB)位置到最低有效字节(LSB)位置依次对所述第二组数据槽进行填充。
优选地,所述第二组数据槽包括一组相邻的数据槽。
优选地,所述第一组数据槽中槽的数量与所述一组数据中第一类字符的数量相同;且所述第二组数据槽中槽的数量与所述一组数据中第二类字符的数量相同。
优选地,每个编码字符包括:链接域、位置域和重编码值域。
优选地,所述链接域提供了所述第二组数据槽中其它编码字符的标志。
优选地,所述位置域提供了所述一组数据中第二类字符的原始位置。
优选地,所述重编码值域包括了第二类字符的编码后形式。
优选地,所述一组数据包括两个连续的10Gbit介质无关接口(XGMII)数据传输单位。
优选地,所述第二类字符为K控制字符。
优选地,所述编码器在所述编码数据块上附加同步报头。
优选地,所述分块编码器进一步包括有置乱器,所述置乱器对所述同步报头和所述编码数据块进行置乱以生成置乱后的数据块。
根据本发明的一个方面,提供了一种分块解码器,所述分块编码器包括:
用于对编码数据块进行解码以生成解码数据块的解码器,所述编码数据块包括多个字符,其中每个字符为未编码字符或已编码字符,所述解码数据块包括对应所述多个字符的多个数据槽;以及
用于发送所述解码数据块的数据接口。
优选地,所述解码数据块的长度等于所述编码数据块的长度。
优选地,所述解码数据块内每个数据槽的长度等于所述编码数据块内每个字符的长度。
优选地,每个编码字符包括:链接域、位置域和重编码值域。
优选地,所述链接域提供了所述编码数据块中其它编码字符的标志。
优选地,所述位置域提供了每个编码字符的原始位置。
优选地,所述重编码值域包括了每个已编码字符的编码后形式。
优选地,所述解码器生成每个已编码字符的解码形式。
优选地,所述解码器将每个已编码字符的解码形式放置于对应每个已编码字符原始位置的数据槽中。
优选地,所述解码器将每个未编码字符放置于未被每个已编码字符的解码形式占据的数据槽中。
优选地,所述解码数据块包括了两个连续的10Gbit介质无关接口(XGMII)数据传输单位。
优选地,所述已编码字符为已编码的K控制字符。
本发明的其它特征和优点将在下文描述中进一步说明,并通过所述说明呈现其部分内容和通过对本发明的实践得以理解。本发明的优点可以通过本申请公开的说明书和权利要求以及附图中所指出的结构和特点实现和取得。
要说明的是上文的发明内容和下文的具体实施方式只是为了对权利要求所示的本发明内容进行进一步说明的示例和解释。
具体实施方式
许多数据传输系统在数据流中使用嵌入式时钟来提供同步信息。为保证快速和精确的时钟恢复,需要转换丰富的数据流。编码方案被用于从给定的输入数据流产生转换丰富的输出数据流。编码方案同样被设计用来产生DC平衡的输出数据流。其它推动编码器设计的因素包括,例如编码附加开销、最大运行长度、编码率的提升以及对可变线速率的适应。
8比特/10比特(8B/10B)编码方案用于生成具有丰富的转换的输出数据流。1X和2X光纤信道系统以及吉比特以太网系统通常使用8B/10B编码方案。该8B/10B编码方案将由随机的“1”和“0”构成的8比特宽的数据流变换为由“1”和“0”构成的10比特宽的数据流。8B/10B编码方案提供最大运行长度约为5的DC平衡的输出。
8B/10B编码器的附加开销为20%,而编码速率提高25%。当数据率增加到几Gbps时,所述附加开销是无法接受的。特别地,8B/10B编码器在10G光纤信道或10G以太网中的应用是无法接受的。因此,运行于高数据率的数据传输系统一般使用其它的编码方案,而不用8B/10B编码方案。
电气和电子工程师协会(IEEE)10G以太网标准在IEEE802.3第49款规定了66比特/66比特(64B/66B)编码方案,所述条款作为参考全文引用于此。64B/66B编码方案将8个10Gbit介质无关接口(XGMII)八位数组(即64比特)编码为66比特。据此,相应的64B/66B解码方案将66个已编码的比特转换为8个XGMII八位数组。64B/66B编码方案的附加开销约为3%。
图1是为现有技术中应用10GBASE-R物理层设备(PHY)的物理编码子层(PCS)的编码系统100的示意图。如图1所示,现有的编码系统100包括现有的分块编码器102、数据接口126、置乱器104、合成器106和数据宽度变换器108。现有的分块编码器102使用IEEE802.3第49款所规定的现有的64B/66B编码方案。现有的64B/66B编码器通过数据接口126接收四个并行的XGMII数据通道110(即通道0-3)。每个XGMII通道110传送一个8比特(即一个字节或八位组)字符。现有的64B/66B编码器还通过数据接口126接收四比特的控制数据112(即比特0-3)。每个控制数据比特112对应一个XGMII通道110。
XGMII通道110携带的字符种类包括数据、控制、“开始”、“终止”和“有序集合”字符。综合到一起,控制、开始、终止和有序集合字符统称“K”控制码。现有的64B/66B编码器102允许在四个XGMII通道110中的任何位置上接收数据、控制和终止字符。但是,根据IEEE802.3第49款,现有的64B/66B编码器102只能允许在四个XGMII通道110中的某些位置内接收开始和有序集合字符。具体来说,开始和有序集合字符只能接收自或位于四个XGMII通道110的第一个八位组上(即第一通道)。
现有的64B/66B编码器102连续地将通过XGMII通道110接收的八个八位数组(即两个连续的XGMII字符传输单元)编码为一个66比特的编码块。所述66比特的编码块包括同步报头116和有效载荷114。该同步报头为两个比特。因此,该66比特的编码块中剩余的64比特作为有效载荷114。由现有的64B/66B编码器102生成的66比特编码块(包括报头116和有效载荷114)既可以是数据块也可以是控制块。数据块包括的全部都是数据字符。控制块中至少一个字符不是数据字符(例如,终止字符、开始字符等)。
数据块和控制块通过两比特的同步报头116加以区分。数据块的报头116预定为“01”。而与之相反,控制块通过值为“10”的报头116进行辨识。由于报头116是编码块中转换得到保证的唯一部分,所以编码块的报头116还有助于同步。
控制比特112在每个与XGMII通道110中传输数据字符的通道相对应的比特位置传输“0”。相反,控制比特112在与XGMII通道110中传输K字符的通道相对应的比特位置传输“1”。如上文所述,四个XGMII通道110上接收的字符的位置已被现有的64B/66B编码器102严格限制。所以,现有的64B/66B编码器102所接收的可能输入(即可变八位组序列)的范围是有受限的。因此,现有的64B/66B编码器根据从XGMII通道110接收的字符生成非常特定的64比特有效载荷114。
下面的表1对现有的64B/66B编码器102生成的66比特编码块的传统格式进行了说明。“输入数据”列表示从XGMII通道110接收的八个字符。从左到右,第一组四个字符代表第一个XGMII数据传输单元的内容。第二组四个字符代表第二个(下一个)XGMII数据传输单元的内容。如表1所示,输入数据包括数据字符(D)、控制字符(C)、终止字符(T)、开始字符(S)和有序集合字符(O)。
对于给定的输入数据块,将生成相应的同步报头和有效载荷。同步报头“01”用于标识块内有效载荷包括的全部为数据字符(即,编码数据块)。同步报头“10”用于标识所有其它的可能块内有效载荷(即编码控制块)。对于控制块,传统的64B/66B编码器生成八比特的“编码块类型域”。编码块类型域标识了生成的控制块的类型和有效载荷的格式。
开始(S)和终止(T)字符包含于编码块类型域。因此,开始(S)和终止(T)字符未直接包含于相应的有效载荷之中。具体来说,开始(S)和终止(T)字符的位置被编码为由“1”组成的长度可变的字符串,并在接收过程中被忽略。控制字符(C)被编码进七比特的域内而有序集合字符(O)被编码进四比特的域内。表1说明了比特的位置和域的位置,其中最低最高有效比特位于左侧。另外,十六进制数以常规十六进制形式表示。
表1:传统64B/66B编码块的格式(来自IEEE802.3 CL 49)
下面的表2对传统的64B/66B编码器102支持的控制字符进行说明。每个控制字符对应8B/10B编码中的一个K码。如前文所述,许多控制码只能在特定的域位置发送和接收。例如,空闲字符(/I/)可以通过任何通道(表1中的C0-C7)接收,而开始字符(/S/)只能通过第一个八位组发送(表1中的S0或S4)。序列有序集合和信号有序集合为有序集合字符(O)的两种类型。如表1所示,这些编码只能在第一个八位组(O0或O4)上发送。有序集合码用于扩展发送控制和状态信息的能力。例如,有序集合码可用来发送本地和远程错误标志。
表1和表2显示,传统的64B/66B编码器102接收的大多数K码都只限于XGMII通道110中的特定可接受位置。进一步,这些位置受限的K码必须编码到相应的有效载荷114内特定位置处。因此,传统的64B/66B编码器102对K码的接收、编码和传输都受到极大限制。
表2:控制字符(来自IEEE802.3 CL 49)
控制字符 |
标示 |
XGMII控制码 |
10GBASE-R控制码 |
10GBASE-RO码 |
8B/10B码 |
空闲 |
/I/ |
0x07 |
0x00 |
|
K28.0或28.3或K28.5 |
开始 |
/S/ |
0xfb |
通过块类型域编码 |
|
K27.7 |
控制字符 |
标示 |
XGMII控制码 |
10GBASE-R控制码 |
10GBASE-RO码 |
8B/10B码 |
终止 |
/T/ |
0xfd |
通过块类型域编码 |
|
K29.7 |
错误 |
/E/ |
0xfe |
0x1e |
|
K30.7 |
序列有序集 |
/Q/ |
0x9c |
通过块类型域和O码编码 |
0x0 |
K28.4 |
保留0 |
/R/ |
0x1c |
0x2d |
|
K28.0 |
保留1 |
|
0x3c |
0x33 |
|
K28.1 |
保留2 |
/A/ |
0x7c |
0x4b |
|
K28.3 |
保留3 |
/K/ |
0xbc |
0x55 |
|
K28.5 |
保留4 |
|
0xdc |
0x66 |
|
K28.6 |
保留5 |
|
0xf7 |
0x78 |
|
K23.7 |
信号有序集 |
/Fsig/ |
0x5c |
通过块类型域和O码编码 |
0xF |
K28.2 |
回到图1,传统的64B/66B编码器102生成的编码有效载荷114被送至置乱器104。置乱器104对该64比特的有效载荷114进行置乱,生成64比特经过置乱的有效载荷118。置乱器104为自同步置乱器。进一步地,置乱器104使用IEEE802.3第49款规定的如下置乱多项式:
G(x)=1+x39+x58 (公式1)
之后,使用合成器106将经过置乱的有效载荷118与同步报头116组合在一起,生成置乱输出120。特别地,该同步报头是针对经过置乱的有效载荷118而预先设定的。
接下来,置乱输出120被送至数据宽度转换器108。数据宽度转换器108使66比特置乱有效载荷适应于相连的物理介质连接(PMA)子层规定的或使用的宽度,产生传输输出124。传输输出124的宽度小于66比特置乱输出120的宽度。例如,传输输出124的宽度为16比特。
如前文所述,传统的64B/66B编码器102对XGMII通道110的哪个部分可以传输K码加以限制。因此,传统的64B/66B编码器102所生成的有效载荷114也同样受到限制。在XGMII通道110中接收的K码和有效载荷114中的编码K码的位置约束限制了编码系统100所在的数据传输系统的传输能力。具体而言,编码系统100不能处理任何K码(如开始码和有序集合码)的特别放置。进一步地,编码系统100无法适用于非IEEE802.3标准规定的任何控制码或八位组序列。
此外,编码系统100只对传统的64B/66B编码器102生成的编码块中的有效载荷114进行置乱,而未对同步报头116置乱。因而,置乱输出118的频谱将包含有能量尖峰,这会产生电磁干扰。进一步地,能量尖峰会导致在接收器产生共振的问题,增加抖动,从而使时序、数据帧和比特恢复更加困难。
因此,需要一种不限制XGMII通道110上接收的K码位置、也不限制生成的编码输出中经过编码的K码的放置的编码系统。具体而言,所述编码系统应该接受和对位于XGMII数据通道中任一通道的K码进行编码。
图2是本发明的编码系统200的示意图。编码系统200提供了K码的自由接收、编码和传输。进一步地,编码系统200对生成的输出完全置乱以减小能量尖峰。
如图2所示,编码系统200包括编码器202、数据接口218、置乱器204和数据宽度格式化器206。数据接口218或其一部分可以合并在编码器202中。进一步地,编码系统各组分的合成可以一起集成在“分块编码器”中。编码器202通过数据接口218从四个并行XGMII通道208接收XGMII数据。每个XGMII数据通道208接收一个8比特的字符。编码器202还通过XGMII控制链路210接收相应的XGMII控制数据。XGMII链路210传输4个比特,每个比特对应一个不同的XGMII数据通道。
编码器202将通过XGMII数据通道208接收的8个XGMII数据八位组(即两个连续的XGMII字符传输单元-64比特)转换为一个66比特的编码块212。所述66比特的编码块包括两个比特的同步报头和64比特的有效载荷。编码块212被送至置乱器204。置乱器204对编码块的所有66比特进行置乱,生成置乱编码块214。置乱编码块214被送至数据宽度格式化器206。数据宽度格式化器206将置乱编码块214转换为宽度减小的数据块216。特别地,数据宽度格式化器206使置乱编码块214的宽度适合于与数据宽度格式化器206相连的PMA子层设备的宽度。
编码器202未对在XGMII数据通道208上接收的任何K码位置进行约束。即,编码器202适用于在所有四个XGMII数据通道208上的所有K码。因而,编码器202用以生成相应输出(即编码块212)的8个八位组中任何一个均可以是数据字符(D0-D7)或K字符(K0-K7)。编码器202接收的8个八位组可以看作是64比特的未格式化数据块。编码器202将接收的未格式化数据块进行编码生成66比特的编码数据块212。
在编码系统200的运行过程中,编码器202通过数据接口218接收8个XGMII数据八位组。编码器202还通过数据接口218接收八比特的对应XGMII控制数据。在控制链路210上接收的每个控制比特可用于确定对应的XGMII数据通道208携带的是数据字符还是K字符。
通过XGMII通道208接收的数据字符被放置到格式化输出数据或编码块212的一个八比特的域或槽之中。即,数据字符不经任何进一步处理或操作,被直接复制、拷贝或移动到编码块212内的相应八比特域。
通过XGMII数据通道208接收的K字符根据本发明的一个方面被重新编码。图3是用于对接收的八比特K字符重新编码的一个实施例模板300。该实施例300宽度为8比特,包括链接域302、位置域304和重编码值域306。链接域302是一个比特的指示符,指示在编码块212中是否有更多的重编码K码。位置域304是3比特的指示符,指出XGMII通道208中携带K字符的八位组或通道。即,位置域304指示接收的K字符的原始位置。重编码值域306是4比特的指示符或K码类型的重编码形式。下面的表3是K码查找表的一个例子。表3列举了能通过XGMII通道208接收的14种可能的K码以及其相应的重编码值306。如表所示,每个八比特的K字符被重新编码为一个唯一的四比特值。本领域的技术人员可以知道的是,可以使用其它的四比特码来编码以下14种可能的K码而不超出本发明的思想和范围。
表3:K码查找表
编码器202为每个编码有效载荷生成一个两比特的同步报头。每个包含有编码K码的编码块212中带有的同步报头为“10”。不含K码(即只含有数据字符)的编码块212中带有的同步报头为“01”。在编码有效载荷上附加同步报头使编码块212的长度增加到了66比特。
回到图2,置乱器204对编码块212的所有66比特进行置乱。置乱器204可以为自同步置乱器。进一步地,置乱器204使用IEEE802.3第49款规定的如下置乱多项式:
G(x)=1+x39+x58 (公式1)
对编码块212的所有66比特进行置乱改善了置乱编码块214的频谱。具体来说,置乱编码块214的频谱中的能量尖峰被削弱,能量更加均匀的分布在一定频率范围内。
下面的表4说明了通过XGMII通道208接收的未格式化数据与组成编码块212的重新格式化后的数据之间的关系。表4中所示的未格式化数据宽度为八个字节,既包括数据字符(D0-D7)也包括K字符(K0-K7)。未格式化数据和格式化数据的最高有效字节为每个数据块的最左字节。数据字符和K字符可以位于未格式化数据块内的任一字节或通道内。因此,未格式化数据块共有256种可能的变化。为简化描述,表4只列出了可能的变化中的一小部分。
表4中所示的格式化数据块包括八个“数据槽”。每个槽的宽度为八个字节,可以容纳经过编码的K字符或直接重新生成的数据字符。因而,一个编码数据块的长度(不包括同步报头)与一个未格式化的数据块的长度相等。如果出现数据字符的话,占据编码数据块内的第一组数据槽。所述第一组数据槽占用编码数据块中最右端的连续部分。如果出现K符号的话,占据编码数据块内的第二组数据槽。所述第二组数据槽占用编码数据块中最左端的连续部分。第一组和第二组数据槽中槽数分别取决于原始的未格式化数据块中数据字符和K字符的数量。标号为“S”的列代表前文所述的编码数据块中的同步报头。标号为“L”和“P”的列分别代表图3所示的链接域302和位置域304。
表4:生成的编码数据块
图4提供了根据本发明的一个方面自由编码K字符的操作步骤流程图400。具体来说,流程图400示出了从如表4所示的未格式化的数据(通过XGMII通道208接收的数据)生成格式化的数据(编码数据块212)的方法。流程图400执行了上文所述的以及在图3说过的K码字符的重编码过程。总之,流程图400描述了编码数据块中的每个数据槽是如何基于如表4所示未格式化的数据的内容进行填充的。本发明并不局限于所述可选实施例的描述。而且,根据本发明的指导,其它可选的控制流程也将落入本发明的思想和范围,这些对本应域的一般技术人员来说将是显而易见的。下面将对图4中的各个步骤进行描述。
在步骤402,接收或读取八字节的XGMII数据。所述八字节的XGMII数据通过两个连续的4字节XGMII数据传输单元进行接收。接收的八字节XGMII数据包括一个未格式化的数据块。所述未格式化的数据块既可以包括控制信息(如K码)也可以包括数据信息(如D码),所述信息可以位于八个字节中的任何位置。例如,开始和有序集合码可以放置在任何字节位置。同时还接收到八比特的XGMII控制信息。特别地,在接收XGMII数据的每个四字节传输单元的同时,接收四个比特的控制信息。每个控制比特与接收的XGMII数据的一个字节或通道相关联。
在步骤404,接收到未格式化的数据块以确定其是否含有任何K码。具体来说,对每个字节的XGMII数据进行检测,以确定该字节携带的是数据还是控制信息。XGMII数据的每个字节的内容也可以通过检查或处理与特定类型的XGMII数据相关联的XGMII控制比特来确定。
当确定整个未格式化数据块包括的全部是数据字符时,执行步骤406。在步骤406,给未格式化的数据块加上同步报头,以生成相应的格式化数据块。例如,该同步报头可以是两比特的标志“01”。步骤406执行的结果是,步骤402接收的八字节的XGMII数据被格式化,产生一个唯一的格式化数据块。之后,生成的编码数据块和同步报头继续被置乱和传输。
表示从步骤406回到步骤402的步骤408说明了继续对图4中所示的K码进行自由编码。具体来说,步骤408表示回到步骤402,这样下一组的八个字节的XGMII数据被接收。
当确定接收的一个或多个XGMII数据字节包括有控制字符时,执行步骤410。在步骤410,对未格式化数据块的当前字节进行检测,以确定当前字节是否包含有数据字符或控制字符。被检验的初始字节是该未格式化数据块最右端的字节或最低有效字节(LSB)。
当确定当前字节包含有数据字符时,执行步骤412。在步骤412中,当前字节被放置在被格式化数据块中最右侧的未被占据的字节之中。例如,当前字节是未格式化数据的首字节(即LSB字节)时,该数据字节被放置在格式化数据块的LSB字节之中。
步骤412之后执行步骤414。在步骤414,对未格式化数据块的当前字节进行移位。具体来说,当前待检测的字节被从一个字节移动到下一个字节。实质上,当前字节被移动到未格式化数据块的下一个最高有效字节。步骤414之后,重复执行步骤410。步骤412和步骤414一起表示操作的第一分支。重复执行步骤412到步骤414用来自未格式化的数据块的数据字符来填充编码数据块中的第一组数据槽。这些数据槽按照从第一组数据槽的LSB位置到MSB位置顺序填充。这样做的同时,未格式化数据块之中的数据字符(从LSB到MSB)的顺序被保留下来。
当确定当前字节包括有控制字符时,执行步骤416。在步骤416,对当前字节重新编码,并放置在被格式化数据块的最左端的未占用字节之中。例如,当前字节是未格式化数据块的首字节(即LSB字节)时,重新编码后的K字节被放置在被格式化数据块的MSB字节之中。
未格式化的K码根据图3和表3被重新编码。具体来说,被格式化数据块的最左端的未占用字节被化分为三个域。第一个域为一比特,指示在未格式化数据块的其余槽中是否有其它K码存在。如果要在编码数据块中放置更多K码,则所述一比特的域被置为“1”。如果无需在编码数据块中放置更多K码(即当前的K码为最后一个K码),则所述一比特的域被置为“0”。这一指示域占据被格式化编码数据块中最左侧未占用字节的最左一位。
第二个域为一个三比特的域,指示当前K码的原始位置。当前K码可能占据未格式化数据块的八个可能字节中的一个。所述三比特的位置指示域用于确定该字节位置或通道。例如,如果当前K码初始位于未格式化数据块的第三字节(K3),则位置指示域被置为“011”。所述位置指示域占据临近所述一比特的指示域的三位。
第三个域是四比特的重编码值域。根据表3,当前的八比特的K码被重新编码为一个四比特的值。所述第三个域占据被格式化数据块中最左侧未占用字节的最右边的位置。
步骤418在步骤416之后执行。在步骤418,对未格式化数据块的当前字节进行移位。具体来说,当前检测的字节被从一个字节移动到下一个字节。实质上,当前字节被移动到未格式化数据块的下一个最高有效字节。步骤418之后,重复执行步骤410。步骤416和步骤418一起表示操作的第二分支。重复执行步骤416到步骤418用来自未格式化数据块的重新编码的K字符来填充编码数据块中的第二组数据槽。这些数据槽按照从第二组数据槽的MSB位置到LSB位置顺序填充。这样做的同时,未格式化数据块之中的原始K字符的顺序(从LSB到MSB)被保留下来。
步骤420在未格式化数据块的每个字节都检测完之后执行。具体来说,步骤420在未格式化数据块的所有八个字节均按照所述第一分支的操作或第二分支的操作进行格式化之后执行。
在步骤420中,同步报头被加到已编码的数据块上。同步报头表明该已编码数据块包含有自由编码的K字符。同步报头可以是,例如,两比特的标志“10”。之后,生成的已编码数据块和同步报头一起被置乱和传输。
表示从步骤402回到步骤420的步骤422表示继续对图4中的K字符进行自由编码。即,步骤422表示回到步骤402,这样下一组的八个字节的XGMII数据被接收。
图4所示的流程图400用于从表4左侧所示的相应的未格式化数据块生成表4右侧所示的编码数据块。因此,本发明的一个方面提供了一种自由编码位于接收的XGMII数据的任何通道的K码的编码方案。此外,本发明的编码方案生成的编码有效载荷与接收的数据块具有相同的长度,且对编码有效载荷和同步报头进行置乱,产生破裂较小的频谱。如表3和表4所示,所有控制和数据码的组合都适用于此,因此使得本发明的编码方案协议独立。进一步,如表3所示,本发明的编码方案允许十六种不同的控制码,其中的十四种被定义。
此外,本发明的编码方案使得以不依赖速率的方式对K码自由编码成为可能。特别地,本发明的一个实施例中可选择产生NB/(N+2)B编码的任何线速率用于本发明的编码方案,其中N是正整数。因此,可以基于如最终线速率或时钟除法器这样的因素选择合适的编码速率。
本发明的编码方案并不局限于图2所示的实施例和图4所示的操作。而且,根据本发明的指导,本领域的一般技术人员显而易见可知,能够对包括位于接收数据块的任何位置的至少两种不同类型的字符的数据自由编码以产生编码数据块的其它实施例和操作步骤也在本发明的保护范围内。特别地,要注意的是本发明的编码方案适用于以下各种情形:不同类型的接收数据(例如除XGMII以外的数据);不同大小的接收的数据部分(即数据部分不是按字节划分);不同大小的未格式化数据块(即并非包括八个字节的数据块)。总之,本发明的编码方案并不局限于10G以太网或10X光纤信道,而是可以应用到各种不同的传输方案和协议之中。因此,本发明的编码方案可以被连接多种数据传输设备之中的任何一种的分块编码器所采用。
进一步,要注意的是,本发明的编码方案可以应用于不同的线速率,而不只是64B/66B。因此,本发明的编码方案可以附加多于二位或少于二位的同步报头。
总之,本发明的各种实施例允许:(a)接收位于未格式化数据块中任何位置的不同类型的多个字符;(b)对至少一种类型的字符进行编码,从而记录其原始位置,提供对其他编码字符的指示和/或提供编码字符的简化表示;(c)对生成的编码块和相应的同步报头全部置乱。
此外,要注意的是,本发明的编码方案产生编码数据块或有效载荷,其包括两个或更多组数据槽保存两种或多种接收数据字符的编码形式。进一步,所述各组数据槽可以被拆解,也可以根据编码器和相应的解码器熟知的任何机制进行填充(如,随机插入、LSB到MSB交替等)。
图5是本发明的解码系统500的示意图,解码系统500提供了已编码K码的自由接收、解码和传输。解码系统500的操作与图2中的编码系统200相配合,可以根据前述的各种不同的编码方案进行修正。
如图5所示,解码系统500包括解置乱器502、同步装置504、解码器506和数据接口508。数据接口508或其部分可以集成在解码器506之中。进一步,将解码系统500的各个组成部件集合在一起,可构成“分块解码器”。解置乱器502接收66比特的完全置乱数据块510。解置乱器502对完全置乱数据块510解置乱以生成编码数据块512。编码数据块512根据表4的右侧被格式化。同步装置504使用编码数据块512提取编码数据块512的时序信息514(例如,帧和比特位置信息)。编码数据块512和时序信息514被进一步送至解码器506。
解码器506使用时序信息514和本发明的编码/解码方案对编码数据块512进行解码。具体来说,编码数据块512被解码,产生根据表4左侧进行格式化的数据块516。64比特的编码数据同时伴随着八比特的相应控制数据518。数据块516和相应的控制数据518被送至数据接口508进行传输(如通过数据传输线)。
本发明的解码方案并不局限于图5所列举的实施例。根据本发明的指导,本领域的一般技术人员显而易见可知,对包括位于接收的置乱编码数据块的任何位置的至少两种不同类型的字符的数据进行自由解码以产生解码数据块的其它实施例和操作步骤也位于本发明的保护范围内。特别要注意的是,上文所述的各种不同的编码方案也适用于结合图5所述的解码方案。
尽管前面已经描述了本发明的各个实施例,但是要知道所述实施例只是作为示例而不能作为限定。各种形式和细节的变化对本领域的一般技术人员来说将是显而易见的,并不超出本发明的思想和范围。因此,本发明将仅根据权利要求及其等效形式进行定义。