【S006】CRC8 verilog

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 - 博客园

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1615549892

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值