首页> 中国专利> 基于8b/10b编码规范的8b/10b编码生成集实现方法

基于8b/10b编码规范的8b/10b编码生成集实现方法

摘要

本发明提供了一种基于8b/10b编码规范的8b/10b编码生成集实现方法,包括:对8b/10b编码码表中的码字进行编码并对编码结果的极性状态进行标记;根据8b/10b编码规范,建立16b/20b编码的游程受限约束关系,形成16b/20b编码的游程受限约束表;对16b/20b编码的游程受限约束表进行查表、翻转和替换操作,完成16b/20b编码。本发明具有逻辑简单开销低、速度快传输带宽高优点;通过将本发明16b/20b编码技术方案的CRD计算提前至编码器之前并增加一级同步延迟时钟,本发明技术方案可推广至32b/40b等更大规模8b/10b编码生成集实现。

著录项

  • 公开/公告号CN105515587A

    专利类型发明专利

  • 公开/公告日2016-04-20

    原文格式PDF

  • 申请/专利号CN201510895144.2

  • 申请日2015-12-07

  • 分类号H03M9/00;

  • 代理机构上海汉声知识产权代理有限公司;

  • 代理人郭国中

  • 地址 200233 上海市嘉定区嘉罗路1485号

  • 入库时间 2023-12-18 15:37:44

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-31

    授权

    授权

  • 2016-05-18

    实质审查的生效 IPC(主分类):H03M9/00 申请日:20151207

    实质审查的生效

  • 2016-04-20

    公开

    公开

说明书

技术领域

本发明涉及数字通讯技术领域,具体地,涉及一种基于8b/10b编码规范的 8b/10b编码生成集实现方法。

背景技术

8b/10b编码制式由IBM在1982年发明,广泛应用于诸如G/XGbps以太网、光纤通 信、服务器网络、FICON、IEEE1394b、InfiniBand等结构中。编码的主要目的是将串行 数据的位发送时钟嵌入到串行位流中,在链路上省去随数据一起发送的时钟信号线,从 而避免高频时钟信号产生的EMI噪声。8b/10b编码器保证发送位流中不会出现含有多于 5个连续的1或0,并且同时保证在任意时间检测尺度内,0或者1数目的差值不会超过 5。8b/10b编码器保证每个10位符号中含有相近的1、0个数,且连同10位符号给出当 前流动差异CRD(currentrunningdisparity)。CRD反映了自从链路初始化以来发送链 路所发送的1和0个数的差异,然后8b/10b编码器根据CRD选取下一个字符的两个10 位编码之一输出,目的是保持被发送的1和0的个数尽可能地接近相等,维持发送信号 上1和0个数的平衡,以此维持信号的直流平均值为信号阀值电压的一半,使接收信号 不含DC成分,减少位间干扰。因为通路信号是通过电容耦合的,如果信号所含DC成分 高,通路耦合电容或内部的线电容被过充电,将会使信号不能从一种逻辑电平正确地切 换到另一种。在具体实现方法上,8b/10b编码是将一组8位数据分解成高5位和低3 位两组数据(假定编码顺序从高位到低位,同数据传输顺序),分别编码为6位和4位的 两组,然后合成为10位的编码,这样做的好处是将编码任务并行化,尽量减少组合逻 辑延时,节省存储器空间,提高编码器性能。除以上提到的数据字编码过程,8b/10b编 码规范还定义了12个特殊控制字符或称为有序集。由于控制字符比较少,可以不采用 分组编码而作为一个整体进行编码。

申请号为200410002290.X的中国专利申请《基于8b/10b编码器的16b/20b编码 器逻辑实现方法》中提到,由于DDR技术的出现,当8b/10b编码方案用于双沿器件时, 会给硬件设计带来困难。具体表现是,双沿工作的8b/10b编码器本质上由两个分别工 作于时钟上升沿和下降沿的单沿8b/10b编码器组合而成。每一个编码器的游程平衡偏 移输出与另一个编码器的游程平衡偏移输入相连,从而实现游程偏移在时间上的相互继 承。实现游程继承的这条连线实际上跨越两相时钟域,成为时序的关键路径。在时钟频 率为100MHz的情况下,这条连线上的信号的送出延迟时间和输入建立时间之和必须小 于5ns,两项操作如果按均分估算则各为2.5ns。2.5ns的建立时间要求在时钟周期为 10ns的情况下明显苛刻,成为关键路径。为了解决这个问题,该中国专利申请提出了一 种基于双8b/10b编码器的16b/20b编码器逻辑实现方法,技术方案是基于已有的8b/10b 编码器(可编程逻辑器件供应商提供的成熟8b/10bIP-core)加一级编码前处理预测单 元,用于提前生成游程平衡偏移以控制8b/10b编码器的游程偏移输入端,实现及时的 正确编码。该中国专利申请同时在文中提到,采取基于已有的8b/10bIP-core,是为了 减少设计开销和降低设计成本。由于该中国专利申请基于已有的8b/10bIP-core,存在 如下缺陷:非完全自主知识产权,核心设计基于IP-core。

发明内容

针对现有技术中存在的上述不足,本发明的目的是提供一种基于8b/10b编码规 范的8b/10b编码生成集实现方法,基于8b/10b编码规范构造新的8b/10b编码生成集 实现技术,提供全新的8b/10b编码生成集实现方案,解决由于DDR技术的出现导致的 时钟频率较难满足问题,解决8b/10b编码游程平衡控制和提高传输带宽之间的矛 盾。

为实现上述目的,本发明是通过以下技术方案实现的。

一种基于8b/10b编码规范的8b/10b编码生成集实现方法,包括如下步骤:

对8b/10b编码码表的码字极性状态进行标记;

根据8b/10b编码规范,建立16b/20b编码的游程受限约束关系,形成16b/20b编 码的游程受限约束表;

对16b/20b编码的游程受限约束表进行查表、翻转和替换操作,完成16b/20b编码。

优选地,所述对8b/10b编码码表码字极性状态进行标记,具体为:

使用rd_current表示码字极性状态;

所述8b/10b数据字编码码表通过5b/6b数据字码表和3b/4b数据字码表实现, 控制字编码则通过一张码表实现,其中:

所述5b/6b数据字码表和3b/4b数据字码表中,rd_current用一位表示;

所述控制字码表中,将8b/10b作为一个整体标记,rd_current用两位表示, 两位中的低位和高位分别表示码字低6位和高4位的极性状态;

当码字中1比0多或者0比1多时,为极性不平衡,标记为1;当码字中0和1 数量相等时,为极性平衡,标记为0。

优选地,所述建立16b/20b编码的游程受限约束关系具体为:

包括如下步骤:

步骤S2.1,对5b/6b数据字码表和3b/4b数据字码表进行并行查表过程;所述 5b/6b数据字码表和3b/4b数据字码表的每一个输入均包括两个可供选择的表项, 其中,5b/6b数据字码表编码结果根据CRD现行状态来选择;3b/4b数据字码表编 码结果除了根据CRD现行状态外,还要根据5b/6b编码结果的极性状态数据字码表 编码后码字中的0和1的个数来选择,进而形成8b/10b编码码表;

步骤S2.2,建立两个8b码字的游程受限约束关系。此游程受限约束关系与CRD 现行状态、待编码数据高8位和低8位的编码结果极性情况有关,探索并建立 16b/20b编码游程受限约束关系,并将这种约束关系建立成16b/20b编码的游程受限 约束表。

优选地,所述16b/20b编码的游程受限约束关系具体为:

记待编码数据为TXD[15:0],控制信息为TXC[1:0];其中,TXC[1:0]中的0 表示8位的TXD是数据字,TXC[1:0]中的1表示8位的TXD是控制字;编码顺序从 高位到低位;编码输出tx_data[19:0];存在如下关系:

rd_ctrl[4:0]=[rd_ind6b_temp_H[6]d4b_temp_H[4]d6b_temp_L[6] d4b_temp_L[4]];

其中:

rd_ctrl[4:0]表示待编码数据的极性状态控制信息;

rd_in表示输入极性,0表示极性为负,1表示极性为正;

d6b_temp_H[6]、d4b_temp_H[4]、d6b_temp_L[6]、d4b_temp_L[4]分别表示输 入高8和低8位数据的5b/6b和3b/4b编码结果的极性状态,所述5b/6b和3b/4b 编码结果的极性状态通过rd_current表项得到;

rd_out通过rd_ctrl[4:0]的5bits数据模2加得到;

控制字码表编码结果的高10位和低10位分别表示为c10b_H[9:0]和 c10b_L[9:0],5b/6b数据字码表的编码结果表示为:d6b_H[5:0]、d6b_L[5:0],3b/4b 数据字码表的编码结果表示为:d4b_H[3:0]、d4b_L[3:0];缺省选择码表中极性为 正的码字,即码表CRD为“-”列;编码结果是否需要翻转表示为reversal_flag, 其中,reversal_flag标记为0表示不翻转,reversal_flag标记为1表示翻转; 遵照8b/10b编码规范,建立16b/20b编码游程受限约束关系。

优选地,所述对16b/20b编码的游程受限约束表进行查表、翻转和替换操作具体 为:

-查表操作,由待编码数据TXD[15:0]和控制信息TXC[1:0]查编码码表得到 rd_ctrl[4:0];

-翻转操作:由rd_ctrl[4:0]和TXC[1:0]得到翻转控制信息reversal_flag, 由TXD[15:0]和TXC[1:0]得到初步的编码结果defaultcodeword。两者做异或运 算,reversal_flag标示编码结果是否需要做翻转操作。

当reversal_flag=1时,进行翻转操作;

当reversal_flag=0时,不进行翻转操作;

-替换操作(特殊情况处理):码表中存在一些特殊情况需要对defaultcodeword 编码结果进行处理。D7.y和Dx.3的编码结果极性平衡,但有两个表项可选,仍需根据 CRD情况判断是否需要翻转,Dx.7的编码结果有连续的3个0或者1,8b/10b编码规范 关于游程受限约束的说明中规定,码字发送位流不出现连续的5个0或者1。为了避免 出现连续的5个1或者0,需根据前一码字编码结果的低2位情况判断是否需要替换操 作。

优选地,所述基于8b/10b编码规范的8b/10b编码生成集实现方法,还包括如下步 骤:

由16b/20b编码过程的rd_ctrl[4:0]得到rd_out,作为下一次16b/20b编码过程 的CRD输入。通过增加一级缓存器,两个16b/20b编码器并行工作完成32b/40b编码, 依此方法,本发明技术方案推广到更大规模的8b/10b编码生成集实现。

与现有技术相比,本发明具有如下的有益效果:

1、本发明符合8b/10b编码通用规范、逻辑简单开销低、速度快传输带宽高;

2、本发明基于8b/10b编码规范,提供一种全新的8b/10b编码生成集实现方法, 具备完全自主知识产权;

3、通过将本发明16b/20b编码实现方法的CRD计算提前至编码器之前并增加一级 同步延迟时钟,本发明技术方案可推广至32b/40b等更大规模编码生成集实现。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特 征、目的和优点将会变得更明显:

图1为本发明实现方法流程图;其中S0~S4表示状态1~4,S0表示待编码数据 TXD[15:0]和控制信息TXC[1:0]就绪,S1表示由待编码数据TXD[15:0]和控制信息 TXC[1:0]查编码码表得到rd_ctrl[4:0],S2表示由待编码数据TXD[15:0]和控制 信息TXC[1:0]查编码码表得到缺省码字,S3表示由rd_ctrl[4:0]和default codeword[19:0]得到一个中间状态的编码结果tempcodeword[19:0],S4表示编码 结束;

图2为本发明硬件实现的逻辑时序图;

图3为本发明扩展至更大规模8b/10b编码生成集实现方法。

具体实施方式

下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实 施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人 员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发 明的保护范围。

实施例

本实施例涉及数字通信技术领域,提供了一种基于8b/10b编码规范的8b/10b编 码生成集实现方法。基于8b/10b编码规范构造,16b/20b编码游程受限约束关系,并将 这种关系建立表格。两个8b/10b编码器之间的游程受限约束关系通过查表得到,编码 器可同时并行工作完成编码,解决了由于DDR技术的出现导致两编码器之间时序紧张问 题,解决了8b/10b编码游程平衡控制和提高传输带宽之间的矛盾。本实施例16b/20b 编码结果的CRD在编码过程的第一个时钟可得到,它是下一次编码过程的输入,通过增 加一级的同步延迟时钟和CRD逻辑运算,两个16b/20b编码器并行工作完成32b/40b编 码,依此方法,本发明技术方案推广到了更大规模的8b/10b编码生成集实现。

下面结合具体实例对本实施例进一步描述。

本实施例提供的基于8b/10b编码规范的8b/10b编码生成集实现方法,从原理上 阐述可以分为以下三个步骤:

步骤一:对8b/10b编码码表中的码字极性状态进行标记,1表示极性不平衡(1比0 多或者0比1多),0表示极性平衡(码字中的0和1数量相等)。

使用rd_current表示码字的极性状态。数据字码表分5b/6b、3b/4b编码表标记, 例如,D0的5b/6b编码输出011000/100]111,极性为不平衡,标记为1;D3的5b/6b编 码输出110001,极性平衡,标记为0。控制字由于数量较少,8b/10b作为一个整体标记, rd_current用两位表示,高位和低位分别表示码字低6位和高4位的极性状态。D7的 极性标记为平衡;Dx.3的极性标记为平衡。如表1、表2、表3。

表1数据字5b/6b编码表

表2数据字3b/4b编码表

Note:A7replacesP7if[(rd>0)and(e=i=0)]or[(rd<0)and(e=i=1)]

表3控制字编码表

步骤二:根据8b/10b编码规范,建立16b/20b编码的游程受限约束关系。

8b/10b编码操作通过两个并行的查表过程来完成。码表中的每一个输入有两个表 项可供选择,5b/6b编码根据CRD现行状态来选择;3b/4b编码除了根据CRD现行状态 外,还要根据5b/6b编码结果的0、1个数。本发明技术方案的16b/20b编码,除了8b/10b 编码内部的子编码模块存在上述游程受限约束关系,两个8b码字之间也存在游程受限 约束关系。而这个游程受限约束关系与以下因素有关:CRD现行状态,待编码数据高8 位和低8位的编码结果极性情况。在本发明技术方案中,探索并建立16b/20b编码游程 受限约束关系,并将这种约束关系建立成表。

记待编码数据TXD[15:0],控制信息TXC[1:0]。TXC中的0表示8位的TXD是数据 字,1表示8位的TXD是控制字。编码顺序是从高位到低位。编码输出tx_data[19:0]。 在表4中,rd_ctrl[4:0]=[rd_ind6b_temp_H[6]d4b_temp_H[4]d6b_temp_L[6] d4b_temp_L[4]];rd_in表示输入极性,0表示极性为负,1表示极性为正;6b_temp_H[6] d4b_temp_H[4]d6b_temp_L[6]d4b_temp_L[4]分别表示输入高8和低8位数据的5b/6b 和3b/4b编码结果的极性状态,通过查表1、表2和表3中的rd_current表项得 到;rd_out通过rd_ctrl[4:0]的5bits数据模2加得到;c10b_H[9:0],c10b_L[9:0] 表示控制字编码结果的高10位和低10位,d6b_H[5:0],d4b_H[3:0],d6b_L[5:0], d4b_L[3:0]表示数据字的编码结果。缺省选择码表中极性为正的码字(码表CRD为‘-’ 列),Dx.7缺省选1110;reversal_flag标示这些编码结果是否需要翻转,0表示不翻 转,1表示翻转。遵照8b/10b编码规范,研究并建立如表4所示的16b/20b编码游程 受限约束关系。

通常情况,码字极性状态为平衡,表明它的编码输出只有一个,无需进一步判断是 否要进行翻转的操作。但码表有一些特殊情况。D7.y和Dx.3的码字极性状态rd_current 为平衡,但它们的编码输出(码字)有两个,仍需根据CRD和最近编码输出的极性状态判 断是否要进行翻转的操作。再有,Dx.7的编码输出为0001/1110,码字本身存在连续的 3个0或者1;8b/10b编码规范关于游程受限约束的说明中规定发送位流不出现连续的 5个0或者1,故需判断Dx.7高6位输出的低2位是否出现了连续的0或者1;如果出 现了连续的5个0或者1,需将0001替换成1000或者1110替换成0111。

表4编码极性控制表

续表4编码极性控制表

步骤三:查表、翻转和替换操作,完成16b/20b编码

表4reversal_flag[5:0]的6个bit用来表示编码输出是否需做翻转操作,从高 到低位分别控制高8位控制字、低8位控制字、高8位数据字的5b/6b编码输出、高8 位数据字的3b/4b编码输出、低8位数据字的5b/6b编码输出、低8位数据字的3b/4b 编码输出。TXC[1:0]控制reversal_flag[5:0]的选择。00选择reversal_flag[3:0], 11选择reversal_flag[5:4],10选择reversal_flag[5]&reversal_flag[1:0],01 选择reversal_flag[3:2]&reversal_flag[4]。

由rd_ctrl[4:0]和TXC[1:0]得到16b/20b编码输出极性约束关系reversal_flag, 将其与表1、表2和表3查到的极性为正的码字做异或操作,即得编码输出。

码表中存在一些特殊情况需做特殊处理。D7.y和Dx.3的编码结果极性平衡,但有 两个表项可选,根据CRD情况作是否需要翻转的判断,Dx.7的编码结果为了避免出现连 续的5个1或者0,需根据前一码字编码结果的低2位情况判断是否需要替换操作:

1)如果5b/6b编码输入为D7.y,5b/6b编码结果为xor([111000],rd_ctrl_temp), 其中rd_ctrl_temp=rd_ctrl(4)。

2)如果3b/4b编码输入为Dx.3,3b/4b编码结果为xor([1100],rd_ctrl_temp), 其中rd_ctrl_temp=xor(rd_ctrl(4),rd_ctrl(3))。

3)如果D7.y和Dx.3位于低8位,上式运算中的rd_ctrl_temp分别为 mod(rd_ctrl(4)+rd_ctrl(3)+rd_ctrl(2),2),mod(rd_ctrl(4)+ rd_ctrl(3)+rd_ctrl(2)+rd_ctrl(1),2)。

4)如果D_H=Dx.7&&reversal_flag(d4b_H)=0&&d6b_H[1:0]=‘11’,做替 换d4b_H[3:0]=‘0111’;如果D_H=Dx.7&&reversal_flag(d4b_H)=1&& d6b_H[1:0]=‘00’,做替换d4b_H[3:0]=‘1000’。

5)如果D_L=Dx.7&&reversal_flag(d4b_L)=0&&d6b_L[1:0]=‘11’,做替 换d4b_L[3:0]=‘0111’;如果D_L=Dx.7&&reversal_flag(d4b_L)=1&& d6b_L[1:0]=‘00]’,做替换d4b_L[3:0]=‘1000’。D_H表示高8位输入,D_L 表示低8位输入。

其中,4)和5)中的d6b_H[5:0],d4b_H[3:0],d6b_L[5:0],d4b_L[3:0]表示数据 的S3编码结果。

图2从逻辑实现角度阐述本发明技术方案,如下:

在第一个时钟,根据CRD、TXD[15:0]和TXC[1:0]查表1、表2、表3得到5bits 的rd_ctrl[4:0];由TXD[15:0]和TXC[1:0]查表得到的编码结果,缺省情况下选择极性 为正的码字。

在第二个时钟,将第一个时钟得到的码字与由rd_ctrl[4:0]与TXC[1:0]共同决定 的reversal_flag做异或运算,得到初步的编码结果。

在第三个时钟,处理步骤三提到的特殊情况,得到最终的编码结果。

注意到在上述16b/20b编码器逻辑实现方案的第一个时钟可得编码输出的极性状态 控制信息rd_out,它是下一次16b/20b编码过程的CRD输入。因此若加一级缓存器,两 个16b/20b编码器可并行工作完成32b/40b编码。利用此方法,本实施例技术方案可推 广至更大规模的8b/10b编码生成集实现。

本实施例具有逻辑简单开销低、速度快传输带宽高优点;通过将本发明16b/20b编 码技术方案的CRD计算提前至编码器之前并增加一级同步延迟时钟,本实施例技术方案 可推广至32b/40b等更大规模8b/10b编码生成集实现。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上 述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改, 这并不影响本发明的实质内容。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号