一种新的8b_10b编解码硬件设计方法

上传人:j****9 文档编号:45430227 上传时间:2018-06-16 格式:DOC 页数:13 大小:118KB
返回 下载 相关 举报
一种新的8b_10b编解码硬件设计方法_第1页
第1页 / 共13页
一种新的8b_10b编解码硬件设计方法_第2页
第2页 / 共13页
一种新的8b_10b编解码硬件设计方法_第3页
第3页 / 共13页
一种新的8b_10b编解码硬件设计方法_第4页
第4页 / 共13页
一种新的8b_10b编解码硬件设计方法_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《一种新的8b_10b编解码硬件设计方法》由会员分享,可在线阅读,更多相关《一种新的8b_10b编解码硬件设计方法(13页珍藏版)》请在金锄头文库上搜索。

1、一种新的一种新的 8B/10B 编解码编解码 硬件设计方法硬件设计方法摘要:在深入研究了 8B/10B 编码规则及其内在相关性的基础上,提出了一种新的8B/10B 编、解码方法,该方法综合了查表法和逻辑运算法的优点,具有运算量小、编解码同步好、速度快、可靠性高等优点。用 Verilog HDL 语言实现编解码算法的描述,并通过高性能的 FPGA 器件进行仿真和综合,实现了具体的硬件电路,并验证了设计方法的有效性和可行性。 关键词:8B/10B 码, 编码, 解码, 光纤通信, 集成电路 引言引言随着 Internet 业务的迅速增长,光纤通信的数据传输速率和容量不断提高。目前,甚短距离传输系统

2、(VSR) 、1000BASE-X 标推的千兆以太网以及10GBASE-X 标推的万兆以太网成为世界上光纤通信系统研究的焦点。然而随着传输距离的增加以及数据速率的提升,信号恶化将十分严重,此时满足要求的误码率成为通信系统设计的一个挑战。为了增加信息传输的可靠性,以上系统都采用了一种传输带宽小、转换密度高以及码字游程长度受限的 8B/10B编码,它将原 8 位(一个字节) 数据编码成为 10位字符,增加了数据中的高低电平变换(即“1”/“0”变换) ,有利于实现转换前后的时钟同步,此外还能帮助实现直流平衡,以使接收器的输入没有直流(DC)漂移。由于采用了这种编码,链路可以是交流(AC)耦合的,这

3、样就给任一端的设备厂商提供了更大的灵活性。而且这种编码有利于检测出传输过程中单个和多个的比特误码,同时编码设计中的一些特殊码组还有助于比特流的码组定位和信息识别。 高速通信系统中信息处理都是通过大规模集成电路实现的,因此在集成电路设计过程中如何高速、有效地实现8B/10B 编解码,直接决定着通信系统数据传输速率的进一步提高。目前最常用的编码方法是查表法,它用存储器存储所有可能出现的码组,再把输入码组作为存储地址,找出对应的编解码。该方法简单直接,但是编解码电路工作速度受到存储器读取时间的限制,并且不可避免地增加芯片的面积和功耗。另一种方法则是通过逻辑运算直接完成编解码功能,该方法的难点在于逻辑

4、关系复杂,同时由于延时、竞争和冒险的存在,使输出的数据抖动严重,限制了芯片的最高工作速度。本文在对 8B/10B 编解码的内在相关性进行研究的基础上,综合上述两种编码方法的优点,实现了一种新的 8B/10B 编解码方法。 1 8B/10B 编解码编解码方法研究方法研究 8B/10B 编码在发送端将输入的 8B 码组按照编码规则映射成10B 码组,再通过并串转换将并行的 10 位码组串行输出,在接收端则进行串并转换和解码。8B/10B 编码过程是将8B 码组(从高位到低位为 HGFEDCBA) 分解成 3B (HGF) 和 5B( EDCBA) ,分别进行3B/4B 编码和 5B/6B编码,最后

5、组成 10B 码组(从低位到高位为abcdeifghj)。3B/4B 编码表如表 1 所示: 分析表 1 可以看出,3B 码 000 ,011 ,100 的 4B 编码都有互相取反的两种编码,000 和 100 编码的游程值(RD) 为 1 和 3 ,011 的两种编码的 RD 值均为 2。而 001 ,010 ,101 ,110 的编码则只有一种,其 RD 值为 2。比较特殊的是 111 的编码,它有两组互相取反的编码共 4 种,但是根据 8B/10B 编码表可以看出,1000 和 0111 这组编码分别只出现在5B 码组为 01011 ,01101 ,01110 的 RD + 列和 5B

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

7、3B 码有唯一4B 编码时(001 , 010 , 101 ,110) ,若 5B 码为具有单值编码的码字,则 8B/ 10B 编码表的RD-列和 RD + 列取唯一的 10B 编码,并且其RD 值为 5 ;若 5B 码具有双值编码,则在 RD-列取 RD 值为 4 的 6B 编码,在 RD + 列取 RD 值为 2 的 6B 编码;若5B 码为 00111 ,则在RD-列取 111000 ,在RD +列取 000111。 当 3B 码有双值4B 编码时(000 ,100) ,若5B 码为 18 种具有单值编码的码字,则 4B 编码在 RD-列和 RD+ 列分别取 RD 值为 3 和 1 的编

8、码,3B 码为 011 的情况下则分别取1100 和 0011 ;若 5B 码为 13 种有双值编码的码字时,则在 RD-列和RD+ 列分别取 6B RD 值为 4、4B RD 值为 1 和 6B RD 值为 2、4B RD 值为 3 的编码;若5B 码为 00111 ,3B 码为 000 ,100 ,则在RD-列和 RD + 列分别取 6B 为111000、4BRD 值为3 和 6B 为000111、4B RD 值为1 的编码;若 5B 码为00111 ,3B 码为 011 时,在 RD-列和 RD+列的编码分别111000、1100 和000111、0011。当3B 码为 111 时,由前

9、面分析的 1000 和0111 这组编码出现的特殊情况外,其它的编码规则同上面分析的 3B 码具有双值编码的情况,此时的编码取 0001 和1110 这组编码。 另外,8B 码分为 D 分组(数据字节编码) 和 K 分组(特殊控制符号编码) ,上面分析的 D 分组,对于 K 分组,共有12 个 8B 码组,其编码规则与 D 分组不同,但是由于其码组少,编码比较简单,只需要在编码过程中根据输入判断这 12 个码组是否为 K 分组,再根据 K 分组编码规则进行编码,在这里不再赘述。由前面的分析得出了 3B/4B 编码和5B/6B 编码的关系,从而得到整个 8B/ 10B 编码表的 RD-和 RD+

10、 两列,编码过程中根据当前的游程差确定 4B 和6B 编码的选取,从而实现 10B 码的直流平衡 。根据上面对分析得出的结论,我们设计的8B/10B 编码器如图 1 所示: 图 1 8B/ 10B 编码器框图 上图中整个编码器的核心是 Controls 模块,它根据输入信号进行判断,在 8B/10B 编码表的 RD-和 RD + 两列正确的选取适当的编码。3B/4B 编码和 5B/6B 编码的选取是通过图中的两个异或门实现的,由上面的分析,具有非唯一编码的 8B 码,其3B/4B 编码和 5B/ 6B 编码都是成对出现的,而且互为取反。因此,我们可以根据输入的 3B 和5B 码组,只选择出一组

11、4B 和 6B 编码输出即可,然后通过它们与 0000 (000000) 或者 1111 (111111) 的异或运算,就可以两组编码中的一组。 5B/6B 编码表和3B/4B 编码表模块实现多路选择器的功能,根据输入的 3B 和 5B 码组,只选择出一组 RD-列的4B 和 6B 编码输出,然后与 Controls 模块的输出进行异或运算来得到正确的编码。Controls 模块实现的功能有: K 分组(特殊控制符号编码) 码组的判断,根据输入 8B 码组和 K判断输入是 D 分组还是K 分组,以及是否为正确的 K 分组码,并根据 K分组编码规则输出用来进行异或运算的操作数;设置一个内部寄存器

12、变量 RD,设定的默认初始值为 0,表示 RD-列,根据输入 8B 码判断是否翻转,并存储下一个 8B码的游程差的正负,以便在正确的列取得编码。对 RD 的赋值状态机如图 2 所示,其中RD=0 代表 RD-列,RD=1 代表 RD+列;当输入为 D 分组码时,根据前面内在相关性的分析,输出用来进行异或运算的正确的操作数,例如当输入 5B 码为 01011 ,01101 ,01110 ,3B码为 111 时,若当前取RD+列,输出 4 比特1001 ,与 3B/4B 编码表模块输出的 4B 码0001 相异或,得到正确的 3B/4B 编码 1000 ;对于输入的 K 分组禁用码组,输出错误标志

13、 kerr 。根据对编码的需要,Controls 模块输出的 6 比特和 4 比特操作数分别包括000000、111111、000001、111110 和0000、1111、1001、0110。 图 2 游程差值状态机 对解码器的设计相对简单一些,其根据也是前面分析的结果。解码过程大致为:先将输入的10B 码分解成 4B 和 6B 码,对它们分别进行判断是否为许用码组,因为它们的许用码组分别只有14 个和 46 个。同时判断 4B 和 6B 虽为许用码组,得到的 10B 码组是否为禁用码。对于 K 分组码组,判断其是否为正确的 K 分组编码。如果未出现禁用码错误,则解出相应的 3B 和 5B

14、码组,同时计算它们的 RD 值,否则输出错误标志。然后根据得到的 8B 码的 RD值进一步判断其是否为许用码组,同时根据判断标志输出正确的 8B 码。设计的解码器框图如图3 所示。 图 3 8B/10B 解码器框图该解码器由三个模块组成, 6B/5B 解码表和 4B/3B 解码表模块分别根据输入的 6B 和4B 许用码,输出相应的5B 和 3B 解码,其实现与编码器的相应模块类似。Controls 模块完成对输入 10B 分解后的 6B 和 4B 码组是否为许用码组的判断,并计算 RD 值,分别只能是4、3、2 和 1、2、3 ;对输入码组是否为 K 分组码及其正确性的判断;对既是许用码组,又

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

16、 8B 解码是否是K 分组码。 上述编解码器的实现结构比较简单,编解码器的各个模块用同一系统时钟同步触发,编解码速度比较快,输出抖动小。出现解码错误的原因是10B 码在传输过程中出现了误码,对解码的有效性检查增加了信息传输的可靠性。 2 仿真结果与分析仿真结果与分析 根据本文提出的8B/10B 编、解码方法,用 Verilog HDL 进行了硬件描述,用MAX+plus 软件在Altera 的 FPGA 器件上实现了编解码器的功能验证、综合和时序仿真。在对编解码器内的各个模块分别进行验证和仿真的基础上,将各模块组合起来综合成完整的编解码电路。 图 4a 所示为编码器的仿真时序图,输入datain 的顺序为HGFEDBA ,输出dataout 的顺序为abcde-ifghj 。图中所取的值包含了 HGF =111 时两组不同的编码的选择,并且根据当前游程差的正负,从 RD-和 RD+两列选取相应的编码,从而实现了保持了码流中 1 和 0 的数目相等。从编码的结果可以看出采用该方法实现的编码器能够根据输入 8B码正确的编码。同时,由于本方法采用同步设计,并且各控制信号和数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号