公开/公告号CN1630204A
专利类型发明专利
公开/公告日2005-06-22
原文格式PDF
申请/专利权人 旺宏电子股份有限公司;
申请/专利号CN200410070305.6
申请日2004-07-26
分类号H03M13/09;H03M13/00;
代理机构11127 北京三友知识产权代理有限公司;
代理人马娅佳
地址 台湾省新竹科学工业园区
入库时间 2023-12-17 16:16:48
法律状态公告日
法律状态信息
法律状态
2020-07-14
未缴年费专利权终止 IPC(主分类):H03M13/09 授权公告日:20080514 终止日期:20190726 申请日:20040726
专利权的终止
2008-05-14
授权
授权
2005-08-24
实质审查的生效
实质审查的生效
2005-06-22
公开
公开
技术领域
本发明有关一种平行化循环冗余码(Cyclic Redundancy Code;CRC)计算,特别是关于一种具有一矩阵转换技术的高效能CRC计算方法及系统。
背景技术
在储存及传送系统中,CRC被使用一段很长的时间,以保护正确的数字资料,特别是在使用于传送及数据处理的应用中,CRC是一种重大错误侦测的工具。因为CRC的架构容易使用及侦测大等级的错误,因此通常使用于检查正确的资料。CRC为一种加总值,在一传输媒介之上,加总值随资料被传送在一来源节点及一目标节点之间,该来源节点利用一预先决定的多项式计算被传送资料的CRC及当时传送资料与CRC一起到目标节点,在目标节点被接收资料的CRC是利用预先决定的产生器多项式独立地产生及从来源节点被接收的CRC被比较以检查是否错误发生在传送期间。目标的资料或讯息同样为二进制的多项式,其CRC相当于一特定的产生器多项式由先提升讯息多项式至一适合的次方被产生及当时由产生器多项式除以讯息多项式获得其余数。为了CRC的产生,资料位典型地是串行式输入至一CRC产生器按顺序产生适当的CRC码以与资料一起传送。传统地CRC码是由线性反馈位移缓存器(Linear Feedback Shift Register;LFSR)电路产生。一LFSR得到输入资料及位移穿过一正反器的序列在连续时脉周期。该位移缓存器的装置输出及资料输入经由互斥或门反馈至正反器。一LFSR可能被定义在一产生器多项式方面,其是关于经由一多项式表示的输入资料及CRC码以及产生器多项式方面的″+″系一互斥或门动作。正反器的状态在位移程序完成后为CRC码。
例如,ATM利用一FCS字段得到CRC错误侦测码以作错误检查。在一ATM系统中确保正确的传送或处理讯息是由附加在FCS讯息的末端传送此讯息,因此此讯息能在接收端被检查以正确的传送。FCS码已被标准化以正确检查资料就像在ANSI X3.139-1987的文件第28及29页所述。所有的CRC码组成一有限的杰罗斯场域(Galois Field;GF),以及属于GF的CRC 32码由下列产生器多项式的32阶所产生:
g(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1.
这个32阶数的产生器多项式是被选择当作一标准以在以太网络作错误检查而且当时由ATM标准选择当作AAL5的错误检查。在电路中为了计算FCS或检查讯息,在GF中一LFSR执行一位一位的乘法运算,即,在取多项式的模数上产生GF,以及在最高位(MSB)先输入的方式中由每个讯息的位被输入至LFSR并由反馈执行除法。在FCS程序结束时有某些讯息是在位移缓存器内,即,除法的余数。
在大型数字系统中,因为硬件的速度快,其当作CRC产生器有更好的效率。CRCs硬件的缺点是许多硬件需要增加成本、尺寸及复杂度以及减少可靠度。利用软件执行CRCs是大家所熟悉的,由于其速度不可避免的变慢因此使用并不普遍。那些熟习该项技术的人士选择一高阶的多项式将导致较大的错误被发现。然而,由于电路应用在大尺寸系统,所需执行的硬件变得相当复杂以及昂贵地而且所要求的软件需要大量的计算。数种CRC产生器改善的方法被使用,例如,由利用CRC程序产生由选择多项式所结合所有可能构成的表格,其加总值的产生变成一表格来查询。这CRC程序被认为是最快速有效完成的软件,但是其需花费大量的专用内存。早期的CRC利用LFSR的构想来实现,在LFSR中多项式的分割为一次处理一位。然而,CRC所产生串行式的处理相当地慢,当技术演进时,单一位的CRC产生不能够运算高速数据处理及传送,因此发展平行的CRC算法以符合这些需求。现行的CRC算法被限制在平行的程度,其关键的理由是根植于LFSRs的观念。所有现行的算法都尝试解决相同的问题,即,如何平行化一位一位LFSRs的运算,结果,在平行的程度从未超过LFSRs的尺度。
因此,一种平行化CRC计算的方法及系统乃为所冀,以减少CRC码产生的步骤。
发明内容
本发明被应用于一简化CRC计算的方法,由加速CRC产生的处理并简化系统的电路。
在一方法及系统中简化CRC的计算,根据本发明,一线性映像矩阵被使用于LFSR的运算以产生该CRC,而且在该映像矩阵中由在映像该输入讯息到该循环冗余码的计算的前实施一或多列运算该线性映像矩阵减少该非零字段的最大值。在该映像矩阵中各种的转换矩阵被提供使得该非零字段的最大值的减少。另外,在双字符型式CRC 32的例子方面,根据该输入讯息长度的类型,在该传送端上,该输入讯息被垫入特定的哑位,或在该接收端上,该CRC的输出被比较特定的态样(Pattern)。
本发明的目的是这样实现的:一种具有矩阵转换技术的循环冗余码计算的方法,其特征在于,包括下列步骤:
定义一产生器矩阵具有一非零字段的最大值以作为一线性反馈位移缓存器符合一线性地格式映像一输入向量至一余数向量;
转换该产生器矩阵至一相似矩阵以减少该非零字段的最大值;
将该讯息以该格式安排输入到该输入向量中;以及
由该相似矩阵与该输入向量相乘转换该讯息成一循环冗余码。
一种具有矩阵转换技术的循环冗余码计算系统,其特征在于,包括:
将该讯息以该格式安排输入到一输入向量中的功能手段;
一产生器矩阵具有一非零字段的最大值以作为一线性反馈位移缓存器符合一线性地格式映像一输入向量至一余数向量;
转换该产生器矩阵至一相似矩阵的功能手段,以减少该非零字段的最大值;以及该相似矩阵与该输入向量相乘的功能手段。
附图说明
图1显示一多项式产生器的两个架构中分别从MSB及LSB端位移进入LFSR的讯息;
图2显示图1线性映像的两个架构;
图3显示单位元型式CRC 32产生的映像矩阵及其反矩阵;
图4显示字节型式CRC 32产生的电路图;
图5显示字节型式CRC 32产生的映像矩阵及其反矩阵;
图6显示应用于图四的架构1中,符合具有一矩阵转换的CRC计算电路;
图7显示具有一管线结构的CRC产生器,其是由在图6中显示电路的S转换的输出额外插入一32位型态正反器;
图8显示具有一管线结构的CRC检查器符合在图7中所显示的电路;
图9显示一用于双字符型式CRC 32的矩阵U的良好解;
图10显示一矩阵S的良好解符合图9的矩阵U;
图11显示一用于传送字节型式CRC 32产生器的矩阵U的良好解;
图12显示一矩阵S的良好解符合图11的矩阵U;
图13显示一用于传送字节型式CRC 32产生器的电路符合图11的矩阵U及图12的矩阵S;
图14显示一用于接收字节型式CRC 32检查器的矩阵U的良好解;
图15显示一矩阵S的良好解符合图14的矩阵U;以及
图16显示一用于接收字节型式CRC 32检查器的电路符合图14的矩阵U及图15的矩阵S。
具体实施方式
系统化格式中的循环码
一个(n,k)线性码C被称为一循环码,若在C中每一循环码向量的位移亦是在C中的一个码向量,是众所周知的。在传送端上算出一循环码在一系统的形成,让讯息被译码为
M=(mk-1...m1m0)T, (EQ-1)
以及对应的讯息多项式为
m(x)=m0xk-1+m1xk-2+...+mk-2x+mk-1, (EQ-2)
之后m(x)乘上xn-k,数学式EQ-2成
xn-km(x)=m0xn-1+m1xn-2+...+mk-2xn-k+1+mk-1xn-k, (EQ-3)
然后,xn-km(x)除上产生器多项式g(x),数学式EQ-3变成
xn-km(x)=q(x)g(x)+r(x), (EQ-4)
由重新整理数学式EQ-4及将余数的符号反转以取代原本的余数,将得到一码字多项式
xn-km(x)+r(x)=q(x)g(x), (EQ-5)
显然地,这一码字多项式可被产生器多项式g(x)整除。
由上所述,可以归纳在一系统化格式中的循环码包括:
步骤1.讯息m(x)乘上xn-k;
步骤2.xn-km(x)除上产生器多项式g(x)得到余数r(x);以及
步骤3.结合r(x)及xn-km(x)以得到码字多项式xn-km(x)+r(x)。
同样地,在接收端上为了检查被接收码字的完整性,由被接收的序列被产生器多项式g(x)整除来验证。
缩短的循环码
给一个(n,k)循环码C,若码向量的集合最高1个位的信息数字都是0,那将变成2k-1的码向量以及形成一线性C的子码。若1个0的信息数字被删除,将得到一2k-1向量的集合,其长度为n-1。这些缩短的向量形成一(n-1,k-1)线性码,这个码被称为一缩短的循环码且不是循环的。
除法器的实现
不管一循环码是进行编码或译码,杰罗斯场域GF(2)的除法器是必要的。例如,一简单的线性反馈位移缓存器(Linear Feedback Shift Register;LFSR)系用以实现除法器。再者,依照被除数序列由MSB端或LSB端位移进入LFSR,有两个架构用以达到一除法器的实现,即
架构1:讯息从MSB端被位移进入LFSR,其数学等式为
m(x)xn-kmodg(x), (EQ-6)
架构2:讯息从LSB端被位移进入LFSR,其数学等式为
m(x)modg(x), (EQ-7)
如图所示,图1所显示的两个电路为产生器多项式g(x)=x3+x2+1的两个架构。
线性映像
再者,在图1所显示的线性反馈位移缓存器可以被当作一数学地线性映像,如图2所示。由于相同的产生器多项式g(x)=x3+x2+1,可以得到G映像:
g0(2)=gi(2)gi(1), (EQ-8a)
g0(1)=gi(0),以及 (EQ-8b)
g0(0)=gi(2), (EQ-8c)
这个线性映像可以被表示在一矩阵中,例如
其中
一般来说,矩阵G为可逆的而且其反矩阵
根据架构1及2,所存在的递归数学式系介于多项式产生器g(x)的D型正反器的输出及编码讯息的输入之间,如
架构1:
R(k)=G(R(k-1)+M(k-1)),以及 (EQ-12)
架构2:
R(k)=GR(k-1)+M(k-1), (EQ-13)
进一步追踪D型正反器的输出,即,在架构1中,除法的余数结果为
R(0)=I, (EQ-14a)
R(1)=G(R(0)+M(0))=GI+GM, (EQ-14b)
R(2)=G(R(1)+M(1))
=G2I+G2M(0)+GM(1), (EQ-14c)
…
R(k)=G(R(k-1)+M(k-1))
=GkI+GkM(0)+Gk-1M(1)+...+GM(k-1)。 (EQ-14d)
FCS的产生
在802.3所制订的标准中,使用CRC 32以产生FCS以及产生器多项式系
g(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1,(EQ-15)
在数学上,由下列的程序来定义CRC的值符合一给予的讯框:
a.)前32位的讯框被互补;
b.)k位的讯框被当作是多项式m(x)阶数k-1的系数;
c.)m(x)与x32相乘以及与g(x)相除,以提出一余数r(x)的阶数小于或等于31;
d.)r(x)的系数被当作是一32位序列;以及
e.)互补该位序列并得到FCS f(x)。
在程序a中,揭露两种实施的方法:
方法1:直接地互补讯息的前32位;以及
方法2:把D型正反器初始化为一特定值,例如,架构1的0xffffffff及架构2的0x46af6449。
映像矩阵G及其反矩阵G-1被显示在图3中。
在接收端上,当讯框的整体被得到,架构1CRC检查器的输出与0xc704dd7b的值作比较以检查被接收的讯框的完整性。其理由在此处被解释。
使传送讯息(除了FCS之外)使用一多项式的形式来表现
m(x)=m0xk-1+m1xk-2+...+mk-2x+mk-1, (EQ-16)
以及定义一多项式c(x)的31阶数所有的系数
c(x)=1x31+1x30+...+1x2+1x+1, (EQ-17)
然后由程序c产生余数r(x)
r(x)=(m(x)+c(x)xk-32)x32modg(x), (EQ-18)
之后实施程序d到e,其将产生FCS及传送序列
f(x)=r(x),以及 (EQ-19)
n(x)=m(x)x32+f(x), (EQ-20)
在接收端上,若这个讯框序列的完整被维持,其除法的余数将是
s(x)=(n(x)+c(x)xk)x32modg(x)
=(m(x)x32+f(x)+c(x)xk)x32modg(x)
=(m(x)x32+c(x)xk+f(x))x32modg(x)。 (EQ-21)
由数学式EQ-18,数学式EQ-21可以进一步被修改为
s(x)=(q(x)g(x)+r(x)+f(x))x32modg(x)
=(r(x)+f(x))x32modg(x)
=c(x)x32modg(x)
=[0xc704dd7b][x31...x11]T。 (EQ-22)
基于相似的推导,若架构2被使用,其检查态样是0xffffffff的值,能够进一步被得到。
平行化CRC计算
到目前为止编码讯息每次一个位被连续地输入到CRC计算,然而,在高速应用时,CRC计算被要求在每次具有多个讯息位同时输出的能力以增加处理能力,例如,字节型式。因此,前述的主要结构提出维持两个架构以及在映像矩阵具有仅仅些微的差异。
使输入讯息及正反器的状态分别被表示成一向量形式,如
M(k)=[mk 0...0]T,以及 (EQ-23)
R(k)=[rk31 rk30...rk0]T, (EQ-24)
追踪R(k)受到M(k)值的影响,
首先,R(0)=0, (EQ-25a)
然后,R(1)=G(R(0)+M(0))=GM(0),以及 (EQ-25b)
R(2)=G(R(1)+M(1))=G2M(0)+GM(1), (EQ-25c)
可以进一步证实
G2M(0)=m0×G2矩阵的第一行,以及 (EQ-26a)
GM(1)=m1×G矩阵的第一行。 (EQ-26b)
定义一个具有非零字段1(32)的新向量,如
M1(k)=[mkl-1 mkl-2...mk0 0...0]T (EQ-27a)
=[mk*l mk*l+1...mk*l+l-1 0...0]T, (EQ-27b)
当l=2及k=0时,成为
M2(0)=[m0 m1...0...0]T, (EQ-28)
以及进一步得到
G2M2(0)=m0×G2矩阵的第一行+m1×G2矩阵的第二行, (EQ-29)
检查G矩阵的内容,可以发现
G矩阵的第一行=G2矩阵的第二行, (EQ-30)
因此,可得到
G2M2(0)=G2M(0)+GM(1), (EQ-31)
以及其更包括
G1M1(0)=G1M(0)+Gl-1M(1)+...+GM(l-1),当l 32时。(EQ-32)
当每次讯息被输入到字节型式的格式中,输入讯息及计算的余数向量被表示为
若架构1被使用,递归输入讯息的数学式及计算的余数为
R(k+1)=T(R(k)+M8(k)), (EQ-35)
而且其电路被显示在图4中。
同样地,若架构2被使用,递归数学式将为
R(k+1)=TR(k)+M8(k), (EQ-36)
而且其电路亦被显示在图4中。
关于数学式EQ-35及36,映像矩阵T及其反矩阵被显示在图5中,以及矩阵T中在每一列右边的数字表示各列具有几个非零字段。例如,在矩阵T中,第1列具有四个非零字段以及这些列中具有最大值的非零字段系第5、12及13列,值为7。在图5的矩阵T,对于一特定列,非零字段的数目-1等于GF(2)加法器(模数2)所需的数目。若在矩阵T中非零字段的最大值减少,由于在矩阵乘法或递归程序中计算的大幅度减少,CRC电路的运算速度可以进一步被提升。
类似性矩阵的定义:
若有两个矩阵T及U,其关系为
U=STS-1, (EQ-37)
其中S为一可逆矩阵,矩阵U与矩阵T称为具有类似性。基于具有类似性的矩阵可以得到两个特点
a.)Tk=S-1UkS,以及
b.)若T是可反逆的,则U亦是可反逆的。
将以上的特点代入数学式EQ-12及以T取代G将得到
R(k)=S-1US(R(k-1)+M(k-1)), (EQ-38a)
SR(k)=U(SR(k-1)+SM(k-1))。 (EQ-38b)
令
然后
在图6显示符合数学式EQ-40的电路。
再者,为了形成在图7显示的管线结构,在图6显示的电路中S转换的输出额外地插入一32位型式正反器,不会影响数学式。
另一方面,若CRC计算被应用于接收端,为了与Pi作比较而提出一种替代的方法以忽略实际上的硬件操作,即,比较正反器的输出与SPi的值,如前述所言其可以被达成。前述结果的电路被显示在图8。
为了方便,令Ψ(T)代表非零字段的最大值在矩阵T的所有列。分析图7的电路,若Ψ(U)及Ψ(S)均小于Ψ(T),将可得到一优点是CRC计算可以操作在一更高的时脉速率。为了寻找这类的矩阵U及S,提出一个策略由乘上一些基本列运算矩阵R(i,j)使矩阵S被产生,这种作用是为了第i列与第j列相加以从而产生一新的第j列。关于一3×3的矩阵T,例如,产生另一矩阵U,其第0及1列系与矩阵T的第0及1列相同而且矩阵U的第2列系矩阵T第0及2列的总和,矩阵U可以由在矩阵T的左边乘上一列运算矩阵被得到
此外,R(0,2)的反矩阵将等于R(0,2),即
因此
矩阵S及U的搜寻算法
步骤1:令S(0)=I,S-1(0)=I,U(0)=T以及k=0。
步骤2:若存在一列运算矩阵R(i,j),使得
Ψ(R(i,j)U(k)R(i,j))<Ψ(U(k))及
Ψ(R(i,j)S(k))Ψ(T)两数学式成立,则进行步骤3,反之则进行步骤4。
步骤3:S(k+1)=R(i,j)S(k),S-1(k+1)=S-1(k)R(i,j),
U(k+1)=R(i,j)U(k)R(i,j),以及k=k+1,然后进行步骤2。
步骤4:令S=S(k),S-1=S-1(k),以及U=U(k),
于是STS-1=U,Ψ(U)<Ψ(T),以及Ψ(S)Ψ(T)。
双字符型式CRC 32
藉由执行程序以实现上述的步骤搜寻后,矩阵S及U总共具有242个解,以满足在双字符型式CRC 32例子中的尺寸,其良好解被显示在图9及图10中。
然而,在字节型式的格式中除了讯息输入的例子,媒体存取控制(MAC)讯框以八位格式为基础,而且处理讯息的长度并未永远被4整除。因此,当双字符型式CRC的计算被使用时,为了具有双字符型式的格式而在讯息上垫入某些哑位。哑位垫上的两个策略被进一步的提出:
策略1:在传送端处理讯息的前缀前面垫上某些具有0值的8位元素;以及
策略2:在接收端处理讯息的字尾后面垫上某些具有0值的8位元素。
当每次讯息被输入到双字符型式的格式中,输入讯息及计算的余数向量为
类似于字节型式的状态,架构1及2的递归数学式R(k)为
R(k+1)=T(R(k)+M32(k)),以及 (EQ-45a)
R(k+1)=TR(k)+M32(k), (EQ-45b)
在双字符型式的例子中,不论一个讯框的长度是多少,根据其长度可以被分成四种型态:4n、4n+1、4n+2及4n+3。若策略1被使用,正反器的初始值将随讯框的长度型态而改变,如下表所列
表1
其递归数学式为
R(1)=TC(0),以及 (EQ-46a)
R(2)=T(R(1)+C(1))=T2C(0)+TC(1), (EQ-46b)
令正反器的初始值为R(0),使得
T2R(0)=T2C(0)+TC(1),或 (EQ-47a)
R(0)=C(0)+T-1C(1), (EQ-47b)
而R(0)被列表如下
表2
在策略2中,正反器的输出结果将随程序讯框的长度变化以检查一接收讯框的完整性,其暗示为输出Pi将与一特定的态样比较以下列的规则决定长度型态i
在i=1、2、3及4时,Pi=G8i[0xc704dd7b]T, (EQ-48)
其态样如下
表3
若方法1被使用,从表2及
表4
同样地,基于转换及表3,若方法2被使用,其检查态样将是
表5
正常及转换类型CRC计算的比较被总结如下
表6
字节型式CRC 32
由执行程序搜寻之后,矩阵S及U具有大于一亿个解,以满足在字节型式CRC 32例子中的尺寸,其两组良好解被提供,一组在传送端而另一组在接收端。关于传送CRC产生器的良好解,图11及12显示矩阵Utx-08及Stx-08,而且图13叙述对应的电路。关于接收CRC检查器的良好解,图14及图15显示矩阵Urx-08及Srx-08,而且图16叙述对应的电路。
正反器的初始值可以由数学式EQ-40被计算出。令
假设
那么
正常及转换类型CRC计算的比较被总结如下
表7
机译: 发送数据流的循环冗余码计算方法,以受保护数据帧为输入序列,计算循环冗余码
机译: 循环冗余码的计算方法
机译: 循环冗余校验码计算方法,包括对处理器的缓存中的预计算表进行预计费,并根据处理器的缓存大小确定段数和各自的长度