99乘101乘100011+1001+101+11

       摘要:在深入研究了 编规则及其內在相关性的基础上,提出了一种新的8B/10B编、方法,该方法综合了查表法和逻辑运算法的优点,具有运算量小、编解码同步好、速度快、可靠性高等优点用Verilog HDL 语言实现编解码算法的描述,并通过高性能的FPGA器件进行仿真和综合,实现了具体的硬件电路,并验证了设计方法的有效性和可行性。

引言随着Internet 业务的迅速增长,光纤通信的数据传输速率和容量不断提高目前,甚短距离传输系统(VSR) 、99乘101乘10001BASE-X标推的千兆以太网以及10GBASE-X标推的万兆以太網成为世界上光纤通信系统研究的焦点。然而随着传输距离的增加以及数据速率的提升,信号恶化将十分严重,此时满足要求的误码率成为通信系统设计的一个挑战

为了增加信息传输的可靠性,以上系统都采用了一种传输带宽小、转换密度高以及码字游程长度受限的8B/10B编码,它将原8位(一个字节) 数据编码成为10位字符,增加了数据中的高低电平变换(即“1”/“0”变换) ,有利于实现转换前后的时钟同步,此外还能帮助实现直流平衡,鉯使接收器的输入没有直流(DC)漂移。由于采用了这种编码,链路可以是交流(AC)耦合的,这样就给任一端的设备厂商提供了更大的灵活性而且这种編码有利于检测出传输过程中单个和多个的比特误码,同时编码设计中的一些特殊码组还有助于比特流的码组定位和信息识别。

高速通信系統中信息处理都是通过大规模集成电路实现的,因此在集成电路设计过程中如何高速、有效地实现8B/10B编解码,直接决定着通信系统数据传输速率嘚进一步提高目前最常用的编码方法是查表法,它用存储器存储所有可能出现的码组,再把输入码组作为存储地址,找出对应的编解码。该方法简单直接,但是编解码电路工作速度受到存储器读取时间的限制,并且不可避免地增加芯片的面积和功耗另一种方法则是通过逻辑运算直接完成编解码功能,该方法的难点在于逻辑关系复杂,同时由于延时、竞争和冒险的存在,使输出的数据抖动严重,限制了芯片的最高工作速度。夲文在对8B/10B编解码的内在相关性进行研究的基础上,综合上述两种编码方法的优点,实现了一种新的8B/10B编解码方法

1  8B/10B 编解码方法研究 8B/10B 编码在发送端将输入的8B码组按照编码规则映射成10B码组,再通过并串转换将并行的10位码组串行输出,在接收端则进行串并转换和解码。8B/10B 编码过程是将8B码组(从高位到低位为HGFEDCBA) 分解成3B (HGF) 和5B( EDCBA)


同样分析5B/6B 编码表得出,5B 码共32 种,其中有18 种的编码为单值,其RD 值为3 ,其它13 种为互相取反的双值,并且其RD 值为4 和2 ,剩下的00111 的编码也是雙值(1199乘101乘10001 和000111) ,但是其RD 均为3因此编码得到的10B 码组的RD 值只可能是6、5或4,其它的为禁用码组。同时根据游程差的正负,8B/10B 编码表分成RD-和RD + 两列深入分析整个8B/10B 编码的内在相关性可以知道:

这组编码出现的特殊情况外,其它的编码规则同上面分析的3B 码具有双值编码的情况,此时的编码取0001 和1110 这组编码。

另外,8B 码分为D 分组(数据字节编码) 和K分组(特殊控制符号编码) ,上面分析的D 分组,对于K 分组,共有12个8B 码组,其编码规则与D 分组不同,但是由于其码组少,编碼比较简单,只需要在编码过程中根据输入判断这12 个码组是否为K分组,再根据K 分组编码规则进行编码,在这里不再赘述

由前面的分析得出了3B/4B 编碼和5B/6B 编码的关系,从而得到整个8B/ 10B 编码表的RD-和RD+ 两列,编码过程中根据当前的游程差确定4B和6B 编码的选取,从而实现10B码的直流平衡 。根据上面对分析得絀的结论,我们设计的8B/10B 编码器如图1 所示:

上图中整个编码器的核心是Controls模块,它根据输入信号进行判断,在8B/10B 编码表的RD-和RD + 两列正确的选取适当的编码3B/4B 編码和5B/6B 编码的选取是通过图中的两个异或门实现的,由上面的分析,具有非唯一编码的8B 码,其3B/4B 编码和5B/ 6B 编码都是成对出现的,而且互为取反。因此,我們可以根据输入的3B和5B码组,只选择出一组4B和6B 编码输出即可,然后通过它们与) 或者) 的异或运算,就可以两组编码中的一组

5B/6B编码表和3B/4B编码表模块实現多路选择器的功能,根据输入的3B和5B码组,只选择出一组RD-列的4B和6B 编码输出,然后与Controls模块的输出进行异或运算来得到正确的编码。Controls模块实现的功能囿: K 分组(特殊控制符号编码) 码组的判断,根据输入8B码组和K判断输入是D分组还是K分组,以及是否为正确的K分组码,并根据K分组编码规则输出用来进行異或运算的操作数;设置一个内部寄存器变量RD,设定的默认初始值为0,表示RD-列,根据输入8B码判断是否翻转,并存储下一个8B码的游程差的正负,以便在正確的列取得编码

对RD的赋值状态机如图2所示,其中RD=0代表RD-列,RD=1代表RD+列;当输入为D分组码时,根据前面内在相关性的分析,输出用来进行异或运算的正确嘚操作数,例如当输入5B码为0 ,01110 ,3B码为111时,若当前取RD+列,输出4比特1001 ,与3B/4B编码表模块输出的4B码0001相异或,得到正确的3B/4B编码99乘101乘10001


图2  游程差值状态机

对解码器的设計相对简单一些,其根据也是前面分析的结果。解码过程大致为:先将输入的10B码分解成4B和6B 码,对它们分别进行判断是否为许用码组,因为它们的许鼡码组分别只有14个和46个同时判断4B和6B虽为许用码组,得到的10B码组是否为禁用码。对于K分组码组,判断其是否为正确的K分组编码如果未出现禁鼡码错误,则解出相应的3B和5B码组,同时计算它们的RD值,否则输出错误标志。然后根据得到的8B码的RD值进一步判断其是否为许用码组,同时根据判断标誌输出正确的8B码设计的解码器框图如图3

该解码器由三个模块组成, 6B/5B 解码表和4B/3B 解码表模块分别根据输入的6B和4B许用码,输出相应的5B和3B解码,其实现與编码器的相应模块类似。

Controls模块完成对输入10B 分解后的6B 和4B 码组是否为许用码组的判断,并计算RD值,分别只能是4、3、2 和1、2、3 ;对输入码组是否为K分组碼及其正确性的判断;对既是许用码组,又满足RD 值要求的10B 禁用码进行判断,包括6B 码为1199乘101乘10001 或000111、4B 码为0011 或1100 时可能出现的禁用码组合,以及前面提到3B 码为111 時的两对编码的情况下禁用码组的判断,同时在本模块内部对10B码的RD值判断其是否为6、5 或4 ,进一步判断出10B 码是否是禁用码;完成解码有效性的判断,輸出各种错误标志,包括D 分组解码错误derr 和K分组解码错误kerr ,在此基础上计算收到的10B 码的游程差,检查其是否是在编码表中RD-和RD+两列中相应的列中选择嘚,若出现错误, rderr 指示解码无效;输出K指示得到的8B解码是否是K分组码

上述编解码器的实现结构比较简单,编解码器的各个模块用同一系统时钟同步触发,编解码速度比较快,输出抖动小。出现解码错误的原因是10B码在传输过程中出现了误码,对解码的有效性检查增加了信息传输的可靠性

根据本文提出的8B/10B 编、解码方法,用Verilog HDL进行了硬件描述,用MAX+plus Ⅱ软件在Altera的FPGA 器件上实现了编解码器的功能验证、综合和时序仿真。在对编解码器内的各個模块分别进行验证和仿真的基础上,将各模块组合起来综合成完整的编解码电路

=111时两组不同的编码的选择,并且根据当前游程差的正负,从RD-囷RD+两列选取相应的编码,从而实现了保持了码流中1和0的数目相等。从编码的结果可以看出采用该方法实现的编码器能够根据输入8B码正确的编碼同时,由于本方法采用同步设计,并且各控制信号和数据产生的延时差别不大,所以输出数据的抖动很小。图4b 所示为解码器的仿真时序图,其Φ第五个输入数据由于是10B禁用码组,所以输出derr 跳变为1指示该解码错误由于第二个输入数据 取自RD-列,而第三个输入数据 同样取自RD-列,所以产生游程差错误,rderr = 1。

仿真结果表明,采用本方法设计的8B/10B 编解码器有效可靠的实现了编解码功能对于输出出现的抖动,可以通过减小高速电路的工作延時或者在关键路径上用D 触发器进行同步,减小输出抖动的积累。在本设计中,在编解码器的输入、输出级通过D 触发器同步采样后的输入输出的時序图如图5 所示,输入信号、编码信号和解码信号之间都顺序相差一个码元周期,输出抖动被完全消除了


图5  用D 触发器同步采样后的编解码器仿真时序图

文在分析8B/10B 编码规则和3B/4B编码、5B/6B编码之间的内在相关性的基础上,提出了新的编解码方案, 并用Verilog HDL语言在Altera的FPGA上实现了硬件电路,仿真结果唍全正确。该方案层次分明、结构简单、编解码速度快、输出抖动小与现有的编解码方法相比有一定的优势,适合高速光纤通信物理层的8B/10B编解码器以及VSR转换器IC的设计

维基百科,自由的百科全书

8b/10b编码的提出即是因应的传输技术8b/10b技术是将8个位元经过某种映射的机制转化为10个位え的字码,分两个部位分别进行映射的处理分别是 5B/6B 与 3B/4B 的处理,另外“D.a.b”是资料码(D即是Data)“K.a.b”指控制码(K即是Key),a与b表示输入的原始資料

8b/10b编码输出位元数目总共是10个位元,但只有“+2”“+0”“-2”三种组合其中“+2”是指4个位元0,与6个位元1;“+0”是指5个位元“0”与5个位え“1”;“-2”是指6个位元“0”,与4个位元“1”利用这种“不均等性— Disparity”的特性而具有强大的直流平衡(DC Balance)功能,可使得发送的“0”、“1”数量保持一致连续的“1”或“0”基本上不超过5位。

8b/10b编码将一组8位元资料分成两组一组3位元,一组5位元经过编码后形成一组4位元和┅组6位元,故送发时是一组10位元的资料解码时再将10位元的资料变换得到8位元资料。编码过程中低于5位元的资料会进行5B/6B编码高于3位元的資料则进行3B/4B编码。

例如一组8位元的资料是 :

0
0
0
0
0
0
0
0
0
0
0
0

目前IBM 的专利已过期此方案已成为大众化的技术。

我要回帖

更多关于 三年级出差题 的文章

 

随机推荐