微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > CRC除法的余数为什么跟普通除法产生的余数不一样

CRC除法的余数为什么跟普通除法产生的余数不一样

时间:10-02 整理:3721RD 点击:
以一位朋友的CRC计算的例子为基础
信息字段代码为: m(x)=x6+x4+x3+1    代码为:1011001       10进制89
生成多项式:    g(x)=x4+x3+1       代码为:11001         10进制25
普通计算方法  89/25  = 3  余数   14  即1110
而CRC计算过程及结果如下
m(x)x4=x10+x8+x7+x4 对应的代码记为:10110010000     即 左移4位
m(x)x4 在与 g(x)进行 模2的除法运算,相当于按位异或,计算过程如下:
1 0 1 1 0 0 1 0 0 0 0
1 1 0 0 1
-----------------------------
0 1 1 1 1 0 1 0 0 0 0
  1 1 0 0 1
-----------------------------
0 0 0 1 1 1 1 0 0 0 0
      1 1 0 0 1
-----------------------------
      0 0 1 1 1 0 0 0
          1 1 0 0 1
-----------------------------
          0 0 1 0 1 0             --------------> 余数     即 校验码   结果为十进制 10
请问我的计算过程哪里出现了问题?还是异或本身的计算特性
小弟问题很傻瓜,各位看官请轻拍

你的问题是:
在做除法的过程中,我们是用被除数减去商乘以除数。你是直接用被除数减去除数。
正确的结果为:
                     x2             +x
                     ___________
  x4+x3+1   | x6+x4+x3+1
                      x6+x5+x2
                     ---------------
                            x5+x4+x3+x2 +1
                            x5+x4+x
                           -----------------------
                                        x3+x2+x+1

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top