matlab串行crc原理,CRC32的FPGA并行实现原理及MATLAB仿真

本文详细介绍了CRC的串行和并行实现原理,重点解析了8位并行实现的思路,包括利用异或交换律和矩阵运算推导CRC计算公式,并通过MATLAB进行仿真验证。同时,提供了CRC的FPGA并行实现方法。
摘要由CSDN通过智能技术生成

其实crc已经反反复复看了好多遍了,每次总是看到一半就放弃了,觉得太简单,都有现成的东西,没必要搞懂,纯属浪费时间,但是又总是如鲠在喉,一如既往的纠结……这两天终于明白了它并行实现的原理,写个总结。

1 串行实现(单bit实现)

crc的实现原理很简单,做二进制除法得到余数就可以了,贴一个对我理解CRC很有帮助的一篇文章

我学习CRC32、CRC16、CRC原理和算法的总结(与WINRAR结果一致)

这里面的叫法是直接计算法和驱动表法,可能是因为软件实现和硬件实现不一样的原因吧,我这里叫串行实现和并行实现。

2 并行实现(8bit并行)

串行实现的效率是非常低的,特别是数据量很大的时候。

2.1 并行实现的思想

并行实现的原理主要利用的是异或(XOR)的交换律

A⊕B1⊕B2⊕B3=A⊕(B1⊕B2⊕B3) A⊕B_1⊕B_2⊕B_3 = A⊕(B_1⊕B_2⊕B_3)A⊕B1​⊕B2​⊕B3​=A⊕(B1​⊕B2​⊕B3​)

我们知道二进制除法其实就是不停的移位与被除数进行异或,像下面这样

28f7df911f70808cc1a6d7ec22bee8a3.png

可以看到经过3次移位异或得到了余数0010,我们把前面的零补上来看更直观

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值