资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
基于基于 FPGA 的的 8B10B 编解码设计编解码设计摘要:为提高 8B10B 编解码的工作速度和简化逻辑方法,提出一种基于 FPGA 的 8B10B 编解码系统设计方案。与现有的 8B10B 编解码方案相比,该方案是一种利用 FPGA 实现 8BlOB 编解码的模块方法,接收模块在收到外部发送的并行数据时,通过直 接查找映射的方法转换成利于传输的串行信号。串行信号经串并行转换模块,将数据经 10B8B 解码模块解码还原成原始数据。为了更好实现数据的传输,系统加入了极性偏差 RD 控制。结果表明,该 8B10B 编解码系统设计方案传输数据稳定,满足设计要求。随着通信技术的发展,在复杂的电磁环境下正确传输数据受到人们的关注,因此性能优 异的光纤通讯越来越受到青睐,而误码率要满足设计需求,关键在于串行传输数据所选用 的编码方法。8B10B 编解码技术是主流传输标准的编解码技术之一,广泛应用于高速串行标准中, 例如光纤通道 1、PCI-Express、串行 ATA、1394b 等。8B10B 编解码技术设定传输数 据流拥有连续“l”或连续“0”不能超过 5 个,保证传输的直流成分接近 0,基线漂移减至最小, 避免因接收端时钟漂移或同步丢失而引起数据丢失。8B10B 编码方法具有 DC 补偿功能, 能够保证链路中不随着时间推移而出现 DC 偏移。这使得信号的转换不会因电压位阶的关 系造成信号错误。8B10B 编码采用冗余方式,将 8 位的数据和一些特殊字符按照特定的 规则编码成 10 位的数据,根据这些规则,能检测出传输过程中发生错误的信息。通过以 上各种措施,8B10B 编码方式能够确保数据在高速传输过程中正确传送和识别。 因此这里提出一种利用 FPGA 实现 8BlOB 编解码系统设计方案。1 系统设计总体设计 11 系统设计结构该系统是基于 FPGA 设计的 8B10B 编解码器,首先系统接收外部发送的 8B 并行数 据,在 8B10B 编码模块中完成编码后,再通过 10B 数据并串转换模块生成利于传输的 10B 串行信号。这样 8B10B 编码模块和 10B 并串转换模块构成 8BlOB 编码器。编码 端发送的 10B 串行信号经过传输线路传输后被 lOB 数据串并行转换模块所接收,转换完成 的 10B 并行数据再通过 1OB8B 解码模块解码完成后即是还原后的原始数据。这样 lOB 串行数据到 10B 并行数据转换模块和 1OB8B 解码模块就构成了 1OB8B 解码器。图 1 为系统设计框图。12 设计方案8B10B 编解码器通常有两种设计方法:一种是用查找表直接将 8 位信号映射成 lO 位 信号,该方法是采用存储器存储所有可能出现的码组,再将输入码组转换为存储地址,找 出对应的编解码。这种方法逻辑简单,开发时间很短;另一种是通过逻辑运算直接实现编 解码功能,其优点是明显减小内部使用面积,但逻辑关系复杂。从系统优化考虑把 1 节 8 bit 字节拆分成 3 bit 和 5 bit,然后在极性偏差 RD(running dis- parity)控制器的控制下以并列方式编解码。这种方法的组合逻辑实现可以简化码表,减小 电路板的面积,有效提高编码工作速度,同时由于电路板的面积减小,功耗显著降低。这 里采用第 1 种方法,同时结合第 2 种方法的设计思路。2 系统软件程序设计 21 8B10B 编码模块8B10B 编码模块是整个系统主体部分之一,该模块在逻辑上又分成 3B4B 编码模块、 5B6B 编码模块、RD 控制模块等 3 部分,如图 2 所示。编码器首先将接收到的 8B 数据 分成 3 bit 和 5 bil 两部分,然后分别编码成 4 bit 和 6 bit,编码完成的 4 bit 和 6 bit 再按顺 序组合成 lOB 码。整个系统首先将 3 bit 编码成 4 bit,RD 控制器读出 4 bit 数据的 RD 值, 然后反馈控制 5B6B 编码模块选择合适的编码。最终 RD 控制器判断 10B 数据的 RD 值, 若满足要求则输出,否则将报错。系统采用的编码列表主要包括以下 4 种编码:1)“1”和“0”相邻的完美平衡代码 例如,通过查找 3B 到 4B(简称 3B4B 表)与 5B 到 6B 编码表(简称 5B6B 表)可知,如编码“1001”与编码“010101”,该类编码的 RD 值为 0 而且 与其他任何形式的代码组合都不会出现 RD 值超过2 或者连续的“0”“1”超过 3 个的情况, 所以该类代码采用一对一的关系。2)“l”和“O”有间隔的完美平衡代码 例如,3B4B 表的编码-3“1100”和“0011”与 5B6B 表编码-7“111000”和“000111”,该类编码的 RD 值为 O,与其他代码组合不会出现 RD 值 超过2 的情况,但是会出现过多的连续“0”“l”的情况。所以该类代码采用一对二的关系。例 如 5B6B 表的编码-7,如果采用“111000”和 4B 码末位为“1”的代码组合就会出现连续的 “1”超过 3 的情况,此时就应该采用“000-111”来避免该情况的发生。3)“l”和“0”有间隔的不平衡代码 例如 3B4B 表的编码 4-“0100”和“1011”、“0010”和 “110l”,5B 到 6B 编码表的编码 4-“110-101”和“001010”,该类编码的 RD 值是+2 或者-2, 与其他代码组合有可能出现 RD 值为4 的情况,所以该类代码也采用一对二的关系。例如 5B6B 表的编码 4,如果与 RD 值为+2 的 4B 代码组合时就采用 RD 值为-2 的“001010” 代码,反之与 RD 值为-2 的 4B 代码组合时就采用 RD 值为+2 的“110101”代码。如果与 RD 值为 0 的代码组合时就随意采用一个代码即可。4)3 个连续“1”或“O”的不平衡代码 例如 3B4B 表的编码 7-“0001”“lll0”“1000”“0111”, 该类代码与其他代码组合时的 RD 值问题同于第三类代码的处理方法,为了防止更多连续 “l”或“0”出现,提供了 4 种代码选择,结合具体情况特殊考虑。通过上述对编码代码列表的讨论,不难看出在实际的程序设计中需要避免如下 3 种情况 出现:RD 值为+2 的 4B 代码和 RD 值为+2 的 6B 代码组合;RD 值为-2 的 4B 代码和 RD 值为-2 的 6B 代码组合;连续 4 个或 4 个以上的“0”“l”的代码。前两种情况可通过代码分组4B 和 6B 代码,轮流选择 6B 和 4B 代码的方法,该方法可以通过状态机实现。程序流程 如图 3 所示。22 10B 并串转换模块该模块主要完成 10B 并行数据到 lOB 串行数据的转换功能,lOB 串行数据的数据格式 为:l bit 低电平起始位、10 bit 数据位、l bit 高电平停止位、2 bit 高电平数据空码。生成一 个完整的 10B 串行数据包含 4 个状态,生成起始位、转换 10 bit 数据位、生成停止位、生 成数据空码。 23 10B 串并行转换模块该模块主要完成 10B 串行信号到 10B 并行信号的转换,10B 信号的串并转换模块主要 是要从 14 bit 的串行信号中挑出 10 bit 的有效数据位,过程中首先要判断起始位(而不是任 意一个低电平),然后采集 10 bit 的有效数据位,完成后等待下一个起始位。程序同样是通过状态机来实现整个过程的流通。 24 10B8B 解码模块解码模块根据系统要求可分为 6B5B 解码模块、4B3B 解码模块和误码检测模块。 解码模块相对编码模块而言逻辑过程要简单的多,该模块首先将 10 bit 信号分割成 4 bit 和 6bit 两部分(高低位必须和编码端对应),然后 4 bit 和 6 bit 数据根据编码列表分别解码 成 3 bit 和 5 bit,在解码过程中判断是否有误码产生有则报错,无则并行输出。图 4 给出 了 1OB8B 解码模块的逻辑框图和程序设计流程如图 4 所示。 3 系统仿真结果分析待完成整套的 8B10B 编解码器模块连接后,对整体程序进行仿真验证,其结果如图 5 所示,其中 clkl 为编码和解码模块的时钟引脚,elk2 为 1OB 串并转换和 10B 并串转换 模块的时钟引脚,rst 为整个系统的异步复位引脚,datin7.0为待传输的 8 bit 并行数据, datout70为传输完成的 8 bit 并行数据,error 为解码端误码检测报警引脚,wrong 为 编码端出错报警引脚。还有 3 个引脚是系统不必要的但是为方便调试而引出的,outl9.0 为 10B 串并转换完成的 10B 并行信号,out3 为 10B 并串转换完成的 10B 串行信号, out29.0为 8B10B 编码完成的 10B 并行信号。由图 5 可看出:输入数据 datin 为“10101110”,经过 8B10B 编码完成的数据 out2 为 “0111001010”,8B10B 编码模块出错报警引脚为“0”,10B 并串转换输出的串行数据 out3 为“00111001010111”,10B 串并转换输出的并行数据 outl 为“0111001010”, 1OB8B 解码完成的输出数据 datout 为“10101llO”,结合整个系统的工作过程和编码列表 不难看出系统正确的完成了编码和解码的功能,能满足设计任务的需要。4 结束语本文提出一种利用 FPGA 实现 8B10B 编码和 10B8B 解码设计的方法,介绍了 8B10B 编解码技术,实现了 8B10B 的正常编解码和接口串并、并串转换的设计,在 FPGA 的控制下能实现数据的传输,满足了实际设备中所提出的要求。8b/10b 编码是目前许多高速串行总线采用的编码机制,如编码是目前许多高速串行总线采用的编码机制,如 1394b、Serial ATA、PCI Express、Infini-band、Fiber Channel、RapidIO 等总线或网络,都是等总线或网络,都是 8b/10b 编码的拥护编码的拥护 者。者。8b/10b 编码方式早在编码方式早在 1983 年就被提出,现在则成为主流传输标准选用年就被提出,现在则成为主流传输标准选用 的编码技术,的编码技术, 本文将探究其优点,并详细介绍本文将探究其优点,并详细介绍 8b/10b 编码重要的三大观念。编码重要的三大观念。 以映射机制将 8 位转为 10 位字码8b/10b 编码是目前高速数据传输接口或总线常用的编码方式,该编码技术的基本精神 很简单,就是将 8 个位经过映射的机制转化为 10 个位的字 码,但是平衡了位流中 0 与 1 的数量,这就是 8b/10b 编码的根本目的“直流平衡(DC Balance)”。当高速串行流的逻 辑 1 或逻辑 0 有多个位没有产生变化时,信号的转换就会因为电压位阶的关系而造成信号 错误,直流平衡的最大好处便是可 以克服以上问题。80 年代 IBM 发表该论文时,正是预期到光纤技术的应用实现而针对高速局域网以及计 算机链接所研发的传输码。事隔多年,8b/10b 编码竟摇身一变成为高速串行总线的主要编 码方式,这也许是当时所始料未及的。8b/10b 编码方式存在着一个极为有趣的特色,其总输出位数是 10 个位,其中位 0 与 位 1 出现的次数总共也仅在三种场合存在,分别为“5 个位 0 与 5 个位 1”、“4 个位 0 与 6 个位 1”、“6 个位 0 与 4 个位 1”。有一个 8b/10b 编码的技术专用语“不均等性(Disparity)”,其涵义就是指 10 个位 中位 0 与位 1 出现次数的差。换句话说, 8b/10b 编码的“Disparity
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号