CRC并行编码的纠错电路分析(计组)

CRC并行编码电路如图:

22位CRC编码,数据位16位,5位校验码,另设1位总校验码

其中的纠错电路:

各个选择的数值是如何来的?


结论:一个一个算出来的

只考虑发生一位错的情况下,将每一位出错情况的余数和校验码异或,根据异或的结果输入到多路选择器中,多路选择器输出哪一位出错

① 令CRC编码的第 n 位发生错误,得到一个余数值

② 将该余数值与其他余数值、校验码(正确的余数值)异或,得到异或结果

③ 根据异或结果,选择哪一位出错(第 n 位)出错 (这一步需要人工确定选择)

事实上,观察多路选择器的所有选择,除了 0000,其余的都是只有1位是1,比如4000 H= 0100 0000 0000 0000 B,也就是说只能纠正一位错

比如,第 6 位发生错误,算出来的异或结果是 0a\ H\oplus 05\ H\oplus 05\ H=0a\ H,是多路选择器第 10 个选择,此时的选择是0002 H

也就是数据位的第2位发生了错误,可以看到第 6 位确实是数据位的第 2 位(数据范围:第 5 ~ 20 位,第 21 位即最高位设为总校验码)

计算出每一位出错的选择之后,剩下的位置就是多位错和校验码错的情况,这两种情况我们不对数据纠错,因此选择为0000

用选择器得到余数的原理

选择器的每个选择,如 0cH、06H、13H是如何算出来的?

——异或与模2除法满足结合律

放在CRC编码上看就是,将 M(x) 和生成多项式 G(x) 进行模2除法,可以先将 M(x) 划分成 A\oplus B\oplus C\oplus\cdots,有:

(A\oplus B\oplus C\oplus\cdots)\%\ G(x)=(A\%G)\oplus(B\%G)\oplus(C\%G)\oplus\cdots

划分: M = 100100101=100000000\oplus100000\oplus100\oplus1​,保持每个项只有一个1

因此选择器上面的0cH、06H、03H……是将数据1111\ \ 1111\ \ 1111\ \ 1111(16位)划分成16份后对 G(x) 取余数的结果
根据结合律,最后的余数,也就是校验码就是每个划分的余数异或的结果,

从上图可以看到所有余数异或起来,再用分线器就得到了最终余数(校验码)

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值