新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的8B10B编解码设计

基于FPGA的8B10B编解码设计

作者:时间:2011-05-30来源:网络收藏

摘要:为提高8B/10B的工作速度和简化逻辑方法,提出一种基于FPGA的8B/10B系统设计方案。与现有的8B/10B方案相比,该方案是一种利用FPGA实现8B/lOB编解码的模块方法,接收模块在收到外部发送的并行数据时,通过直接查找映射的方法转换成利于传输的串行信号。串行信号经串并行转换模块,将数据经10B/8B解码模块解码还原成原始数据。为了更好实现数据的传输,系统加入了极性偏差RD控制。结果表明,该8B/10B编解码系统设计方案传输数据稳定,满足设计要求。
关键词:串行数据传输;8B/lOB编解码;极性偏差(RD);VHDL

随着通信技术的发展,在复杂的电磁环境下正确传输数据受到人们的关注,因此性能优异的光纤通讯越来越受到青睐,而误码率要满足设计需求,关键在于串行传输数据所选用的编码方法。
8B/10B编解码技术是主流传输标准的编解码技术之一,广泛应用于高速串行标准中,例如光纤通道1、PCI-Express、串行ATA、1394b等。8B/10B编解码技术设定传输数据流拥有连续“l”或连续“0”不能超过5个,保证传输的直流成分接近0,基线漂移减至最小,避免因接收端时钟漂移或同步丢失而引起数据丢失。8B/10B编码方法具有DC补偿功能,能够保证链路中不随着时间推移而出现DC偏移。这使得信号的转换不会因电压位阶的关系造成信号错误。8B/10B编码采用冗余方式,将8位的数据和一些特殊字符按照特定的规则编码成10位的数据,根据这些规则,能检测出传输过程中发生错误的信息。通过以上各种措施,8B/10B编码方式能够确保数据在高速传输过程中正确传送和识别。
因此这里提出一种利用FPGA实现8B/lOB编解码系统设计方案。

1 系统设计总体设计
1.1 系统设计结构
该系统是基于FPGA设计的8B/10B编解码器,首先系统接收外部发送的8B并行数据,在8B/10B编码模块中完成编码后,再通过10B数据并串转换模块生成利于传输的10B串行信号。这样8B/10B编码模块和10B并串转换模块构成8B/lOB编码器。编码端发送的10B串行信号经过传输线路传输后被lOB数据串并行转换模块所接收,转换完成的10B并行数据再通过1OB/8B解码模块解码完成后即是还原后的原始数据。这样lOB串行数据到10B并行数据转换模块和1OB/8B解码模块就构成了1OB/8B解码器。图1为系统设计框图。


1.2 设计方案
8B/10B编解码器通常有两种设计方法:一种是用查找表直接将8位信号映射成lO位信号,该方法是采用存储器存储所有可能出现的码组,再将输入码组转换为存储地址,找出对应的编解码。这种方法逻辑简单,开发时间很短;另一种是通过逻辑运算直接实现编解码功能,其优点是明显减小内部使用面积,但逻辑关系复杂。从系统优化考虑把1节8 bit字节拆分成3 bit和5 bit,然后在极性偏差RD(running dis-
parity)控制器的控制下以并列方式编解码。这种方法的组合逻辑实现可以简化码表,减小电路板的面积,有效提高编码工作速度,同时由于电路板的面积减小,功耗显著降低。这里采用第1种方法,同时结合第2种方法的设计思路。

2 系统软件程序设计
2.1 8B/10B编码模块

2.2 10B并串转换模块
该模块主要完成10B并行数据到lOB串行数据的转换功能,lOB串行数据的数据格式为:l bit低电平起始位、10 bit数据位、l bit高电平停止位、2 bit高电平数据空码。生成一个完整的10B串行数据包含4个状态,生成起始位、转换10 bit数据位、生成停止位、生成数据空码。
2.3 10B串并行转换模块
该模块主要完成10B串行信号到10B并行信号的转换,10B信号的串并转换模块主要是要从14 bit的串行信号中挑出10 bit的有效数据位,过程中首先要判断起始位(而不是任意一个低电平),然后采集10 bit的有效数据位,完成后等待下一个起始位。程序同样是通过状态机来实现整个过程的流通。
2.4 10B/8B解码模块
解码模块根据系统要求可分为6B/5B解码模块、4B/3B解码模块和误码检测模块。解码模块相对编码模块而言逻辑过程要简单的多,该模块首先将10 bit信号分割成4 bit和6bit两部分(高低位必须和编码端对应),然后4 bit和6 bit数据根据编码列表分别解码成3 bit和5 bit,在解码过程中判断是否有误码产生有则报错,无则并行输出。图4给出了1OB/8B解码模块的逻辑框图和程序设计流程如图4所示。

3 系统仿真结果分析
待完成整套的8B/10B编解码器模块连接后,对整体程序进行仿真验证,其结果如图5所示,其中clkl为编码和解码模块的时钟引脚,elk2为1OB串并转换和10B并串转换模块的时钟引脚,rst为整个系统的异步复位引脚,datin[7..0]为待传输的8 bit并行数据,datout[7..0]为传输完成的8 bit并行数据,error为解码端误码检测报警引脚,wrong为编码端出错报警引脚。还有3个引脚是系统不必要的但是为方便调试而引出的,outl[9..0]为10B串并转换完成的10B并行信号,out3为10B并串转换完成的10B串行信号,out2[9..0]为8B/10B编码完成的10B并行信号。


由图5可看出:输入数据datin为“10101110”,经过8B/10B编码完成的数据out2为“0111001010”,8B/10B编码模块出错报警引脚为“0”,10B并串转换输出的串行数据out3为“00111001010111”,10B串并转换输出的并行数据outl为“0111001010”,1OB/8B解码完成的输出数据datout为“10101llO”,结合整个系统的工作过程和编码列表不难看出系统正确的完成了编码和解码的功能,能满足设计任务的需要。

4 结束语
本文提出一种利用FPGA实现8B/10B编码和10B/8B解码设计的方法,介绍了8B/10B编解码技术,实现了8B/10B的正常编解码和接口串并、并串转换的设计,在FPGA的控制下能实现数据的传输,满足了实际设备中所提出的要求。



关键词: 编解码 8B10B

评论


相关推荐

技术专区

关闭