新闻中心

EEPW首页>EDA/PCB>设计应用> 基于FPGA的8B/10B编解码设计

基于FPGA的8B/10B编解码设计

作者: 时间:2010-08-06 来源:网络 收藏


8B/编码模块是整个系统主体部分之一,该模块在逻辑上又分成3B/4B编码模块、5B/6B编码模块、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值,然后反馈控制5B/6B编码模块选择合适的编码。最终RD控制器判断数据的RD值,若满足要求则输出,否则将报错。系统采用的编码列表主要包括以下4种编码:
1)“1”和“0”相邻的完美平衡代码 例如,通过查找3B到4B(简称3B/4B表)与5B到6B编码表(简称5B/6B表)可知,如编码“1001”与编码“010101”,该类编码的RD值为0而且与其他任何形式的代码组合都不会出现RD值超过±2或者连续的“0”“1”超过3个的情况,所以该类代码采用一对一的关系。
2)“l”和“O”有间隔的完美平衡代码 例如,3B/4B表的编码-3“1100”和“0011”与5B/6B表编码-7“111000”和“000111”,该类编码的RD值为O,与其他代码组合不会出现RD值超过±2的情况,但是会出现过多的连续“0”“l”的情况。所以该类代码采用一对二的关系。例如5B/6B表的编码-7,如果采用“111000”和4B码末位为“1”的代码组合就会出现连续的“1”超过3的情况,此时就应该采用“000-111”来避免该情况的发生。
3)“l”和“0”有间隔的不平衡代码 例如3B/4B表的编码4-“0100”和“1011”、“0010”和“110l”,5B到6B编码表的编码4-“110-101”和“001010”,该类编码的RD值是+2或者-2,与其他代码组合有可能出现RD值为±4的情况,所以该类代码也采用一对二的关系。例如5B/6B表的编码4,如果与RD值为+2的4B代码组合时就采用RD值为-2的“001010”代码,反之与RD值为-2的4B代码组合时就采用RD值为+2的“110101”代码。如果与RD值为0的代码组合时就随意采用一个代码即可。
4)3个连续“1”或“O”的不平衡代码 例如3B/4B表的编码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所示。



关键词:FPGA10B编解码

评论


相关推荐

技术专区

关闭