CRC16并行计算的Matlab推导_第1页
CRC16并行计算的Matlab推导_第2页
CRC16并行计算的Matlab推导_第3页
CRC16并行计算的Matlab推导_第4页
CRC16并行计算的Matlab推导_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CRC16并行计算的Matlab推导本文使用的CRC16的生成多项式为:X16 + X15 + X2 + 1其对应的串行编码图如下图所示。假设输入数据的位宽为8比特,即I7,I6,I5,I4,I3,I2,I1,I0,I为Input的首字母。I0表示最低比特位,I7表示最高比特位。在串行模式下,I0先输入CRC16计算模块,于是I0输入后各个寄存器的状态变化如下:D, = D + D +10 TOC o 1-5 h z 151415D, = D1413D, = D1312D, = D1211D, = D1110D, = D109d9 = D8d8 = D7d7 = D6d6 = D5D5 = D

2、4d4 = D3d3 = D2d2 = di5+d1 + i TOC o 1-5 h z D = D 10D0 = % + IO可以将以上表达式组成矩阵乘法的形式,则有: HYPERLINK l bookmark8 o Current Document D = T D + S 10其中,D为d J D15构成的列向量,用转置矩阵的形式表示为:D = ( D0 D D2 D3 D4 D5 D6 D7 D8 D9 D 0 D” D2 D 3 D 4 D 5 同理,D,是D 0- %构成的列向量,用转置矩阵的形式表示为:D (D0D;D2D3D4D5D6D7D8D9DD”D2 D3D4噩)表达式(1

3、)中的矩阵T,表示为:000000001 000000000000010000000000001000100010000000000000000000000000000000000000000000010000000 1 0 0 0 0 00010000000000010000000000000000000000000 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 0、0 0 0 000000000000000000000000000001000010000100001000000000000

4、0 0 0 00 0 0 00 0 0 00 0 0 0 10 0 00 10 00 0 11 ,表达式(1)中的矩阵S也是一个列向量,表示为:S = (1 010000000000 00 1k当I1输入后各个寄存器的状态为:D(2)= T D + S 11 = T(T D+ S 10)+ S 10 = T2 D+T S 10+ S 11以此类推,当17输入后各寄存器的状态为:D(8) = T8 D + T7 S 10 + T6 S 11 + T5 S 12 + T4 S 13 + T3 S 14 +T 2 S 15 + T1 S 16 + T 0 S 17上式中T 7 S 10 + T 6

5、S 11 + T 5 S 12 + T 4 S 13 + T 3 S 14 + T 2 S 15 + T1 S 16 + T 0 S 17可以看成两个矩阵A和B的相乘A*B,其中A = T7ST 6ST 5ST 4ST 3ST 2ST 1ST 0S0 )0 )000000I000001000000002 TOC o 1-5 h z 00I0003000I0040000I0500000I6000000于是D (8)可以简化为D (8) = T 8 D + A B而此时各个寄存器中的值就是最后要求的CRC16的值。对应的matlab程序如下:T8=mod(T八8),2); %计算结果对2取模,是因

6、为我们执行的是二进制%加减运算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),

7、2);T0S =mod(T0*S),2);A= T7S, T6S, T5S, T4S, T3S, T2S, T1S, T0S;B=eye(8);C=A*B;运算结果:T8 =11111111100990D0ne09eeRnfi1000S90900D目D060i090B0ft99a66Rnq001eeBg0日0Qguuu3i90fl8日00nnarW口1小0Eli0Qeuuuh10110GGG3nnoa0日111日0Qguuua90fl011GG033n0a&00口U日11flDeUuu日0fl00G1133nn&0日0e0&811UuuuuB88g000日目11G00090B目1111111u

8、Uuu9Baaa1i111111g009900所以将T8和C带入D(8) = T8 D + A B ,就能得到各个寄存器中最后的值,这也就是CRC16的并行计算实现,最后用Verilog写出CRC16并行计算的代码:番 signn&x t_cr _fpgH=l*crc_in7:0 (*crc_rpgl5:8);assign山?汁“1-”crc_reg11 crc_reg19;assignneKt_crc_reg5=crc_lnH - crc_ln3crc_reg| 12 crc_regH;assignriex t_cr c_re y 0=crc_in3 * crc_in2 ”crc_reg13 * crc_reg12;aiBsignneKt crc reg7=crc_in2 crc_in1crc_reg14 crc_regia|assignniG|t_cri:_reg8=crc_lnl * crc_lnO ”crc_reglS * rc-_reglU八 crc_regi0;assigrneKt_crc_reg9-crc_in8 crc_reg15-crc_reg1l;assign assignneKt crc reg1li: 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论