CRC校验原理

  1. 求解CRC-8的编码电路和CRC校验的原理

G(X) = X8+H7*X7+H6*X6+H5*X5+H4*X4+H3*X3+H2*X2+H1*X1+X0

生成多项式

G(X)=9‘b1_0000_0111

信息位(需要发送的数据)

16’b=1100_1101_0010_1110

1100_1101_0010_1110__0000_0000(待编码的数据)

1000_0011_1(二进制除法做异或运算)

0100_1110_10

100_0001_11

000_1111_0110_1

1000_0011_1

0111_0101_01

100_0001_11

011_0110_101

10_0000_111

01_0110_0100

1_0000_0111

0_0110_0011_00

100_0001_11

010_0010_110

10_0000_111

00_0010_0010_000

10_0000_111

10_1110

最后得到的是我们信息位的校验位,用于接收端对帧数据是否出错进行判断的冗余位。

编码后的数据为:

1100_1101_0010_1110__0010_1110

解码过程:

1100_1101_0010_1110__0010_1110

1000_0011_1(二进制除法做异或运算)

0100_1100_1

………………………..

0_0110_0011__00

100_0001__11

010_0010__111

10_0000__111

00_0010__0000_111

10_0000__111

00_0000__0000

 
 

生成多项式的除法电路:

图中编号为1,2……78寄存器对应R[0]R[7]

推导出两位并行输入的数据的CRC-8的算法

D[1:0]//数据的输入

R[7:0]//除法电路的寄存器

移入一比特时各个寄存器的状态为:(移入的数据比特指D[0])

第一个寄存器:D[0]^R[7]

第二个寄存器: D[0]^R[7]^R[0]

第三个寄存器: D[0]^R[7]^R[1]

第四个寄存器:R[2]

第五个寄存器: R[3]

第六个寄存器: R[4]

第七个寄存器: R[5]

第八个寄存器: R[6]

移入第二个数据比特时各个寄存器的状态为: (移入的第二个数据比特指D[1])

第一个寄存器:D[1]^R[6]

第二个寄存器: D[1]^R[6]^ D[0]^R[7]

第三个寄存器: D[1]^R[6]^ D[0]^R[7]^R[0]

第四个寄存器: D[0]^R[7]^R[1]

第五个寄存器: R[2]

第六个寄存器: R[3]

第七个寄存器: R[4]

第八个寄存器: R[5]

按照这个个推导方式可以推导出8位除法电路。同样32位CRC冗余校验也是这样的操作方法,32位运算起来太麻烦了,一般某项技术标准中会有直接的结论不需要自己再推,我们要做的是用FPGA把这些算法实现起来。

FPGA之CRC校验相关推荐

  1. 非常实用FPGA实现CRC校验介绍和代码生成工具

    目录 一.CRC原理. 二.CRC算法. 1.比特型算法. 2.字节型算法.(好理解也好用,实际中采用这种) 三.CRC参数模型 四.常用工具(重点来了) 1.CRC calculation  非常棒 ...

  2. 【FPGA】CRC校验算法从数学原理到代码实现

    老规矩,转b站 [[FPGA]CRC校验算法从数学原理到代码实现-哔哩哔哩]

  3. 十六、基于FPGA的CRC校验设计实现

    1,CRC校验 循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保 ...

  4. 基于verilog的CRC校验(汇总)

    目录 原理 计算 检错与纠错 纠错实现 Verilog实现 本来想整理一下关于CRC校验的内容,但是发现前辈们写的都很好,本文对内容进行整理汇总. 原理 crc为什么能够检错和纠错,这背后有着深刻的数 ...

  5. 对于 CRC 校验的 学习笔记

    参考资料 CRC校验原理及实现 - 知乎 (zhihu.com) <-- 这个讲的特别好,我的博客主要是抄他的,最后加了一点代码库的分析. [CRC校验]手算与直观演示_哔哩哔哩_bilibil ...

  6. CRC校验码生成逻辑的实现原理详解——结合C语言和Verilog语言代码分析

    文章目录 前言 一.CRC校验码的计算 1.CRC模型 2.CRC计算 步骤1:输入数据与初始值模2加并左移 步骤2:被除数与多项式模2除 二.CRC校验码生成逻辑的C语言实现 1.实现代码 2.代码 ...

  7. FPGA实现CAN通信CRC校验

    FPGA实现CAN通信CRC校验 检验本质上是CRC检验生成多项式 理解CRC校验,首先需要了解生成多项式的概念,生成多项式也就是发送方和接受方约定的一个除数而已,发送方和接收方都使用这一个相同的除数 ...

  8. FPGA实现串口收发的八字节数据报文Modbus Crc校验

    一.项目工程背景 串口之间的数据交互,是一个在实际工作当中应用非常广泛的场景,所以笔者在这篇博客里为大家详细介绍"串口八字节报文modbus crc收发校验"的工程案例,相信耐心地 ...

  9. CRC校验verilog实现原理和反馈移位寄存器的关系

    本文是我在调试EMMC的FPGA实现过程中发现CRC的实现没有看明白,遂查询资料,结合自身理解写下此文,以此记录并供大家学习交流. (CRC和反馈移位寄存器各自的基本原理就不讲了,直接上问题) 疑点: ...

最新文章

  1. 2022-2028年中国二次供水设备行业研究及前瞻分析报告
  2. 算法:模式匹配之KMP算法
  3. 使用异步Servlet改进应用性能
  4. 小米开发出100W手机快充技术:实测逆天
  5. 数据库 连接池、缓冲池(定义、原理)
  6. 产品经理如何通过拆产品,持续提升产品能力?附案例
  7. 【征稿通知】CCF第37届中国计算机应用大会 CCF NCCA 2022
  8. windows访问linux下samba无需密码设置
  9. Android笔记 一Android基础知识 摘自第一行代码Android
  10. oracle导出dmp空表导不出来,如何解决Oracle11g使用dmp命令无法导出空表问题
  11. Skype For Business 2015综合部署系列四:安装Skype Server系统 1
  12. Java-集合第一篇认识Java集合
  13. mysql 3306端口入侵_3306端口入侵流程
  14. 一文教你如何快速高效画出技术架构图
  15. 腾达ac5服务器无响应,腾达路由器AC6告诉你WiFi设置5大误区
  16. “青春树儿童摄影网”首页制作
  17. 神经网络是算法还是模型,神经元网络算法的思想
  18. java long 百分比,Java 数字转百分比%
  19. Flutter开始支持Windows了
  20. 【C语言】文学研究助手

热门文章

  1. USB Gadget iMX6UL开发板模拟U盘
  2. 三维电子罗盘的工作原理介绍
  3. LeakCanary简单分析
  4. 使用UE4模拟冲击力
  5. 思科无线AP配置之二(通过超级终端配置ap的ip地址篇)
  6. 大华视频服务器系统日志怎么看,日常工作中查看工控机Windows日志的方法
  7. matlab 做偏回归分析,偏最小二乘回归分析|MATLAB 数学统计与优化|MATLAB技术论坛 - Powered by Discuz!...
  8. 中国剩余定理 及 拓展中国剩余定理模板
  9. 连载▍AlexNet网络结构模型论文翻译——中文版
  10. Codeforces Round #618 (Div. 2)C、Anu Has a Function