当前位置:   article > 正文

【S006】CRC8 verilog_verilog hdl calculate crc8 hash

verilog hdl calculate crc8 hash

CRC参数 :POLY,INIT,REFIN,REFOUT,XOROUT。
POLY    :十六进制多项式,省略最高位1,如 x8 + x2 + x + 1,二进制为1 0000 0111,省略最高位1,转换为十六进制为0x07。
INIT    :CRC初始值,INIT与输入异或
REFIN   :true或false,在进行计算之前,原始数据是否bit顺序翻转,如原始数据:0x34 = 0011 0100,如果REFIN为true,进行翻转之后为0010 1100 = 0x2c
REFOUT  :true或false,运算完成之后,得到的CRC值是否进行翻转,如计算得到的CRC值:0x97 = 1001 0111,如果REFOUT为true,进行翻转之后为11101001 = 0xE9。
XOROUT  :计算结果与此参数进行异或运算后得到最终的CRC值,和WIDTH位宽一致。
私有定义 d_in[7:0] 是输入的数据。
//第一轮
d0[7 :0]        =       d_in[7 :0]  ^ INIT[7 :0];
d1[7 :0]        =       REFIN==TRUE ? {d0[0:7]}  :  d1[7:0]   ;
d2[15:0]        =       {d1[7 :0],8'd0}   ;
d3[15:0]        =       mod2div(d2[15:0],POLY[8:0])  ;
d4[7 :0]        =       XOROUT[7:0] ^ d3[7:0]   ;
d5[7 :0]        =       REFOUT==TRUE ? {d4[0:7]}  :  d4[7:0]   ;
CRC8[7:0]       =       d5[7 :0]  ;
//第2轮
将INIT替换为上一轮的CRC8[7:0]结果。
//...
 

CRC校验原理及实现 - 知乎

基于FPGA的CRC校验码生成器 - BitArt - 博客园

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/689542
推荐阅读
相关标签
  

闽ICP备14008679号