CRC _Generator _32_8

记录一下crc32_8的代码
数据为8位
CRC校验位:32位

推算流程:
这里写图片描述

推导过程比较复杂,这里贴一下data第7位数据校验后的crc_check
化简后的
这里写图片描述

代码实现

//--------------------crc_check---------------------------------
    always @(posedge clk or negedge rst_n)
    if(!rst_n)
        crc_check <= 32'd0;
    else if(crc_ck_en)begin
        crc_check[0] <= crc_check[24] ^ crc_check[30] ^ data_in[1] ^ data_in[7];
        crc_check[1] <= crc_check[25] ^ crc_check[31] ^ data_in[0] ^ data_in[6] ^ crc_check[24] ^ crc_check[30] ^data_in[1]^data_in[7];
        crc_check[2] <= crc_check[26] ^ data_in[25] ^ crc_check[25] ^ crc_check[31] ^ data_in[0] ^ data_in[6] ^crc_check[24]^crc_check[30]^data_in[1]^data_in[7];
        crc_check[3] <= crc_check[27] ^ data_in[4] ^ crc_check[26] ^ data_in[25] ^ crc_check[25] ^ crc_check[31] ^data_in[0]^data_in[6];
        crc_check[4] <= crc_check[28] ^ data_in[3] ^ crc_check[27] ^ data_in[4] ^ crc_check[26] ^ data_in[5] ^ crc_check[24]^crc_check[30]^data_in[1]^data_in[7];
        crc_check[5] <= crc_check[29] ^ data_in[2] ^ crc_check[28] ^ data_in[3] ^ crc_check[27] ^ data_in[4] ^ crc_check[25]^crc_check[31]^data_in[0]^data_in[6]^crc_check[24]^crc_check[30]^data_in[1]^data_in[7];
        crc_check[6] <= crc_check[30] ^ data_in[1] ^ crc_check[29] ^ data_in[2] ^ crc_check[28] ^ data_in[3] ^ crc_check[26]^data_in[25]^crc_check[25]^crc_check[31]^data_in[0]^data_in[6];
        crc_check[7] <= crc_check[31] ^ data_in[0] ^ crc_check[29] ^ data_in[2] ^ crc_check[27] ^ data_in[4] ^ crc_check[26]^data_in[5]^crc_check[24]^data_in[7];
        crc_check[8] <= crc_check[0] ^ crc_check[28] ^ data_in[3] ^ crc_check[27] ^ data_in[4] ^ crc_check[25] ^ data_in[6] ^ crc_check[24] ^ data_in[7];
        crc_check[9] <= crc_check[1] ^ crc_check[29] ^ data_in[2] ^ crc_check[28] ^ data_in[3] ^ crc_check[26] ^ data_in[5] ^ crc_check[25] ^ data_in[6];
        crc_check[10] <= crc_check[2] ^ crc_check[29] ^ data_in[2] ^ crc_check[27] ^ data_in[4] ^ crc_check[26] ^ data_in[5] ^ crc_check[24] ^ data_in[7];
        crc_check[11] <= crc_check[3] ^ crc_check[28] ^ data_in[3] ^ crc_check[27] ^ data_in[4] ^ crc_check[25] ^ data_in[6] ^ crc_check[24] ^ data_in[7];
        crc_check[12] <= crc_check[4] ^ crc_check[29] ^ data_in[2] ^ crc_check[28] ^ data_in[3] ^ crc_check[26] ^ data_in[5] ^ crc_check[25] ^ data_in[6]^crc_check[24]^crc_check[30]^data_in[1]^data_in[7];
        crc_check[13] <= crc_check[5] ^ crc_check[30] ^ data_in[1] ^ crc_check[29] ^ data_in[2] ^ crc_check[27] ^ data_in[4] ^ crc_check[26] ^ data_in[5]^crc_check[25]^crc_check[31]^data_in[0]^data_in[6];
        crc_check[14] <= crc_check[6] ^ crc_check[31] ^ data_in[0] ^ crc_check[30] ^ data_in[1] ^ crc_check[28] ^ data_in[3] ^ crc_check[27] ^ data_in[4]^crc_check[26]^data_in[5];
        crc_check[15] <= crc_check[7] ^ crc_check[31] ^ data_in[0] ^ crc_check[29] ^ data_in[2] ^ crc_check[28] ^ data_in[3] ^ crc_check[27] ^ data_in[4];
        crc_check[16] <= crc_check[8] ^ crc_check[29] ^ data_in[2] ^ crc_check[28] ^ data_in[3] ^ crc_check[24] ^ data_in[7];
        crc_check[17] <= crc_check[9] ^ crc_check[30] ^ data_in[1] ^ crc_check[29] ^ data_in[2] ^ crc_check[25] ^ data_in[6];
        crc_check[18] <= crc_check[10] ^ crc_check[31] ^ data_in[0] ^ crc_check[30] ^ data_in[1] ^ crc_check[26] ^ data_in[5];
        crc_check[19] <= crc_check[11] ^ crc_check[31] ^ data_in[0] ^ crc_check[24] ^ data_in[7];
        crc_check[20] <= crc_check[12] ^ crc_check[28] ^ data_in[3];
        crc_check[21] <= crc_check[13] ^ crc_check[29] ^ data_in[2];
        crc_check[22] <= crc_check[14] ^ crc_check[24] ^ data_in[7];
        crc_check[23] <= crc_check[15] ^ crc_check[25] ^ data_in[6] ^ crc_check[24] ^ crc_check[30] ^ data_in[1] ^ data_in[7];
        crc_check[24] <= crc_check[16] ^ crc_check[26] ^ data_in[5] ^ crc_check[25] ^ crc_check[31] ^ data_in[0] ^ data_in[6];
        crc_check[25] <= crc_check[17] ^ crc_check[27] ^ data_in[4] ^ crc_check[26] ^ data_in[5];                     
        crc_check[26] <= crc_check[18] ^ crc_check[28] ^ data_in[3] ^ crc_check[27] ^ data_in[4] ^ crc_check[24] ^ crc_check[30] ^ data_in[1] ^ data_in[7];
        crc_check[27] <= crc_check[19] ^ crc_check[29] ^ data_in[2] ^ crc_check[28] ^ data_in[3] ^ crc_check[25] ^ crc_check[31] ^ data_in[0] ^ data_in[6];
        crc_check[28] <= crc_check[20] ^ crc_check[30] ^ data_in[1] ^ crc_check[29] ^ data_in[2] ^ crc_check[26] ^ data_in[5];
        crc_check[29] <= crc_check[21] ^ crc_check[31] ^ data_in[0] ^ crc_check[30] ^ data_in[1] ^ crc_check[27] ^ data_in[4];
        crc_check[30] <= crc_check[22] ^ crc_check[31] ^ data_in[0] ^ crc_check[28] ^ data_in[3];
        crc_check[31] <= crc_check[23] ^ crc_check[29] ^ data_in[2];
    end
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值