阵的形式表示为:同理,是~构成的列向量,用转置矩阵的形式表示为:表达式(1)中的矩阵T,表示为:表达式(1)中的矩阵S也是一个列向量,表示为:当I1输入后各个寄存器的状态为:以此类推,当I7输入后各寄存器的状态为:上式中可以看成两个矩阵A和B的相乘A*B,其中A=[T7ST6ST5ST4ST3ST2ST1ST0S]于是可以简化为而此时各个寄存器中的值就是最后要求的CRC16的值。对应的matlab程序如下:T8=mod((T^8),2);%计算结果对2取模,是因为我们执行的是二进制%加减运算T7=mod((T^7),2);T6=mod((T^6),2);T5=mod((T^5),2);T4=mod((T^4),2);T3=mod((T^3),2);T2=mod((T^2),2);T1=mod((T^1),2);T0=mod((T^0),2);S=[1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1]';T7S=mod((T7*S),2);T6S=mod((T6*S),2);T5S=mod((T5*S),2);T4S=mod((T4*S),2);T3S=mod((T3*S),2);T2S=mod((T2*S),2);T1S=mod((T1*S),2);T0S=mod((T0*S),2);A=[T7S,T6S,T5S,T4S,T3S,T2S,T1S,T0S];B=eye(8);C=A*B;运算结果:所以将T8和C带入,就能得到各个寄存器中最后的值,这也就是CRC16的并行计算实现,最后用Verilog写出CRC16并行计算的代码:掌握了上面的推导过程,就能很容易的进行扩展,只要知道了输入数据位宽以及生成多项式,我们就能很容易的用本文的方法推导出其对应的并行计算过程。----------THEEND,THEREISNOTXTFOLLOWING.------------