首页> 中国专利> 基于双8b/10b编码器的16b/20b编码器逻辑实现方法

基于双8b/10b编码器的16b/20b编码器逻辑实现方法

摘要

本发明涉及数字通信技术领域,特别是一种基于双8b/10b编码器的16b/20b编码器逻辑实现方法,在两个8b/10b编码器基础上构造16b/20b编码器,解决了直接由两个8b/10b编码器构成16b/20b编码器用于DDR数据源时的时序紧张问题。在使用很少一部分逻辑资源的条件下,简洁地实现了8b/10b编码器的游程偏移预测,避免了使编码器单元成为整体逻辑的关键路径的情况,同时保证双沿数据的8b/10b游程规范性。本发明提出的利用预测的游程偏移作为8b/10b编码器的游程偏移输入端来强制控制8b/10b编码器的输出编码极性的方案,可以类推到更大规模的8b/10b编码生成集的实现。

著录项

  • 公开/公告号CN1558582A

    专利类型发明专利

  • 公开/公告日2004-12-29

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN200410002290.X

  • 申请日2004-01-16

  • 分类号H04L5/00;H04L7/00;

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人周国城

  • 地址 100080 北京市中关村科学院南路6号

  • 入库时间 2023-12-17 15:39:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-03

    未缴年费专利权终止 IPC(主分类):H04L5/00 授权公告日:20070214 终止日期:20190116 申请日:20040116

    专利权的终止

  • 2007-02-14

    授权

    授权

  • 2005-03-02

    实质审查的生效

    实质审查的生效

  • 2004-12-29

    公开

    公开

说明书

技术领域

本发明涉及数字通信技术领域,特别是一种基于双8b/10b编码器的16b/20b编码器逻辑实现方法,尤其是使用两个8b/10b编码器模块附加少量逻辑构成一种适于DDR(Double Data Rate,双沿数据率)数据传输且符合游程平衡规范要求的16b/20b编码器实现方法。

背景技术

8b/10b编码方案及其实现方法是二十世纪八十年代的技术结果,由于它方便地控制了串行传输线路上的直流分量而广泛地应用于通信技术领域,例如光纤通信器件,串并变换场所。在8b/10b编码规范下,输出的10位数据串行化传输时,在传输线上不会出现6个连续的‘0’或6个连续的‘1’,并且同时可以保证在任意检测尺度内,‘0’与‘1’数目的差值(游程平衡偏移)不会超过5。这对于控制串行链路上的直流分量的平衡是十分有利的。同时,这种编码方式提供字符同步信息,对于恢复时钟也很有好处。在具体实现方法上,该编码方案采取由3b/4b和5b/6b合成8b/10b的方法,把8位待编码数据分成高3位和低5位两组,分别提取游程偏移,分别编码为4位和6位两组,然后合成为10位的编码。这样做的好处是将编码任务并行化,尽量减小组合逻辑延时,节省存储器空间,提高编码器性能。编码输出结果都约定为低位先送出。此外,为了实现纯粹数据传输以外的某些特定功能,8b/10b编码方案在256(28)种数据字符编码外,增加了12个特殊字符编码,用额外的信号Key=1(key:命令标志)来表示;与此对应,256个普通数据编码则用Key=0表示。本发明提及的是通用的工业标准8b/10b编码集合。

由于在提出8b/10b编码方案时尚未出现DDR技术,因此当8b/10b编码方案用于双沿器件时,会给硬件设计带来困难。通常的并串转换器件运行于双沿时钟方式下的时候,首先要考虑的是起始位置问题,即需要确定从哪一位串行数据开始对齐,否则并行化之后的10位码字将无法正确转换成8位编码。8b/10编码方案为这种情况准备了一些comma(comma:逗号)符号,每当串并变换器件检测到一个comma序列,就会按这个特征符中的信息确定一次解码的起始位置。Comma字符的特征是(XXX1111100)B或者(XXX0000011)B,即两个零后面紧接五个壹或两个壹后面紧接五个零。它们也是8b/10b编码集中仅有的几个出现连续五个壹或五个零的编码。然而,如果连续两个10位编码之间的游程平衡不满足8b/10b规范时,就有可能出现意外的comma字符,也就是说comma特征字符又先后两个相继的10位编码组成,从而破坏解码器的起始对齐位置,导致通信内容解码失败。

单沿工作的8b/10b编码器内置游程平衡单元,可以实现游程平衡从而避免意外的comma。双沿工作的8b/10b编码器本质上由两个分别工作与时钟上沿与下沿的单沿8b/10b编码器组合而成,每一个编码器的disparity_out(disparity:游程平衡偏移)与另一个编码器的disparity_in相连,从而实现游程偏移的时间上的相互继承。但是,这种方案存在的问题是,实现游程继承的连线实际上跨越了两相时钟域,从而成为时序的关键路径。例如,在时钟频率为100MHz的情况下,这条连线上的信号的送出延迟时间和输入建立时间之和必须小于5ns,即一半的时钟周期;如果按均分估算,则各为2.5ns,否则就会引起时序违规,使电路无法正常工作。而2.5ns的建立时间要求在时钟周期为10ns的情况下明显苛刻,于是成为关键路径。而且这个时序要求必须满足,不能依靠增加锁存器的方法来缓解。

发明内容

鉴于上述原因,我们改变传统的双沿8b/10b编码器结构,把游程偏移的反馈模式改为提前预测模式,同时将一对8b/10b编码器的工作时钟合二为一,很容易地实现了符合游程规范的高速16b/20b编码器。

8b/10b编码器直接用于DDR数据传输会给逻辑设计带来诸多困难,游程平衡控制和提高时钟频率是其中较难解决的一对矛盾。

本发明的目的在于提供一种16b/20b编码器的简易逻辑实现方法,既可以保证DDR数据按照8b/10b规范平衡游程,又不会降低编码器的工作速度。

技术方案

为了减少设计开销和降低设计成本,发明采取了基于已有的8b/10b编码器构造16b/20b编码器的路线。在两个并列的8b/10b编码器之前增加一级编码前处理预测单元,用于提前生成disp_in以控制8b/10b编码器的游程偏移输入端,实现及时的正确编码。

附图说明

图1是本发明的16b/20b编码器顶层逻辑图。

图2是本发明的Fore-Coder内部的逻辑结构示意图。

图3是本发明的16b/20b编码器方法流程图。

图4是本发明的16b/20b编码器(正沿时钟)工作时序示意图。

如图1所示,Z0和Z1分别是9位待编码数据,其中各包括一个命令控制信号key.Y是20位的已编码数据输出,符合最大游程偏移限制。Encoder-0(encoder:编码器)和Encoder-1是两个逻辑结构完全相同的8b/10b编码器(2、3),都带有强制游程偏移使能端(force_disp)和游程偏移输入端(disp_in),并且强制游程偏移使能端总是置于有效状态(‘1’)。一般的可编程逻辑器件供应商都会提供成熟的8b/10b IP-Core给用户。另外,图1中设有一个字序选择信号输入Endian(尾序,即多位数据的高位先行或是低位先行的顺序),为’1’表示Encoder-1编码器的输出在前,为’0’表示Encoder-0编码器的输出在前。Fore-Coder(预编码单元)(4)是游程偏移预测单元,也是本发明的核心部分。它在一个时钟周期内完成对游程偏移的预测,输出预测结果,送给编码器Encoder-0(2)和Encoder-1(3)。reg0(1)和reg1(5)是相同的锁存器,可由简单的D触发器构成,目的是使输入的数据(Z0和Z1)延迟一拍时钟,以便与Fore-Coder计算输出的游程偏移控制在同一个时钟沿上到达8b/10b编码器Encoder-0和Encoder-1。这里提到的五个单元(Encoder-0,Encoder-1,Fore-Coder,reg-0,reg1)都由同一时钟源(Clock)同步,共同构成了本发明所贡献的16b/20b编码器构架。出于简洁的考虑,图1中略去全局同步时钟Clock和全局复位Rst两个信号的走线,它们都会在同步逻辑Calc_Disparities(游程平衡偏移计算)模块中使用。

图2是Fore-Coder内部的逻辑结构示意图。其中AO-6(AO:And-Or,与或逻辑)和AO-3都是组合逻辑电路,其功能在于根据待编码数据的低5位(加Key信号)和高3位的各自编码特征,计算它们将对游程偏移产生的影响。例如,若8位数据Z=(100 11011)B,则它的10b编码为Y=(0100011011)B,或者Y=(1011 100100)B;而若Z=(001 10001)B,则它的10b编码只能为Y=(1001 110001)B.之所以同为’0’和’1’个数相等的10b编码有此差别,是因为8b/10b编码器实际上是分为3b/4b编码和5b/6b编码两部分并行工作的。3b/4b编码中(100)B的编码为(0100)B或(1011)B,两种可能编码中的零壹个数都不相等,具体采取哪一个选择要视当前传输线路上的游程偏移的情况而定,以便及时地平衡线路上的游程偏移:如果RD=0,则选择(1011)B;如果RD=1,则选择(0100)B。它会改变这一局部(4b)编码的游程偏移值。这种情况同样适用于5b/6b编码中的(11011)B,它的6b编码同样存在零过剩和壹过剩两种选择。而对于如3b/4b编码中的(001)B和5b/6b编码中的(10001)B,它们的编码都只提供了一种选择,其中零壹个数相等,因而不会改变局部的游程偏移值。模块AO-6和AO-3可以区分8b中的5b部分或3b部分的局部编码特性,如果会改变当前游程偏移,则Tog5b(tog:toggle,翻转)或Tog3b置’1’,否则置’0’。

模块AO-6的VHDL语言参考逻辑代码如下:

--VHDL Codes for AO-6PROCESS(Key,Z(4 downto 0))variable comb:STD_LOGIC_VECTOR(5 downto 0);begincomb:=Key & Z(4 downto 0);CASE comb iswhen″000000″=>Tog5b<=’1’;when″000001″=>Tog5b<=’1’;when″000010″=>Tog5b<=’1’;when″000100″=>Tog5b<=’1’;when″001000″=>Tog5b<=’1’;when″001111″=>Tog5b<=’1’;when″010000″=>Tog5b<=’1’;when″010111″=>Tog5b<=’1’;when″011000″=>Tog5b<=’1’;when″011011″=>Tog5b<=’1’;when″011101″=>Tog5b<=’1’;when″011110″=>Tog5b<=’1’;when″011111″=>Tog5b<=’1’;when″111100″=>Tog5b<=’1’; when others=>Tog5b<=’0’;end CASE;end PROCESS;

模块AO-6的Verilog HDL语言参考逻辑代码如下:

//VerilogHDL Codes for AO-6always@(Key or Z[4:0])case({Key,Z[4:0]})6’B0_00000:Tog5b=1;6’B0_00001:Tog5b=1;6’B0_00010:Tog5b=1;6’B0_00100:Tog5b=1;6’B0_01000:Tog5b=1;6’B0_01111:Tog5b=1;6’B0_10000:Tog5b=1;6’B0_10111:Tog5b=1;6’B0_11000:Tog5b=1;6’B0_11011:Tog5b=1;6’B0_11101:Tog5b=1;6’B0_11110:Tog5b=1;6’B0_11111:Tog5b=1;6’B1_11100:Tog5b=1;default:Tog5b=0; endcase

模块AO-3的VHDL语言参考逻辑代码在下面给出:

--VHDL Codes for AO-3PROCESS(Z(7 downto 5))beginCASE(Z(7 downto 5))iswhen″000″=>Tog3b<=’1’;when″100″=>Tog3b<=’1’;when″111″=>Tog3b<=’1’;when others=>Tog3b<=’0’;END CASE;END PROCESS;

模块AO-3的Verilog HDL语言参考逻辑代码在下面给出:

//VerilogHDL Codes for AO-3always@(Z[7:5])case(Z[7:5])3’B000:Tog3b=1;3’B100:Tog3b=1;3’B111:Tog3b=1;default:Tog3b=0;endcase

图2中的Calc_Disparities模块采用时序逻辑,它根据字序设定送出最后的合法的16b/20b编码。该编码器内部除了必要的状态位寄存器之外,还设有一个寄存器RD(runing disparity,游程偏移)用于存储每一组20b数据之后的游程偏移值,为壹表示当前’1’个数过剩,为零表示当前’0’个数过剩。它的输入就是前面提到的Tog5b和Tog3b,以及字序控制Endian和RD,输出除了RD之外就是用于控制两个8b/10b编码器的强制游程偏移输入的disp_in。这一模块的功能在于根据当前游程偏移值和被编码数据自身的编码极性特性,预测两个8b/10b编码器的理想游程偏移输入。例如,若当前RD=1,表示目前线路游程正偏,于是按字序先输出的编码(先序编码)应继承RD=1的偏移,送出非正偏编码(’1’的个数不占优);假如确实存在负偏的编码(’0’的个数占优),则后序编码(按字序后输出的编码)应继承RD=0的偏移,送出非负偏的编码,同时置RD=1,否则继承RD=1的偏移,送出非正偏的编码,同时置RD=0。

下面是模块Calc_Disparities的VHDL语言参考代码:

--VHDL Codes for Module Calc_DisparitiesCalc_Disparities:PROCESS(Clock)BEGINIF RISING_EDGE(Clock)THENIF(Rst=’1’)THENRD<=’0’;disp_in<=″00″;ELSERD<=Tog5b(1)xor Tog3b(1)xor Tog5b(0)xor Tog3b(0)xor RD;disp_in(1)<=(RD and Endian)or((Tog5b(0)xor Tog3b(0)xorRD)and not Endian); disp_in(0)<=(RD and not Endian)or((Tog5b(1)xor Tog3b(1)xor RD)and Endian);END IF;END IF;END PROCESS Calc_Disparities;

下面是模块Calc_Disparities的Verilog HDL语言参考代码:

//VerilogHDL Codes for Module Calc_Disparitiesalways@(posedge Clock)if(Rst)beginRD<=0;disp_in<=2′b00;endelse beginRD<=Tog5b[1]^Tog3b[1]^Tog5b[0]^Tog3b[0]^RD;disp_in(1)<=(RD & Endian)|((Tog5b[0]^Tog3b[0]^RD)&!Endian);disp_in(0)<=(RD &!Endian)|((Tog5b[1]^Tog3b[1]^RD)& Endian);end

图3给出了通用的16b/20b编码器的工作流程图,共包括5个环节,S0~S4;其中S1和S2两步骤是完全并发的,没有因果关系或先后次序。参照图3,对这5个步骤的详细说明如下:

数据到达(S0),数据锁存与游程平衡偏移预测(S1+S2),受控编码(S3),以及编码并行输出(S4);

步骤S0:初始环节,对应着每一拍时钟的有效计时时刻(时钟的上沿或者下沿),两路合法的被编码数据(分别都是9位)在这一时刻到达16b/20b编码器的入口,做好接受处理的准备;

步骤S1:对两路待处理数据的锁存,为的是使数据延迟一个时钟周期,与相应的预测生成的游程平衡偏移信号同时到达相应的8b/10b编码器入口,准备接受局部的8b/10b编码;

步骤S2:这个步骤与S1是完全并行的。在这一步骤里,每一路数据在编码时应继承的游程平衡偏移将被预测,这一步骤所完成的功能由图1中的第4部分(Fore-Coder,预编码单元)来实现,两路数据在这一环节里有相互耦合作用,也就是说,对每一路数据的游程平衡偏移的预测必须考虑另外一路数据的8b/10b编码特性,16b/20b编码的字序控制(Endian)也是在这一环节里起作用的;

步骤S3:两个8b/10b编码器对相应支路的数据进行带强制游程偏移控制的8b/10b编码,称为受控编码,由于应继承的游程平衡偏移已经在环节S2中完成预测,并且成为S3环节的输入,所以可以认为这环节里的两个8b/10b编码器完全独立地工作,在这一环节里两路数据已没有耦合;

步骤S4:两路8b/10b编码器的输出合并成一路编码输出,在下一个有效时钟沿之前稳定下来,完成16b/20b编码。

这5个环节(步骤S0-S4)在计时上共需要3拍时钟周期,如图4所示。

以正沿时钟工作情况为例,在第1个时钟上沿,被编码数据到达编码器入口,对应于图3中的步骤S0。

在第2个时钟上沿,执行步骤S1和S2,完成对被编码数据的锁存和游程偏移预测。

在第3个时钟上沿,执行步骤S3,完成两路数据的受控8b/10b编码。

在第3个时钟上沿和第3个时钟下沿之间的某个时刻(具体的时间位置取决于器件的性能指标),两路数据的8b/10b编码的结果输出有效,电路上合并成16b/20b编码,送给下一级电路,保证在第4个时钟上沿前16b/20b编码稳定。

如上所述,从数据到达时刻到16b/20b编码输出稳定,共需3个时钟周期,如图4所示。

发明效果

本发明的积极效果体现在:

1.符合通用规范。保证编码器的输出数据串行化之后严格遵守8b/10b规范的游程平衡要求。

2.开销低。与用两个8b/10b编码器直接构成的16b/20b编码器相比,仅增加一级同步时钟延迟和少量逻辑,即可实现完整的16b/20b编码方案。

3.速度快。增加的一级编码前处理/预测单元的逻辑十分简单,不会构成时序关键路径,因而不影响芯片整体的运行速度。

4.易于推广。本发明提出的游程偏移提前预测方法,可以很方便的应用于24b/30b、32b/40b或64b/80b等编码器的实现,严格保证游程平衡规范。这种方法同时适用于FPGA和ASIC等逻辑器件的上述编码逻辑设计。

DDR:Double Data Rate,双沿数据率

QDR:Quadra-Data Rate,四倍速数据率

disparity:游程平衡偏移

Endian:尾序,即多位数据的高位先行或是低位先行的顺序

IP-Core:Intellectual Property Core,知识产权核心

FPGA:Field Programmable Gate Array,现场可编程门阵列

ASIC:Application Specific Integrated Circuit,专用集成电路

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号