CRC校验的原理

CRC是什么?

CRC全称是:Cyclic Redundancy Check,翻译过来就是:循环冗余校验码。是在数据通信领域中一种十分常用的查错校验码,和串口通信中常用的奇偶校验是属于同一种类型的。都是进行数据查错的算法,而不具有纠错能力。

CRC的所采用的多项式是什么

数据发送方(TX)与接收方(RX)进行交换时,采用CRC进行数据检错时,确定数据在传送过程中没有发生错误。其基本实现原理是TX侧在一个将要传送的数据包后加上N位CRC校验码,RX侧接收 数据包+N位CRC校验码。而添加CRC校验码的基本原则,通过收发双方协议确定添加N位CRC校验码,就是根据原数据与多项式所对应的信息进行模2除法得到的。根据常用的多项式:g(x)=x4+x3+1,所对应的信息代码为:11001,或者多项式:g(x)=x8+x7+x6+x5+x3+1,所对应的信息代码为:111010001。这也是分别对应着常用的CRC4,CRC8所采用的常用多项式,(而CRC4,CRC8中的多项式有很多种)。收发双方也可以设定相关多相关多项式,位数,类型均可自行设定,用于双方进行数据校验。

CRC多项式的使用及其原理

对于TX将要发送的一段原数据假设为:11101101,当采用多项式为:g(x)=x4+x3+1,则多项式对应的信息字段为:11001。在原数据后面添加N个0,这个N表示的所采用的多项式的最高位幂值数据,这里也就是N=4,原数据变为:111011010000,原数据+N位o数据与多项式所对应的信息进行模2除法,对应模2除法可以自行百度学习,其实模2除法也就是异或运算。大家可以看下用例算法,可以很清楚的明白,如下:
原数据与多项式字段进行模2运算

由上图计算计算得出的余数就是CRC校验码,将数据添加到原数据后,发送给接收方,接收方接收到原数据+CRC校验码,利用相同的多项式,进行同样的模2除法,若余数为0,则表示接收的数据无误。

CRC计算基本步骤总结:

  1. 选择CRC位数,也就是选择合适的多项式(g(x)=x4+x3+1),并得到多项式对应的数据字段(11001),
  2. 在原数据(11101101)后添加N位0数据(111011010000)进行模2运算,得到其余数(0011),注意添加0的个数位为4位,而多项式的信息字段为5位,这并不矛盾。
  3. 将余数添加到原数据后(111011010011),进行发送,
  4. 接收到原数据+CRC校验码,用相同的多项式数据字段进行模2除法,若余数为0,表示接收数据无误。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FPGA CRC校验原理是使用循环冗余校验算法对数据进行校验CRC校验通常用于数据传输或存储时,以防止数据在传输或存储过程中被破坏或篡改。在FPGA中,CRC校验器通常是由硬件实现的模块,可以通过FPGA的可编程逻辑进行设计。 CRC校验原理是将需要校验的数据分成一定大小的数据块,每个数据块都传送时进行校验校验数据块时,FPGA会计算数据块的CRC码,然后与数据传输或存储设备中存储的CRC码进行比较。 在FPGA中,校验数据块的过程通常由硬件实现的模块完成。该模块会输入需要校验的数据块和预定义的CRC码种子,然后按照预定义的算法进行计算。计算完成后,该模块会输出新的CRC码,然后FPGA会与存储或传输设备中的CRC码进行比较,以确定数据块是否正确。 总的来说,FPGA CRC校验是一种用于数据传输或存储过程中数据校验的方法。在硬件实现中,FPGA会根据预定义的算法对数据进行计算,并与存储或传输设备中存储的CRC码进行比较,以确保数据传输或存储的可靠性。 ### 回答2: FPGA CRC校验是一种基于硬件的数据校验方法,它通过将待校验的数据流和预定的校验码值一起输入到FPGA芯片中,利用硬件电路实现CRC计算。CRC校验是一种能够检测数据传输过程中是否发生了错误的技术,它可以检测到单比特错、双比特错甚至更多比特的错。 具体来说,FPGA CRC校验的实现原理是通过将输入的数据流和预定义的CRC校验码一同送入CRC电路中,经过一系列的移位、异或和反转操作得到校验结果,然后将校验值与输出的校验结果比较,如果出现差错,则表示数据包出现错误。FPGA CRC校验是一种高效、稳定的校验方法,它广泛应用于数字通信、网络传输、存储设备等领域。 总之,FPGA CRC校验是一种依靠硬件实现的数据完整性校验方式,它通过预定义的校验算法计算出数据包的校验值,并与实际校验结果进行比较,从而检测数据传输过程中是否发生了差错,保证数据在传输过程中的安全可靠。 ### 回答3: FPGA作为一种灵活可编程的集成电路,可以灵活地实现各种数字电子系统中的处理、控制、通信、计算等功能,其中CRC校验是一种应用比较广泛的数据校验协议。其原理是在传输数据的时候,通过添加一个校验码到数据后面,接收端可以通过对数据和校验码进行计算来验证数据的准确性。 在FPGA中实现CRC校验,通常采用硬件的实现方式,首先通过CRC算法计算生成CRC校验码表,然后将该表存储在FPGA中。在数据传输过程中,FPGA通过对数据和CRC校验码表进行异或运算,得到计算结果,并将该计算结果加到原始数据的末尾,然后将数据和校验码一起发送。接收端接收数据后,同样对数据和CRC校验码表进行异或计算,并将其与接收到的校验码进行比较,如果相同则表明数据传输正确,否则需要重新传输。 FPGA实现CRC校验具有高速、低功耗、可靠性强等优点,特别适合高速数据传输领域,如网络通信、存储设备、无线通信等领域。此外,FPGA还具有可编程性强、适应性广泛等优点,可以根据不同应用需求进行优化设计,提高数据的可靠性和传输速率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值