用于高速应用的8b/10b编码和解码的制作方法

文档序号:7507904阅读:415来源:国知局
专利名称:用于高速应用的8b/10b编码和解码的制作方法
技术领域
本发明涉及传输编码,更具体的,涉及用于高速应用的8B/10B编码和解码。
背景技术
串行化、自定时芯片输入-输出(I/O)的发展势头越来越大。希望用单独的高速、串行通信通道代替许多宽的双向和共享的总线。在由Franaszek和Widmer申请的标题为“Byte Oriented DC Balanced(0,4)8B/10B Partition Block Transmission Code”的美国专利No.4,486,739中介绍了8B/10B传输编码,其公开在这里作为参考引入,由于其易于实施和传输的特性,所以在工业中已经确立这种应用。
对于8B/10B传输编码的详细讨论参看美国专利No.4,486,739。通常,在8B/10B传输编码中,由六位编码矢量和四位编码矢量产生十位矢量。六位编码矢量由五位源矢量产生。同样,四位编码矢量由三位源矢量产生。以减少或消除在编码矢量流中的任何直流(DC)分量的方式产生和组合编码矢量。编码(和源)矢量具有不同等性(disparity)。数据块的不同等性是块中零和一的数量之间的差。正和负不同等性数量分别是指过多的一或零。不同等性用于确定传输什么编码矢量。例如,不平衡编码矢量具有首要的和替代的编码矢量,由不同等性确定是选择首要编码矢量还是替代编码矢量进行传输。不平衡编码矢量具有不为零的不同等性。例如,三位源矢量为000。对应于该源矢量的3B/4B传输编码的首要编码矢量为0100。对应于该源矢量的替代编码矢量为1011(即,0100的反码)。如果在编码矢量之前的不同等性为正,则选择首要矢量,如果在编码矢量之前的不同等性为负,则选择替代矢量。在美国专利No.5,245,339中可以找到关于不同等性细节和关于不同等性的规则。
一个明显的趋势是提高传输速度,而过去往往通过成倍增加并行的编码-解码(CoDec)电路来解决。例如,由Cideciyan申请的标题为“FlexibleEncoding Method and Architecture for High Speed Data Transmission andStorage”的美国专利No.5,245,339中公开了并行操作多个编码器的改进的方法,在这里作为参考引入。
但是,在使用8B/10B传输编码时仍然存在进一步增加编码和解码的速度的需求。

发明内容
本发明提供当分别采用8B/10B传输编码进行编码和解码时增加编码和解码速度的技术。在本发明的一个方面中,在8B/10B传输编码的编码期间,通过使用某些过去的参考点的不同等性以及从参考点到当前块边界的字节的不同等性特性计算当前块的开始不同等性。在8B/10B传输编码中的块通常为字节,因此,所用的块边界通常为字节边界。但是,可以用多字节产生块。在一个实施例中,字节的特征为字节是否是不平衡的编码矢量以及不平衡矢量的数量是奇数还是偶数。在另一个实施例中,字节的特征为字节是否是平衡的以及存在多少平衡的编码矢量。与常规设计相比,就用单个8B/10B编码器编码,以及用多个并行工作的8B/10B编码器编码来说,这一方面至少具有延迟更短的优点。
在本发明的第二和第三方面,为3B/4B和5B/6B传输编码的编码和解码,产生比常规分类延迟更短的新的分类。此外,产生单独的函数来具体满足传输编码的不同等性方面。
在本发明的第四方面,在解码期间,根据存储的之前的块的不同等性特征确定在块的开始处的当前参考不同等性。在一个实施例中,存储的之前的块的不同等性特征是之前的块的出口不同等性和之前的块的参考极性。在另一个实施例中,如果满足下面两个条件至少其中之一,则在块的开始处的当前参考不同等性为正(1)之前的块的出口不同等性为正;以及(2)在之前块的开始处的参考不同等性为正并且之前的块的出口极性为非负。在另一个实施例中,通过假设实际运行的不同等性等于下一个不同等性相关的之前的字节的出口不同等性,在通过将必须的字节的前端不同等性与实际运行的不同等性相比较期间在字节的前端检测出不同等性违背。
通过参考随后的详细介绍和附图,将获得对本发明更充分的理解以及本发明的其它特征和优点。


图1示出了根据本发明的一个实施例的采用8B/10B传输编码将五位源矢量编码为六位编码矢量的表;图2示出了根据本发明的一个实施例的采用8B/10B传输编码将三位源矢量编码为四位编码矢量的表;图3A示出了根据本发明的一个实施例,采用8B/10B传输编码进行编码的示范电路;图3B示出了根据本发明的一个实施例,当采用8B/10B传输编码进行编码时用于不同等性控制的示范电路;图4示出了根据本发明的一个实施例,用在图3的编码电路中的AND-OR-INVERT(与或非)逻辑符号;图5示出了根据本发明的一个实施例,用于一个字节编码器的不同等性确定的较快速方案的示范电路;图6示出了根据本发明的一个实施例,用于一个字节编码器的不同等性确定的较慢速方案的示范电路;
图7示出了根据本发明的一个实施例,当编码8B/10B传输编码时进行四个并行编码操作的较快速方案的示范电路;图8示出了根据本发明的一个实施例,当编码8B/10B传输编码时进行四个并行编码操作的较慢速方案的示范电路;图9示出了根据本发明的一个实施例,用于解码10B/8B传输编码的6B/5B部分的表;图10A示出了根据本发明的一个实施例,当解码10B/8B传输编码的6B/5B部分时进行6B/5B解码和有效性检查的示范电路;图10B示出了根据本发明的一个实施例,当解码10B/8B传输编码的6B/5B部分时进行不同等性检查的示范电路;图11示出了根据本发明的一个实施例,用于解码10B/8B传输编码的4B/3B部分的表;图12示出了根据本发明的一个实施例,用于确定在10B/8B传输编码的特定位中的哪些类需要反相的表;图13示出了根据本发明的一个实施例,当解码10B/8B传输编码的4B/3B部分时进行4B/3B解码和相关错误检查的示范电路;图14示出了根据本发明的一个实施例,当解码10B/8B传输编码的4B/3B部分和6B/5B部分时进行错误检查的示范电路;图15示出了根据本发明的一个实施例,用于一个字节解码器的不同等性确定的较快速方案的示范电路;图16示出了根据本发明的一个实施例,用于一个字节解码器的不同等性确定的较慢速方案的示范电路;以及图17示出了根据本发明的一个实施例,当解码8B/10B传输编码时进行四个并行解码操作的示范电路。
具体实施例方式
本发明通过以下改进超越了美国专利No.5,245,339和美国专利No.4,486,739中公开的内容。为从编码域和到编码域的映射开发出新的矢量分类,这将使编码和解码方程具有通常更短的延迟。8B/10B编码本身未变。编码和解码过程的不同等性由分开的而不是共享的分类来处理,并且只需要少量的额外电路。在美国专利No.4,486,739中,采用共享的分类。虽然传统的电路中在字节或字节块的端部与编码或解码的数据一起提供运行不同等性,但是本发明在这方面具有不需要在编码或解码以及错误检查过程的开始立即知道运行不同等性的极性的优点。因此,不是在结束的不同等性,而是在与当前字节的某种特性一起的当前字节的开始的不同等性通过锁存器或延迟元件传送到下一个字节间隔。在下一个周期的初期部分期间计算下一个字节的开始不同等性,同时进行一下字节的位映射、错误检查和不同等性分类。这两个创新将允许许多应用用单个编解码电路而不是两个或四个,或者用两个而不是四个。对于非常短距离的应用,减少单个编解码器的等待时间比电路的节省更重要。多个编解码器电路增加的等待时间与单字节通道有关,因为如果没有其它原因的需要的话,要花费额外的时间并行地装配和分解几个字节。
对于用多个并行工作的编解码电路的实现,当使用本发明时,也不需要得到多个字节块各自的结束不同等性。相反,当前块的开始不同等性可以来自某些之前的参考点的不同等性的值和直到新的参考点的字节的某些特性。
对于编码过程,当到新的参考点的不平衡编码矢量的数量是奇数时,则改变来自之前的参考点的运行不同等性,否则,保持不变。如果回到参考的矢量的总数为偶数,则对于平衡矢量的数量也是同样的。
美国专利No.5,245,339没有出现要明确指出的解码过程。在用于解码的位映射中不同等性不起作用,但是检查与不同等性规则的一致性用于错误检测的目的,并且该逻辑途径可能是某些常规设计中的瓶颈之一。本发明的不同等性检查电路将编码字节分类为不同等性相关的或无关的,与平衡的或不平衡的分类不同。忽略不同等性无关字节。不同等性相关字节只根据字节中的位模式假设一个正或负出口不同等性,而不管在字节的开始处的运行不同等性。为了错误检查的目的,在任何点的运行不同等性等于最近不同等性相关字节的出口不同等性。对于四个并行字节的例子,可以由四个组合逻辑的独立的组同时确定,即,不用知道在前面的字节的不同等性就可以得到在字节数三前面的不同等性,如在某些更长延迟的设计中所需要的。在四字节块前面的不同等性来自之前的块的最后一个字节(电路1713)前面的不同等性值和该字节的不同等性特性。通过延迟对下一个块周期的评估可以得到延迟容限的改进。
在这里出现的8B/10B编解码电路设计试图提供最佳的可能速度并发掘出用于IBM CMOS-7S或类似技术的标准单元库的全部特性。在IBMMicroelectronics ASIC SA-27 Databook,SA14-2214-01(1998)中介绍了CMOS-7S,在这里作为参考引入。在这里示出了单个编解码电路和并联电路的实施。
通过以下步骤完成了对于常规技术上在速度方面的改进1.用新的分类产生新的编码和解码表。虽然在旧的分类(例如,在美国专利No.4,486,739中所使用的)中主要依赖于4变量函数,但是新的分类更依赖于3变量函数,可以用更少的延迟实现。
2.定义了专门针对不同等性方面的单独的函数。这增加了速度,因为可以修改针对不同等性方面的函数以提供速度,而不是将这些函数与编码部分混在一起。编码字节的平衡直接由输入位而不是由缺少正或负6B或4B矢量间接地确定的。换句话说,以前通过假设字节是平衡的来确定平衡,除非有正或负编码矢量。不同等性的控制和求补运算的最初的常规设计依赖于相同的用于支持位编码和解码以节省电路的简单分类。本发明的各方面提高了速度,有时以电路面积为代价。
3.对于编码,在任何矢量前的不同等性由起始参考和在当前位置与参考之间的不平衡矢量的奇偶数或者平衡矢量的奇偶数确定。一个替代方法依赖于从矢量到矢量和从字节到字节的不同等性的传播,需要更多的时间。
4.对于解码,假设当前不同等性等于下一个之前的不同等性相关字节的出口不同等性。换句话说,在字节首尾的当前不同等性定义为之前的不同等性相关字节的出口不同等性。
5.还是对于编码和解码,除了计算字节或块的结尾的不同等性,然后将其传给下一个块作为初始不同等性以外,可以根据在之前的块的参考点的不同等性和之间的字节的不同等性特性计算当前字节或块的初始不同等性。
6.对于在下面更详细定义的重要路径的S函数和求补函数给与特别的注意。广义上讲,S函数用于避免假的停顿。通过在多个非重要路径中选通上行数据流避免了在重要路径中的一些连续的选通和大的扇入。
7.第一逻辑实现选择为NAND门,因为它们具有低的延迟,第二选择是NOR门。由于相同的原因,首选XNOR门而不是XOR门。产生或修改逻辑极性以便最佳利用电路。
8.更重要的信号布线到为符号的顶部输入的A输入,除了某些底部输入具有更小的延迟的XOR和XNOR门以外。
9.本发明的设计更少共享基本逻辑元件和中间函数,如果需要连续步骤的话。例如,在输入端,A≠B函数直接由A和B输入产生,而不是由多次使用的中间逻辑表达式产生。
在进行本发明的详细介绍之前讨论符号是有益的。在本文中的等式中所用的信号名不反映任何逻辑电平。因此,它们将被解释为抽象逻辑语句。但是,在电路图中,信号名可能具有字母前缀P和N,用来分别表示函数在高还是低电平为真。对于以P和N开始的网络名,通常不使用P和N前缀,除非可能导致混乱和曲解(例如,NNDFS6=PPDFS6不能简化以避免出现矛盾,例如NDFS6=PDFS6)。以n或m开始的的网络名在低电平时为真,P打头的在高电平时为真。
为了便于参考,详细介绍分为两个部分,(I)8B/10B编码器和(II)10B/8B解码器,每个部分又有多个子部分。
I.8B/10B编码器已经开发出编码分类以加速5B/6B和3B/4B传输码的编码。虽然在旧的分类(例如,在美国专利No.4,486,739中所使用的)中主要依赖于4变量函数,但是新的分类更依赖于3变量函数,可以用更少的延迟实现,并且定义了专门针对3B/4B和5B/6B编码的不同等性方面的单独的函数。
图1示出了用于编码5B/6B源矢量的表。如图1所示,增加了“编码分类”列,以便更有效的将源矢量分类。这些分类加速编码,并介绍如下。在进一步分析图1之前先介绍符号。5B/6B矢量集L03和L30包括所有分别在位A、B和C具有三个逻辑零或一的五位源矢量(S5)。换句话说,符号“L03”表示在前三位A、B和C中没有一而是三个零。注意,数据值与正常书写的方向相反“一”为10000而不是00001。但是,这只是一种方便,也可以采用其它表示方法。符号L12和L21分别表示在相同的位中有一个逻辑一和两个逻辑零或相反。新的符号正式定义如下。在随后的逻辑方程式中,符号(·)和(+)分别表示布尔AND和OR函数。撇号(’)表示非。
矢量集L03和L30包含在位ABC分别为三个零或三个一的所有S5矢量L03=A’·B’·C’L30=A·B·C矢量集L12和L21包含在位ABC分别为一个一和两个零或者两个一一个零的所有S5矢量L12=A·B’·C’+A’·B·C’+A’·B’·CL21=A’·B·C+A·B’·C+A·B·C’A.编码器方程和表从概念上讲,编码通过两个步骤来完成。首先,翻译为首要矢量。第二步对不同等性相关编码矢量的子集确定是否必须使用替代的互补的矢量以满足不同等性规则。在表中的DR列中的不同等性相关矢量具有加号或减号。DR是必须的入口不同等性。对于不同等性相关矢量,必须的入口不同等性表示是否使用首要的或替代的编码矢量。例如,如果必须的入口不同等性,DR,为“+”,则如果入口不同等性为正使用首要编码矢量,如果入口不同等性为负使用替代编码矢量。注意,在矢量边界处这些编码具有加或减一的运行不同等性,因此,在矢量的边界处运行不同等性应当为零。入口不同等性是在要编码的当前源矢量之前的运行不同等性。运行不同等性是在一系列编码矢量中的位值的累加和。
首要矢量的产生。可以分别从图1的列‘编码分类’和‘首要abcdei’或图2的‘首要fghj’直接读出需要翻译为首要矢量的逻辑方程。图2示出了当将三位源矢量编码为四位编码矢量用于3B/4B传输编码时所用的表。在图1中,字母‘ABCDE’表示源矢量,字母‘abcdei’表示编码矢量。‘K’用于表示控制特性。在图2中,字母‘FGH’表示源矢量,字母‘fghj’表示编码矢量。此外,‘K’表示控制特性。参考图1和2进行随后的介绍。在‘首要’列中,所有无格式的位与相应的输入位值ABCDE或FGH相同。粗体位表示强制求补的位。假设i和j位通常为零。如果在单行中存在由逗号分开的两个分类入口,则第二个表达式适用于在首要列中的最后一个粗体零或一。
在图1中,应当注意,对于L21·PDFS6·D·E’,D11、D13和D14具有S1=1,对于L12·NDFS6·D’·E,D17、D18和D20具有S2=1。如果S1或S2有效,并且位F、G、H都是一,则它们将编码为0111或1000,如图2的表中的Dx.A7行所示。这防止了未对准的逗号序列。
在下面列出了从图1和2提取的逻辑方程式,并由图3A的电路执行,介绍如下。
a=Ab=B·(L30·D)’+L03·D’c=C+L03·D’+L03·D·E=C+L03·(D’+D·E)=C+L03·(D’+E)d=D·(L30·D)’e=E·(L03·D)’+L12·D’·E’+L03·D·E’i=L21·D’·E’+L12·[(D≠E)+K]+L03·D’·E+L30·D·Bf=F·[F·G·H·(S+K)]’g=G+F’·G’·H’=G+F’·H’
h=Hj=(F≠G)·H’+F·G·H·(S+K)B.8B/10B位编码的实现在图3A中示出了根据上述表格、方程式和设计原理实现的8B/10B位编码电路图。在编码电路图中的网络名符号如下。在网络名中的字母‘a’和‘o’分别表示布尔AND和OR功能。在网络名中的字母‘n’表示对之前的参数取反。字母‘e’和‘ue’分别表示符号‘=’和‘≠’。大写字母ABCDEFGHK表示未编码的输入位,小写字母abcdeifghj表示编码的格式。
图3A和3B表示一个电路,并且仅仅是为了方便分为两个图。整个电路的输入和输出带有端口标记,如在图3A的左上部所示的PA和右上部的PCa。如果没有标记,如在图3A的右上部的信号NCMPLS6的情况,信号是线路的名字,其起源为在两个图中的名字完全相同的线路。例如,NCMPLS6是在图3B的右上部的门输出,并在图3A的右上部使用。注意,图3B中没有输入端口标记,所有的信号都直接来自图3A。
图3A示出了用于为5B/6B和3B/4B传输编码进行编码的编码电路300A。编码电路300A包括反相器301A到311A、NAND门315A到339A、NOR门345A到354A、ANDN1(具有一个反相输入端的AND门)375A、XNOR门355A到359A、XOR门365A到370A、AND-OR(AO)块385A和AND-OR-INVERT(AOI)块380A和381A。下面参考图4讨论AOI块380A。应当注意,图3A和随后的图对于同一个器件使用了多个符号。例如,元件323A为NAND门,显示为具有反相的输入和输出的OR门。这两个门在功能上是等效的。同样,元件351A功能上等效为NOR门,并且图17的元件1740功能上等效为OAI块。
由于空间的限制,在图3A中使用了如下缩写n0=NABnCn;n1=NAnBCn;n2=NAnBnC;n3=NABCn;n4=NABnC;n5=NAnBC;n6=NELO3noDn;n8=NL12NDFS6DnEFGH;n9=NL21PDFS6DEnFGH以及n10=PHnFueG。
信号NCMPLS6来自图3B下部所示的不同等性控制电路。该信号用于反相首要编码矢量abcdei以产生替代编码矢量(abcdei)’。根据不同等性规则进行取反。同样,信号NCMPLS4来自图3B下部所示的不同等性控制电路,并且该信号用于根据不同等性规则反相首要编码矢量fghj以产生替代编码矢量(fghj)’。
信号PNDFS6是在不同等性确定期间使用的信号,并且参考图5到8进行更详细的介绍。该信号也是S函数的组成部分。
现在参考图4,显示出AOI块380A。AOI块380A包括两个AND门410和420、OR门430以及反相器440。在该实例中,当NL30D和PB为高电平时或者当PL03和ND为高电平时,Nbb将为低电平。在该AOI块的例子中有四个输入。下面讨论在图中使用的其它AOI块。如果有额外的输入,通常每组输入会有一个AND门。但是,某些AOI块具有不是组的组成部分的单个输入。对于这些块,单个输入通常直接连接到OR门,例如OR门430,而不通过AND门。AO块,例如图3A的AO块385A,没有反相器440。在下图中所用的OA块中,有一个AND和多个OR,OR连接到输入端,AND连接到输出端。例如,四输入OA块具有代替AND410、420的OR,代替OR430的AND,并且没有反相器440。
C.8B/10B不同等性控制在图1和2中的表中的列‘DR分类’根据在DR列中的表示在首要编码矢量前面的必须的不同等性的加号和减号入口对矢量进行分类。表达式PDRS6、PDRS4和NDRS6、NDRS4分别表示在6B或4B矢量的开始的正或负必须的不同等性,并且在下面将更详细的介绍这些表达式。
PDRS6.在DR列中具有加号的6B矢量集被称作PDRS6。
PDRS6=L03·(D+E’)+L30·D·E’+L12·D’·E’NDRS6.在DR列中具有减号的6B矢量集被称作NDRS6。
NDRS6=L30·(D’+E)+L03·D’·E+L21·D·E+K
PDRS4.
PDRS4=F’·G’+(F≠G)·KNDRS4NDRS4=F·G在电路图中,信号名PDFS6、PDFS4和NDFS6、NDFS4分别表示在6B或4B矢量前面的实际运行不同等性。
如果DF和DR的极性不匹配,则产生选择替代矢量的补偿信号。作为一个例子,如果PDFS6和NDRS6都是真,则进行求补。
CMPLS6=NDFS6·PDRS6+PDFS6·NDRS6CMPLS4=NDFS4·PDRS4+PDFS4·NDRS4列‘DB分类’(块不同等性)识别所有的编码矢量,在DB列中的平衡的编码矢量用零标记。
BALS6.在DB列中的为零的6B矢量集称作BALS6。
BALS6=L21·(D’+E’)+L12·K’·(D+E)+L30·D’·E’BALS4.在DB列中的为零的4B矢量集称作BALS4。
BALS4=(F≠G)+F·G·H’通过假设高电平用于平衡字节的信号PBALBY,由信号BALS6和BALS4控制的附加电路表示字节平衡。
上述表达式由图3B的不同等性控制电路300B实现。不同等性控制电路300B包括反相器301B和302B、NAND门310B、NOR门320B到331B、XOR门340B、AO块350B到353B、AOI块360B和361B以及OA块370B。
在5B/6B和3B/4B编码器或几个并行工作的8B/10B编码器的组合延迟的减少由用于确定在任何矢量边界的不同等性的方法学产生。显示在图3B的电路图的底部和图5(在下面进一步详细讨论)的图中。给定起始不同等性,例如NDFBY(在字节前的负不同等性),如果在两点之间的平衡的S6和S4矢量的组合数为偶数,则在任何随后的矢量的边界处的运行不同等性保持不变,否则假设互补极性。这与更常规的遵守不同等性从一个矢量到另一个矢量传播的技术形成对比。表达式NDFS4表示在4B矢量前的负运行不同等性。
包括图3A的电路300A和图3B的电路300B的8B/10B编码器具有表示编码的10位字节是否平衡的输出(即,PBALBY),但没有表示最后不同等性的输出。通常,矢量的起始不同等性由之前的参考点的不同等性和之间的平衡矢量的奇偶数确定。
D.1字节编码器的不同等性电路,快速版本该电路利用了编码过程不需要马上知道起始不同等性的事实。由于在字节末端的运行不同等性的评定可能在重要延迟路径中,当进行独立于运行不同等性的初始位编码时,确定下一个字节的起始不同等性,PNDFS6,的最终操作被延迟到要执行的下一个字节间隔。这样做的成本是向下一个字节间隔传送两个参数而不是只有一个,用来将定时容限增加等于XNOR2的延迟的数量,这里“2”表示2输入门。
图5示出了不同等性电路500,根据由之前的字节延续下来的同样的两个参数提供当前字节的起始不同等性PNDFBY和编码字节不同等性‘PBALBY’。电路500包括8B/10B编码器510和XNOR门512。8B/10B编码器510包括电路300A和300B。在每个字节周期结束,信号PNDFBY和PBALBY存储在分别具有输出PNDFBY_LAST和PBALBY_LAST的两个锁存器中(未示出)。没有显示出锁存器是因为它们的定时与数据输出锁存器(也没有示出)的定时相同或相似。这些参数用于下一个字节的起始不同等性的计算。信号PNDFBY对于在新的字节前的一个负的运行不同等性为高电平。
源数据的每个字节具有两个编码的矢量(6B,4B)。因此,如果在当前字节的开始和前一个字节的边界之间的平衡或不平衡矢量为奇数,则当前字节的起始不同等性为在参考点的不同等性的补码;否则,相同。
不同等性电路500速度快的一个原因如下。因为之前的起始不同等性PNDFBY_LAST和之前的编码字节不同等性PBALBY_LAST已知,则在短延迟,一个XNOR门512的延迟,之后可以确定PNDFS6。如在图3B中所看到的,PNDFS6是不同等性控制电路300B的输入。仅在很短的延迟之后不同等性控制电路300B可以使用PNDFS6信号,并且随后不同等性控制电路300B产生信号NCMPLS6和NCMPLS4,由图3A中的编码电路300A分别用来反相(如果需要)六位和四位编码矢量。在六位编码矢量Pca、PCb、PDc、PCd、PCe和PCi编码后,信号NCMPLS6应当是可用的,这意味着8B/10B传输编码的一个字节的编码可以在一个周期中进行。
E.1字节编码器的不同等性电路,慢速版本为了更好的说明不同等性操作的快速方法,在图6中还示出了更传统的方式,并且可以用在不需要图5的更高性能的电路500的地方。图6示出了不同等性电路600,包括8B/10B编码器610和XNOR门612。虽然编码器610的时序与编码器510的时序不相同,但是编码器610基本上与编码器510相同。在传统的电路中,最后的不同等性PNDEBY来自在一个并且同一个编码周期中。然后,只有一个参数用一个锁存器传到下一个周期。该锁存器的数据输入为PNDEBY,输出为PNDFBY,是下一个字节前端的不同等性。
下面介绍不同等性电路600比不同等性电路500慢的原因。对于确定当前字节的在最后不同等性的不同等性电路600,当前字节的编码字节的不同等性PBALBY必须已知,这意味着编码器610的周期必须完成。然后,由XNOR 612在同一个周期中计算当前字节的最后不同等性PNDEBY。
虽然在单字节应用中与不同等性电路600相比不同等性电路500的速度有了改善,但是当不同等性电路500用在多字节并行编码的多字节应用中时,可以实现更大的速度改善。
F.用于四字节编码器的不同等性电路,更快的版本现在参考图7,示出了用于四字节编码器的不同等性电路700。该不同等性电路700显示出在四字节字(也称作“块”)PD0、PD1、PD2和PD3上并行操作的四个8B/10B编码器711、712、713和714。此外,作为不同等性电路700的一部分,还有三个XNOR门721、722和723以及两个XOR门731和732。
此外,该电路利用了编码过程不需要马上知道起始不同等性的事实。对于该应用,图3B的电路可以修改如下由信号PNDFS6和PDFS6选通的可以在逻辑链中向前移动。例如,根据门和互连的延迟特性,将各选通移到AO块350B和351B或者甚至是要改为AOI门的门330B是有利的。确定下一个四字节块的起始不同等性PNDFW的最终操作可以推迟到下一个字节间隔。在图7的右上部分的两个参数PBALBY3_LAST和PNDF3_LAST从在图7的底部的之前的块间隔延续下来。当前块的起始不同等性(或者前一个块的最后不同等性)由输入PNDFW(字前端的负不同等性)给出。剩下的三个字节(即,PD1、PD2和PD3)的每一个的起始不同等性由来自该参考点的并行工作的电路和之间的平衡字节的数量使用XOR组和XNOR门720到724得到。
如果包括前三字节的块(即PD0、PD1和PD2)是平衡的,则信号PBAL012是高电平。该字的最后不同等性PNDEW通过锁存器(未示出)传送到下一个字周期,其输出为下一个周期的起始不同等性PNDFW。此外,如果PNDEW信号的产生推迟到用于一个字节的情况的图5所示的下一个字周期编码延迟可以减小一个XNOR门的延迟。
某些设计人员实现了用于不同等性从一个字节到另一个字节传播的伴有严重延迟的菊链。例如,如果图6的使用当前字节的最后不同等性的不同等性电路600用在不同等性电路700中,则第二编码器712必须等待,直到确定来自第一编码器711的PBALBY0。同样,编码器713必须等待,直到确定来自第一编码器711的PBALBY0和来自第二编码器712的PBALBY1。这意味着在编码器能够完成其编码周期之前,每个编码器必须等待,直到之前的编码器完成其周期。图7的电路以更加并行的方式工作,并且将比常规设计的运行速度更快。
广义上讲,图7所示的是具有几个并行8B/10编码器的块编码器,并且根据在块和任何其它参考点前端的运行不同等性、在参考点和要考虑的字节之间的编码字节的数量以及在同样的间隔中的平衡字节的奇偶数,在多个编码的10位字节的每一个前端确定起始不同等性。如果在间隔中的字节的数量为奇数并且平衡矢量的数量也是奇数,则运行不同等性与在参考点的不同等性相同,否则互补。
G.用于四字节编码器的不同等性电路,较慢的版本现在参考图8,示出了用于四字节编码器的不同等性电路800。该不同等性电路800显示出在四字节字(也称作“块”)PD0、PD1、PD2和PD3上并行操作的四个8B/10B编码器811、812、813和814。此外,作为不同等性电路800的一部分,还有三个XNOR门821、822和823以及两个XOR门831和832。
如上所述,在传统的电路中,最后不同等性PNDEW来自一个并且相同的编码周期中。然后,只有一个参数用一个锁存器传到下一个周期。该锁存器的数据输入为PNDEW,输出为PNDFW,是下一个字前端的不同等性。下面介绍不同等性电路800比不同等性电路700慢的原因。对于确定当前四字节块的最后不同等性的不同等性电路800,当前块的编码字节的不同等性PBALBY(0、1、2、3)必须已知,这意味着编码器811到814的周期必须完成。然后,由XNOR 823计算当前块的最后不同等性PNDEW。
已经介绍了示例性的8B/10B编码器,下面将介绍相应的解码器。
II.10B/8B解码器解码器包括恢复原始字节ABCDEFGHK的电路,以及指示在它们通过传输编码可以检测的所有传输错误的电路。在图9中所示的表中列出了用于6B/5B解码的规则,在图11中所示的表中列出了用于4B/3B解码的规则,将在下面介绍。对分类进行了某些改变,以少量额外电路为代价能够更快地操作。
在图12所示的表中以简捷的形式列出了从图9和11所示的表中提取出来的用于字节解码的必须的位转化。编码位‘ABCDE FGH’的值分别等于编码位‘abcde fgh’,除了当编码位属于图12所示的表中列出的分类之一并且对于该分类的各个位列为假‘F’。
在美国专利No.4,486,739(上面作为参考引入)中介绍的解码器的逻辑实现和由Widmer发表的标题为“The ANSI Fibre Channel TransmissionCode”的IBM研究报告18855(1993),在这里将其公开作为参考引入,中试图使所需的电路面积最小化。在这些参考中通过重新使用例如解码和错误检查等用于各种目的的基本逻辑定义来完成。该方法增加了电路延迟,并且对于非常高速的应用不是最佳的。在这里介绍的高速实现对于位解码、不同等性分类DR和DU使用单独的分类,并且这些集合中的每一个采用最小延迟的IBM CMOS-7S或其它合适的技术来实现。
在当前的设计中,某些6B矢量集定义得更广泛,以允许在集合中的能够以更短延迟来简化逻辑项的无效矢量。能够产生无效矢量是因为存在48个6B/5B编码矢量,但六位可以有最大64个不同的矢量。例如,在传输期间出现的错误可以导致无效的编码矢量。新的定义对于有效输入的操作是相同的,但是对于无效输入,可能有不同的结束,需要考虑逻辑模型和验证。这些范围更广的分类还减少了在不同等性规则检查的主要通路中的延迟,因为不用明确地增加无效的编码矢量。使用更广泛的分类有两个好处更简单的实现和更少的逻辑项结果。注意,即使无效字节被解码为有效字节,它们也可以被用来确定无效字节的特殊信号线(即,PINVBY)标记。
矢量集P3x和Px3包括所有分别具有三或四个一和三或四个零的四位矢量‘abcd’,并代替老的P13、P31集合。集合P22、P04和P40只用在错误检查电路中,P22来自Px3和P3x。通过参考图9和11确定下面的方程式,并通过图10A和图10B中介绍的解码电路来实现。
P40=a·b·c·dP04=a’·b’·c’·d’
P3x=P31+P40=a·b·c+a·b·d+a·c·d+b·c·dPx3=P13+P04=a’·b’·c’+a’·b’·d’+a’·c’·d’+b’·c·d’P22=P3x’·Px3’矢量集P2x和Px2用来定义不同等性分类,包括所有分别有两个或三个一和两个或三个零的3位矢量。
P2x=P21+P30=a·b+a·c+b·cPx2=P12+P03=a’·b’+a’·c’+b’·c’在图9中所示的6B/5B解码表和在图11中所示的4B/3B解码表已经进行了反映这些改变的修改。注意,在图9和11中,K=(K28+Kx.7)=(c=d=e=i)+(e≠r)·(i=g=h=j)。
A.6B/5B解码器,有效性检查如下确定产生解码位A、B、C、D、E的逻辑方程式。通常,A=a,B=b,C=c,D=d,E=e,除了在图12的表中所列的条件(由“F”表示),产生各编码位的补码,例如,A=a’。
图10A和10B示出了单个电路和关于输入和输出的说明,并且也采用图3A和3B采用的共享的线路名。
参考图10A,显示出解码和有效性检查电路1000A。解码和有效性检查电路1000A包括反相器1001A到1006A,NAND门1010A到1026A,NOR门1030A到1032A,AND门1050A到1052A,XNOR门1035A到1040A,XOR门1045A到1046A,AO块1065A,AOI块1060A到1062A以及AOI块1070A。
随后的解码方程式是从图12中所示的表中提取的,由图10A中所示的电路实现。
1.A=a’iff(如果并且仅仅如果)a·b’·c’·d·(e=i)+P3x·i+a’·b·c’·d·(e=i)+a·b·e·i+Px3·(d·i+e’)+c’·d’·e’·i’使用布尔操作,该逻辑表达式可以重新构成如下
(a≠b)·c’·d·(e=i)+P3x·i+Px3·(d·i+e’)+a·b·e·i+c’·d’·e’·i’图9中所示的表的测试显示,在上面方程式的第一项[(a≠b)·c’·d·(e=i)]可以改为(a’+b’)·c’·d·(e=i)。该修改的表达式与也要求位‘a’的补码的D7(‘1000111’=Px3·d·i)重叠。由此,能够消除为位‘a=0’到‘A=1’解码的项Px3·d·i,由此减少在非主要路径中的延迟,但是这里的例子包括它,因为这样能够节省门。在图10A的电路图中实现的方程式为(a’+b’)·c’·d·(e=i)+P3x·i+Px3·(d·i+e’)+a·b·e·i+c’·d’·e’·i’在所述图10A的逻辑图中,使用下面的缩写n0=(a’+b’)·c’·d·(e=i)=c’·d·(e=i)·n8n1=Px3·(d·i+e’)n2=a·b·e·i+c’·d’·e’·i’n8=(a’+b’)CPLa=n0+n1+P3x·i+n2,这里CPL建议求补。
2.B=b’iffa’·b·c·d’·(e=i)+P3x·i+a·b’·c·d’·(e=i)+a·b·e·i+Px3·(d·i+e’)+c’·d’·e’·i’布尔约简给出(a≠b)·c·d’·(e=i)+P3x·i+Px3·(d·i+e’)+a·b·e·i+c’·d’·e’·i’通过检查图9中所示的表,可以验证第一项(a≠b)·c·d’·(e=i)可以重新简化为(a+b)·c·d’·(e=i)。但是,证明产生(a≠b)比(a+b)的延迟更少,因此,采用前一个表达式。
在逻辑图中,使用下面的缩写n3=c·d’·(e=i)·(a≠b)CPLb=n3+n1+P3x·i+n23.C=c’iffa’·b·c·d’·(e=i)+P3x·i+a’·b·c’·d·(e=i)+a’·b’·e’·i’+Px3·(d·i+e’)+c’·d’·e’·i’该逻辑表达式可以重新构成如下
a’·b·(c≠d)·(e=i)+P3x·i+Px3·(d·i+e’)+e’·i’·(a’·b’+c’·d’)在逻辑图中,使用如下缩写n4=a’·b·(c≠d)·(e=i)n5=e’·i’·(a’·b’+c’·d’)CPLc=n4+n1+P3x·i+n54.D=d’iffa·b’·c’·d·(e=i)+P3x·i+a·b’·c·d’·(e=i)+a·b·e·i+Px3·(d·i+e’)+c’·d’·e’·i’该逻辑表达式可以重新构成如下a·b’·(c≠d)·(e=i)+P3x·i+a·b·e·i+Px3·(d·i+e’)+c’·d’·e’·i’在逻辑图中,使用如下缩写n6=a·b’·(c≠d)·(e=i)CPLd=n6+n1+P3x·i+n25.E=e’iffa·b’·c’·d·(e=i)+Px3·i’+a’·b·c’·d·(e=i)+a’·b’·e’·i’+Px3·(d·i+e’)+c’·d’·e’·i’布尔约简简化如下(a≠b)·c’·d·(e=i)+Px3·(d·i+e’+i’)+e’·i’·(a’·b’+c’·d’)检查图9的表显示对于位‘a’到‘A’的解码有如上所述的重叠。在这种情况下,利用重叠可以节省门,并删除项Px3·d·i。由此方程式简化为(a’+b’)·c’·d·(e=i)+Px3·(e’+i’)+e’·i’·(a’·b’+c’·d’)在逻辑图中,使用如下缩写n7=Px3·(e’+i’)CPLe=n0+n7+n5无效矢量R6的逻辑方程式,INVR6。总共有16个无效的R6矢量INVR6=P40+P04+P3x·e·i+Px3·e’·i’关于在解码电路图中网络名的符号的说明对于布尔运算符,采用与编码图中相同的字母,但它们是大写的(A、O、N、E、UE),以避免与表示编码位的小写字母abcdeifghj混淆。
B.6B/5B不同等性检查在图10B中示出了进行6B/5B不同等性检查的电路1000B。不同等性检查电路1000B包括NAND门1001B到1027B,NOR门1030B和AOI块1040B到1044B。
图9的表的列‘DR’列出了在各个6B矢量的起始处所要求的不同等性,列‘DR分类’标示各输入位模式。在上面作为参考引入的“The ANSIFibre Channel Transmission Code”的常规列‘DB’变为DU,目前只列出了不同等性相关矢量的正或负出口不同等性。不同等性无关矢量在DU列中没有入口。在“The ANSI Fibre Channel Transmission Code”的常规设计中,不同等性无关矢量将输入的不同等性传递到输出。换句话说,如果当前矢量为不同等性无关矢量,则当前矢量的输出不同等性设为输入不同等性。在这里公开的新的设计中,忽略不同等性无关矢量,并且为了得到更短的延迟旁路不同等性无关矢量。短延迟对于在图10B中显示出的DU输出PDUR6和NDUR6(NDUR6是PDUR6的反码)特别重要,因为它们在主要路径中。为了实现该目标,增加了专用列‘DU分类’,以更有效的方式将收到的矢量进行DU分类,从而对于不同等性无关矢量不进行不同等性传递或确定。
必须的输入不同等性DRR6的逻辑方程式。项PDRR6和NDRR6表示R6矢量(即,具有六位的接收矢量),在矢量的起始分别需要正或负的运行不同等性。与常规实现相反,已经从方程式中忽略了以P40或P04起始的所有无效矢量,由于它们在整个错误检查方案中的冗余。换句话说,以P40或P04起始的矢量是无效的,因此在不同等性确定中没有理由是用它们。
PDRR6=Px3·(e’+i’)+a’·b’·c’+(a·b·c)’·d’·e’·i’+Px2·e’·i’NDRR6=P3x·(e+i)+a·b·c+(a’·b’·c’)’·d·e·i+P2x·e·i布尔操作化简为
PDRR6=Px3·(e’+i’)+a’·b’·c’+e’·i’·[Px2+d’·(a·b·c)’]NDRR6=P3x·(e+i)+a·b·c+e·i·[P2x+d·(a’·b’·c’)’]在图10B中,网络名采用如下简化n20=(a·b·c)’·d’n21=(a’·b’·c’)’·dn22=PDRR4·NDRR6’n23=NDRR4·PDRR6’监视字节不同等性违背的逻辑方程式。为了不同等性检查的目的忽略只有不同等性无关矢量R6和R4的字节。在如下条件下在特定字节存在不同等性违背1.R6矢量的必需的入口不同等性与在前面字节的运行不同等性不匹配。
2.R6矢量为不同等性无关的,并且R4矢量的必需的入口不同等性与在字节前端的运行不同等性不匹配。
对于在主要路径中减小延迟的实现,不确定矢量R6的不同等性无关。相反,矢量R4的入口不同等性与在字节前端的不同等性相比较,并且根据不匹配标记错误,除了当矢量R6具有与运行不同等性相匹配的必需的入口不同等性时。
字节内部的来自不同等性相关R4矢量与不同等性相关R6矢量不匹配的不同等性违背包括在无效字节集合中,而不在DVBY中。因此,字节的不同等性违背DVBY由方程式给出DVBY=NDFBY·(PDRR6+PDRR4·NDRR6’)+PDFBY·(NDRR6+NDRR4·PDRR6’)项PDFBY和NDFBY分别表示在字节前端的正和负运行不同等性。
如果需要,通过将AND门1025B和1024B与NDRR6和PDRR6函数合并可以除去在以上方程式中的一级选通(图10B中的NAND门1027B和1026B)。首先复制两个AOI 222门1043B和1044B,变为非反相形式的,并扩展到AO 2222(即,四个二输入AND门,随后是四输入OR门)以直接产生PNDR和PDR。
对于假定的最后不同等性PDUR6和NDUR6的方程式。在上面引入作为参考的“The ANSI Fibre Channel Transmission Code”的19页上列出并说明了产生出口不同等性PDUR6和NDUR6、无效矢量PINVR6和不同等性违背的逻辑方程式。这里进行了一些简化。对于表达式PDBR6和NDBR6,项P40和P04分别由P40·(e+i)和P04·(e’+i’)代替。在编码域中的项P40和P04可以仅由至少一个错误产生。对于一个错误并且e=i的情况,除了在实际错误位置的无效矢量之外,R6矢量显然初始是平衡的,所以不需要产生在下一个不同等性相关矢量处产生多余编码违背的PDUR6或NDUR6。因此PDUR6=P3x·(e+i)+d·e·i+P2x·e·i=P3x·(e+i)+e·i·(d+P2x)NDUR6=Px3·(e’+i’)+d’·e’·i’+Px2·e’·i’=Px3·(e’+i’)+e’·i’·(d’+Px2)C.4B/3B解码器,错误检查图13示出了用于4B/3B传输编码的解码和错误检查的解码和错误检查电路1300。解码和错误检查电路1300包括反向器1301到1308、NAND门1310到1327、NANDN1门1355到1357、XNOR 1340到1346、XOR门1350、AO块1360、AOI块1365以及OAI块1370和1371。
产生解码位F、G、H、K的逻辑方程式。通常,F=f、G=g、H=h,除了在图12的表中所列的具有F(假)入口的条件产生各编码位的补码,例如,H=h’。
在图11所示的表中,行D/Kx.3(0011)、D/Kx.4(1101)以及Dx.7(0001)的解码分类都变为(f=g)·j,并且同样的改变也在其它矢量分类中进行。这样简化了在图12所示的表中的分类列的最后五行的方程式。根据该改变,从图12中所示的表中提取出下面的解码方程式,并由图13的解码和错误检查电路1300实现。
1.F=f’iff(如果并且仅仅如果)
(f≠g)·h·j+(f=g)·j+c’·d’·e’·i’·(h≠j)在逻辑图中,使用如下缩写m0=(f≠g)·h·jm7=c’·d’·e’·i’·(h≠j)CPLf=m0+(f=g)·j+m72.G=g’iff(f≠g)·h’·j’+(f=g)·j+c’·d’·e’·i’·(h≠j)CPLg=(f≠g)·h’·j’+(f=g)·j+m73.H=h’ifff·g’·(h=j)+(f=g)·j+c’·d’·e’·i’·(h≠j)定义m2=f·g’·(h=j)CPLh=m2+(f=g)·j+m7控制位K的逻辑方程式。
K=(K28+Kx.7)=(c=d=e=i)+(e≠i)·(i=g=h=j)为了减小延迟,上述方程式实现如下K=c·d·e·i+c’·d’·e’·i’+(e≠i)·(i·g·h·j+i’·g’·h’·j’)在逻辑图中,使用如下缩写m10=i·g·h·j+i’·g’·h’·j’Kx7=m10·(e≠i)用于在R4矢量前端的必需的不同等性的逻辑方程式。项PDRR4和NDRR4分别表示在R4矢量前端的必需的正或负不同等性。
PDRR4=f’·g’+(f≠g)·h’·j’NDRR4=f·g+(f≠g)·h·j=f·g+m0用于假设的最后不同等性PDUR4 and NDUR4的逻辑方程式。
PDUR4=h·j+f·g·(h≠j)NDUR4=h’·j’+f’·g’·(h≠j)用于无效矢量R4、INVR4的逻辑方程式。总共有两个固有的无效R4矢量全一或全零(f=g=h=j)。一些R6和R4矢量的无效组合也在该电路组合体中检测,并且集中在信号INVR4,例如,S函数规则(e=i=f=g=h)和具有P22分类的R6矢量的Kx.7控制字符的违背。在常规设计中,这些不合适的R6矢量分类为平衡矢量,这导致更复杂的电路。K28·(f=g=h)字符在编码约束方面是有效控制字符,但不包括在8B/10B字母表中,因为它需要特殊的编码电路。它包括在无效字符组中。
如果满足以下条件,则接收到了无效的Kx.7控制字符VKx7=(i·g·h·j+i’·g’·h’·j’)·(e≠i)·P22=m10·(e≠i)·P22其它无效R4矢量集中到信号INVR4INVR4=(f=g=h=j)+(e=i=f=g=h)+K28·(f=g=h)+K28’·(i≠g=h=j)定义m5=K28·(f=g=h)m6=K28’·(i≠g=h=j)INVR4=(f=g=h=j)+(e=i=f=g=h)+m5+m6D.10B/8B解码器,错误检查在图14中示出了用于10B/8B传输编码的解码和进行错误检查的电路1400。电路1400包括6B/5B解码块1410、4B/3B解码块1420、反相器1430和1431、NAND门1440和1441、NOR门1450以及OAI块1460和1461。6B/5B解码块1410分别是图10A和10B中所示的电路1000A和1000B。4B/3B解码块1420是图13中所示的电路。
错误报告。
电路1400将6B/5B解码器1410和4B/3B解码器1420合并为字节解码器,并产生表示固有无效字节的信号PINVBY。这包括根据当前字节的仅仅10个编码位的检查而显然的不同等性违背NDV64。信号PVIOL指示在该位置或之前的字节中的错误引起的检测到的无效字节或不同等性违背NDVBY。
不同等性监视。
如果两个中的一个或者两个矢量是不同等性相关的,则PDUBY或PNDUBY有效,在字节的最后分别建立起正或负运行不同等性PDUBY=PDUR4+PDUR6·NDUR4’NDUBY=NDUR4+NDUR6·PDUR4’E.字节不同等性,快速版本符号信号名PDFBY和NDFBY分别是指在字节前端的正和负运行不同等性。信号名PDUBY和NDUBY分别是指字节的假设的正或负出口不同等性,而不管在前端的起始不同等性。如果字节的6B矢量和4B矢量都不是不同等性相关的,则两个输出都无效。
图15示出了字节不同等性电路1500,包括10B/8B解码块1510、反相器1520和1521以及OAI块1530。10B/8B解码块1510是图14中所示的电路1400。
输出NDFBY、PDUBY和PNDUBY的值存储在三个锁存器(未在图中示出)中与解码数据输出同时用时钟驱动。锁存器的输出分别记作NDFBY_LAST、PDUBY_LAST和PNDUBY_LAST,用于计算下一个字节的起始不同等性NDFBY。
确定在字节的起始处的不同等性的逻辑方程式。
PDFBY=PDUBY_LAST+PDFBY_LAST·NDUBY_LAST’注意,NDFBY和PDFBY是互补的NDFBY=PDFBY’。
PDUBY和NDUBY的值是互斥的,没有或只有一个可以为真。
图15的电路类似于图5的电路,其中在当前周期计算期间使用在上一个字节开始处的运行不同等性和上一个字节的出口同等性加速处理。
F.字节不同等性,慢速版本图16示出了在字节的最后产生运行不同等性的慢速版本的电路1600。电路1600包括10B/8B解码器1610(基本上与解码器1510相同)、反相器1620和1621以及OAI块1630。
使用慢速版本的原因是为了节省两个锁存器。如果定时不是很严格,最后不同等性PDEBY与解码和错误检查在同一个周期中产生。因此,只有这一个参数必须以传统的方式传送到下一个周期。该锁存器(未示出)的输出是信号PDFBY,在新的字节前端的不同等性。如果最长的延迟路径是到PDEBY的输出,则把与一个反相器加一个OAI 21门相关的延迟加到主要路径中。
减慢的原因是电路1600使用前一个字节的最后的运行不同等性以及当前字节的最后的不同等性。
G.四字节字解码器在图17中示出了四字节字解码器。四字节字解码器1700包括10B/8B解码块1710、1711、1712和1713,反相器1720到1727,NOR门1730到1734,OAI块1740到1742以及AO块1750到1752。
符号信号名PDFBY0和NDFBY0分别是指字节#0前端的正和负不同等性。
信号名PDUBY0和NDUBY0分别是指字节#0假设的正和负出口不同等性。如果字节的6B矢量和4B矢量都不是不同等性相关的,则两个输出都无效。
输出PDFBY3、PNDFBY3、PDUBY3和PNDUBY3的值分别存储在提供PDFBY3_LAST、PNDFBY3_LAST、PDUBY3_LAST和PNDUBY3的锁存器(未示出)中,用于计算在图的顶部的下一个字周期的起始不同等性PDFBY0和PNDFBY0。
用于在字节的起始处确定不同等性的逻辑方程式。
PDFBY0=PDUBY3_LAST+PDFBY3_LAST·NDUBY3_LAST’NDFBY0=NDUBY3_LAST+NDFBY3_LAST·PDUBY3_LAST’PDFBY0和NDFBY0的值是互补的,但PDUBY3和NDUBY3的值是互斥的,没有或只有一个可以为真。
为了最小化电路延迟,字节#1、#2和#3前端的不同等性的值不是依次一个字节一个字节确定的,而是根据字节#0前端的不同等性以及在之间由字节引起的不同等性的变化确定的。
PDFBY1=PDUBY0+PDFBY0·NDUBY0’NDFBY1=NDUBY0+NDFBY0·PDUBY0’PDFBY2=PDUBY1+PDUBY0·NDUBY1’+PDFBY0·NDUBY0’·NDUBY1’n0=NDUBY0+NDUBY1PDFBY2=PDUBY1+PDUBY0·NDUBY1’+PDFBY0·n0’NDFBY2=NDUBY1+NDUBY0·PDUBY1’+NDFBY0·PDUBY0’·PDUBY1’n1=PDUBY0+PDUBY1NDFBY2=NDUBY1+NDUBY0·PDUBY1’+NDFBY0·n1’PDFBY3=PDUBY2+PDUBY1·NDUBY2’+PDUBY0·NDUBY1’·NDUBY2’·PDFBY0·NDUBY0’·NDUBY1’·NDUBY2’n2=NDUBY0+NDUBY1+NDUBY2n3=NDUBY1+NDUBY2PDFBY3=PDUBY2+PDUBY1·NDUBY2’+PDUBY0·n3’·PDFBY0·n2’NDFBY3=NDUBY2+NDUBY1·PDUBY2’+NDUBY0·PDUBY1’·PDUBY2’·NDFBY0·PDUBY0’·PDUBY1’·PDUBY2’n4=PDUBY0+PDUBY1+PDUBY2n5=PDUBY1+PDUBY2NDFBY3=NDUBY2+NDUBY1两倍厚度PDUBY2’+NDUBY0·n5’·NDFBY0·n4’在实现图17的电路1700中,利用了以下关系PNDFBY1=PDFBY1’PNDFBY2=PDFBY2’这些信号不在主要路径中,并且增加的取反不会降低最大速度。对于具有足够时间容限的应用,对于信号PNDFBY3也可以采用同样的简化,并且或许PNDFBY3是以这两个信号的每一个的反相为代价。
应当理解,这里所显示和介绍的实施例和变型只是为了说明本发明的原理,并且本领域的技术人员可以实现各种修改而不脱离本发明的范围和精神。
权利要求
1.一种为在任何矢量边界具有加或减一运行不同等性的平衡的二进制编码确定当前矢量边界处的运行不同等性的方法,包括当在之前的参考点和当前矢量边界之间有奇数个不平衡矢量时,将运行不同等性设置为在之前的参考点的不同等性的取补不同等性;以及当在之前的参考点和当前矢量边界之间有偶数个不平衡矢量时,将运行不同等性设置为在之前的参考点的不同等性。
2.根据权利要求1的方法,还包括确定在之前的参考点和当前矢量边界之间有奇数个还是偶数个矢量的步骤。
3.根据权利要求2的方法,其中方法的每个步骤包括许多子步骤,并且在下一个编码周期中至少执行方法步骤的一个或多个的子步骤中的一个,并基于来自当前编码周期的在参考点的不同等性的存储值和在参考点与当前矢量边界之间出现的矢量的不同等性特征。
4.根据权利要求2的方法,还包括,当在之前的参考点和当前矢量边界之间有偶数个矢量时,步骤为确定在之前的参考点和当前矢量边界之间有偶数个还是奇数个平衡矢量;当有偶数个平衡矢量时,设置运行不同等性匹配参考点处的不同等性;以及当有奇数个平衡矢量时,设置运行不同等性为参考点处的不同等性的补码。
5.根据权利要求4的方法,其中在下一个编码周期中至少执行方法的步骤中的一个,并基于来自当前编码周期的在参考点的不同等性的存储值和在参考点与当前矢量边界之间出现的矢量的不同等性特征。
6.根据权利要求5的方法,其中在下一个编码周期中执行方法的所有步骤。
7.根据权利要求2的方法,还包括,当在之前的参考点和当前矢量边界之间有奇数个矢量时,步骤为确定在之前的参考点和当前矢量边界之间是有奇数个还是偶数个平衡矢量;当有奇数个平衡矢量时,设置运行不同等性匹配参考点处的不同等性;以及当有偶数个平衡矢量时,设置运行不同等性为参考点处的不同等性的补码。
8.根据权利要求7的方法,其中在下一个编码周期中至少执行方法的步骤中的一个,并基于来自当前编码周期的在参考点的不同等性的存储值和在参考点与当前矢量边界之间出现的矢量的不同等性特征。
9.根据权利要求8的方法,其中在下一个编码周期中执行方法的所有步骤。
10.一种用于编码的电路,包括适于将五位源矢量编码为六位编码矢量和将三位源矢量编码为四位编码矢量的8B/10B编码器,从而由八个输入位产生10位编码字节;以及适于根据在之前的编码字节前端的运行不同等性和指示之前的编辑字节是否平衡的单比特参数的值确定在编码字节前端的起始不同等性的不同等性电路。
11.根据权利要求10的电路,其中8B/10B编码器还包括一个5B/6B编码电路,适于当5B/6B编码电路检测到在五位源矢量中第三位为一或者前四位的值为零或者前三位的值为零并且后面的位为一时将六位编码矢量的第三编码位设置为一。
12.根据权利要求11的电路,其中的5B/6B编码电路还适于当5B/6B编码电路检测到在五位源矢量中,后面的位为一而前四位不是三个零后面跟一个一,或者最后两位的值为零以及前三位中的一位的值为一,或者前三位的值为零随后的第四位的值为一并且后面的位的值为零时,将六位编码矢量的第五编码位设置为一。
13.根据权利要求12的电路,其中的5B/6B编码电路还适于当5B/6B编码电路检测到在五位源矢量中,后面的两位的值为零并且前三位中一位的值为零,或者一个控制输入的值为一或最末两位的值不相等并且前三位中一位的值为一,或者前四位的值为零并且最末位的值为一,或者五位全为一时,将六位编码矢量的最末一个编码位设置为一。
14.根据权利要求13的电路,其中的5B/6B编码电路还适于当5B/6B编码电路检测到在五位源矢量中,前三位的值为零并且最后一位的值为零,或者前三位的值为零而随后的第四位的值为一,或者前四位的值为一并且最后一位的值为零,或者最后两位的值为零并且前三位中的一位的值为一时,确定在六位编码矢量的前端需要一个正的运行不同等性。
15.根据权利要求14的电路,其中的5B/6B编码电路还适于当5B/6B编码电路检测到在五位源矢量中,前三位和最后一位的值为一,或者前三位的值为一而随后的第四位的值为零,或者前四位的值为零并且最后一位的值为一,或者最后两位的值为一并且前三位中的一位的值为零,或者控制线的值为一时,确定在六位编码矢量的前端需要一个负的运行不同等性。
16.根据权利要求15的电路,其中的5B/6B编码电路还适于当5B/6B编码电路检测到在五位源矢量中,前三位中的一位的值为零并且最后两位中的至少一位的值为零,或者前三位中的一位的值为一并且最后两位中的至少一位的值为一并且控制输入的值为零,或者前三位的值为一并且最后两位的值为零时,确定在六位编码矢量是平衡的。
17.根据权利要求10的电路,其中8B/10B编码器还包括一个3B/4B编码电路,适于如果3B/4B编码电路检测到在三位源矢量中,前两位具有不相等的值,或者前两位都是一而随后的最后一位的值为零时,确定四位编码矢量是平衡的。
18.一种块编码器,包括多个并行操作的8B/10B编码器,每个8B/10B编码器将五位源矢量编码为六位编码矢量并将三位源矢量编码为四位编码矢量,从而由八个输入位产生10位编码字节;以及适于根据在参考点的运行不同等性、在参考点和一个10位编码字节之间的编码字节的奇偶数以及在参考点和一个10位编码字节之间的平衡字节的奇偶数确定在一个10位编码字节前端的起始不同等性的不同等性电路。
19.根据权利要求18的块编码器,其中当在参考点和一个10位编码字节之间的字节数为奇数并且在参考点和一个10位编码字节之间的平衡矢量的数量也是奇数时,不同等性电路适于将不同等性设置成与参考点的不同等性相同,并且当平衡矢量的数量是偶数时,不同等性电路适于将不同等性设置成与参考点的不同等性互补。
20.根据权利要求18的块编码器,其中当在参考点和一个10位编码字节之间的字节数为偶数并且在参考点和一个10位编码字节之间的平衡矢量的数量也是偶数时,不同等性电路适于将不同等性设置与与参考点的不同等性相同,并且当平衡矢量的数量是奇数时,不同等性电路适于将运行不同等性设置成与参考点的不同等性互补。
21.一种为在任何字节边界具有加或减一的运行不同等性的平衡二进制编码在字节前端检测不同等性违背的方法,该方法包括确定字节的必需的前端不同等性;以及通过将实际运行不同等性设置成等于不同等性相关的下一个之前的字节的出口不同等性将字节的必需的前端不同等性与实际运行不同等性相比较。
22.一种用于解码10B/8B编码字节的电路,该电路包括适于将六位编码矢量解码为五位源矢量和将四位编码矢量解码为三位源矢量的10B/8B解码器,从而由10位编码字节产生八位解码字节;以及通过将实际运行不同等性设置成等于不同等性相关的下一个之前的10位编码字节的出口不同等性将10位编码字节的必需的前端不同等性与实际运行不同等性相比较。
23.根据权利要求22的电路,其中10B/8B解码器还包括一个6B/5B解码电路,适于当6B/5B解码电路在六位编码矢量中检测到下面五种位结构的一种时(1)最后两位的值相等,第四位的值为一,第三位的值为零,并且最前两位中至少一位的值为零;(2)在前四位中,有三位或四位的值为一并且最后一位的值为一;(3)在前四位中,有三位或四位的值为零并且第五位的值为零或者在第四和最后一位的值为一;(4)前两位和最后两位的值都为一;以及(5)最后四位的值为零,对六位编码矢量的第一编码位求补。
24.根据权利要求23的电路,其中的6B/5B解码电路还适于当6B/5B解码电路在六位编码矢量中检测到下面五种位结构的一种时(1)最后两位的值相等,前两位的值不相等,第三位的值为一,第四位的值为零;(2)在前四位中,有三位或四位的值为一并且最后一位的值为一;(3)在前四位中,有三位或四位的值为零并且第五位的值为零或者在第四和最后一位的值为一;(4)前两位和最后两位的值都为一;以及(5)后四位的值为零,对六位编码矢量的第二编码位求补。
25.根据权利要求24的电路,其中的6B/5B解码电路还适于当6B/5B解码电路在六位编码矢量中检测到下面五种位结构的一种时(1)最后两位的值相等,第三和第四位的值不相等,第一位的值为零,第二位的值为一;(2)在前四位中,有三位或四位的值为一并且最后一位的值为一;(3)在前四位中,有三位或四位的值为零并且第五位的值为零或者在第四和最后一位的值为一;(4)前两位和最后两位的值都为零;以及(5)后四位的值为零,对六位编码矢量的第三编码位求补。
26.根据权利要求25的电路,其中的6B/5B解码电路还适于当6B/5B解码电路在六位编码矢量中检测到下面五种位结构的一种时(1)最后两位的值相等,第三和第四位的值不相等,第一位的值为一,第二位的值为零;(2)在前四位中,有三位或四位的值为一并且最后一位的值为一;(3)在前四位中,有三位或四位的值为零并且第五位的值为零或者在第四和最后一位的值为一;(4)前两位和最后两位的值都为一;以及(5)后四位的值为零,对六位编码矢量的第四编码位求补。
27.根据权利要求26的电路,其中的6B/5B解码电路还适于当6B/5B解码器在六位编码矢量中检测到下面四种位结构的一种时(1)最后两位的值相等,第四位的值为一,第三的值为零,并且在最前两位中至少有一个为零;(2)在前四位中,有三位或四位的值为零并且最后两位中至少有一个为零;(3)前两位和最后两位的值都为零;以及(4)后四位的值为零,对六位编码矢量的第五编码位求补。
28.根据权利要求22的电路,其中10B/8B解码器还包括一个4B/3B解码器,适于当4B/3B解码电路在四位编码矢量中检测到下面三种位结构的一种时(1)前两位的值不相等并且最后两位的值为一;(2)前两位的值相等并且最后一位的值为一;以及(3)最后两位的值不相等并且之前的六位矢量的后四位的值都为零,对四位编码矢量的第一编码位求补。
29.根据权利要求28的电路,其中的4B/3B解码电路还适于当4B/3B解码电路在四位编码矢量中检测到下面三种位结构的一种时(1)前两位的值不相等并且最后两位的值为零;(2)前两位的值相等并且最后一位的值为一;以及(3)最后两位的值不相等并且之前的六位矢量的后四位的值都为零,对四位编码矢量的第二编码位求补。
30.根据权利要求29的电路,其中的4B/3B解码电路还适于当4B/3B解码器在四位编码矢量中检测到下面三种位结构的一种时(1)后两位的值相等,第一位的值为一,并且第二位的值为零;(2)前两位的值相等并且最后一位的值为一;以及(3)最后两位的值不相等并且之前的六位矢量的后四位的值都为零,对四位编码矢量的第三编码位求补。
31.根据权利要求22的电路,其中10B/8B解码电路还包括一个6B不同等性错误检查电路,适于当6B不同等性错误检查电路在六位编码矢量中检测到下面四种位结构的一种时(1)在前四位中,三或四位的值为零,并且在最后两位中至少一位的值为零;(2)前三位的值都是零;(3)在前三位中有两位或三位的值为零,并且最后两位的值为零;以及(4)最后三位的值都是零,并且前三位的值不是全一,将一个正的必须的前端不同等性分配给任何六位编码矢量。
32.根据权利要求31的电路,其中的6B不同等性错误检查电路还适于当6B不同等性错误检查电路在六位编码矢量中检测到下面四种位结构的一种时(1)在前四位中,三或四位的值为一,并且在最后两位中至少一位的值为一;(2)前三位的值都是一;(3)在前三位中有两位或三位的值为一,并且最后两位的值为一;以及(4)最后三位的值都是一,并且前三位的值不是全零,将一个负的必须的前端不同等性分配给任何六位编码矢量。
33.根据权利要求32的电路,其中的6B不同等性错误检查电路还适于当6B不同等性错误检查电路在六位编码矢量中检测到下面三种位结构的一种时(1)在前四位中,三或四位的值为一,并且在后两位中至少一位的值为一;(2)后三位的值都是一;以及(3)在前三位中有两位或三位的值为一,并且最后两位的值为一,将一个正的出口不同等性分配给任何六位编码矢量。
34.根据权利要求33的电路,其中的6B不同等性错误检查电路还适于当6B不同等性错误检查电路在六位编码矢量中检测到下面三种位结构的一种时(1)在前四位中,三或四位的值为零,并且在最后两位中至少一位的值为零;(2)后三位的值都是零;以及(3)在前三位中有两位或三位的值为零,并且最后两位的值为零,将一个负的出口不同等性分配给任何六位编码矢量。
35.根据权利要求22的电路,其中10B/8B解码电路还包括一个4B不同等性错误检查电路,该4B不同等性错误检查电路适于在四位编码矢量中检测到下面两种位结构的一种时(1)前两位的值都是零;以及(2)最后两位的值都是零,并且前两位的值不相等,将一个正的必须的前端不同等性分配给任何四位编码矢量。
36.根据权利要求35的电路,其中的4B不同等性错误检查电路还适于当4B不同等性错误检查电路在四位编码矢量中检测到下面两种位结构的一种时(1)前两位的值都是一;以及(2)最后两位的值都是一,并且前两位的值不相等,将一个负的必须的前端不同等性分配给任何四位编码矢量。
37.根据权利要求36的电路,其中的4B不同等性错误检查电路还适于当4B不同等性错误检查电路在四位编码矢量中检测到下面两种位结构的一种时(1)后两位的值都是一;以及(2)在前两位的值为一,并且最后两位的值不相等,将一个正的出口不同等性分配给任何四位编码矢量。
38.根据权利要求37的电路,其中的4B不同等性错误检查电路还适于当4B不同等性错误检查电路在四位编码矢量中检测到下面两种位结构的一种时(1)后两位的值都是零;以及(2)在前两位的值为零,并且最后两位的值不相等,将一个负的出口不同等性分配给任何四位编码矢量。
全文摘要
在解码和编码期间,通过使用某些之前参考点的不同等性以及从参考点到当前块边界的字节的不同等性特性计算当前块的起始不同等性。字节的特征为字节是否是不平衡的编码矢量以及不平衡矢量的数量是奇数还是偶数。此外,字节的特征为字节是否是平衡的以及存在多少平衡的编码矢量。为编码和解码3B/4B和5B/6B传输编码产生新的分类。产生针对特殊不同等性方面的单独的函数。在解码期间通过假设实际运行不同等性等于不同等性相关的下一个之前的字节的出口不同等性将必须的字节的前端不同等性与实际运行的不同等性相比较,检测字节前端的不同等性违背。
文档编号H03M7/20GK1529941SQ02809444
公开日2004年9月15日 申请日期2002年4月30日 优先权日2001年5月8日
发明者A·X·威德默, A X 威德默 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1