CRC校验的几种类型:
  1. 长除法,也叫直接计算法
  2. 移位寄存器,也叫线性移位
  3. 查表法
  4. 并行算法
一些有用的网页:
CRC并行推导
https://blog.csdn.net/Old_Street/article/details/106682144
https://blog.csdn.net/qq_16923717/article/details/83826856
https://wenku.baidu.com/view/fb791c0203d8ce2f006623f5.html
CRC长除法和移位寄存器法的介绍,初始值设定区别
http://bbs.eetop.cn/forum.php?mod=viewthread&tid=878883&highlight=crc
CRC在线校验
http://www.ip33.com/crc.html
CRC并行电路生成
http://outputlogic.com

1、长除法

将信息码(数据)升n-k次幂后除以生成多项式,然后将所得余式放在升幂后的多项式之后。

2、移位寄存器

可由长除法推导出来

3、查表法

比如一次处理4bit,提前做好4bit的对应查找表,使用生成式与自生异或构建成新的式子,使得新的式子高4bit和待处理数据相同,则可一次处理完4bit。将4bit的所有可能整理出表格,则根据不同待处理数据的能容快速查表
使用此方法的原理:
XOR的交换律(a XOR b) XOR c =a XOR (b XOR c)
构建表时,需要用右移位过后,高位补零来的生成式来进行异或构建表,右移原因:除法时,被除数高位为0,除数就会右移;不能左移
例子:
生成式:1010 1110 0
待测数据:1011 0100 1101

4、并行计算

串行电路:
通过串行运算的系统状态方程组进行并行处理的推导,如下为串行状态方程
推导出并行矩阵算法:
,其中 ,& 表示与, 表示异或。
长除法和线性移位的关系:
项目使用CRC出现的问题:
在项目中使用的是outputlogic生成的并行CRC电路,应该是并行矩阵推导出来的。
项目相关固定:在算CRC32时候,使用的是将最后诊断字的低32bit为0来计算CRC,并把算出来的CRC赋在低32bit发送过去。
接受端接受数据并计算CRC32,将整段数据进行CRC32计算,开始觉得应该算出0,可是结果却不是
导致此结果原因:
CRC计算过程有长除法,线性移位法。
长处法:需要将数据抬高补零,抬高的幂由生成式决定,再将算出来CRC放在补零出,然后发送
线性移位:不需要抬高补零,直接计算。
但是线性移位寄存器需要设定初始值,线性移位的寄存器初始值意思就是默认CRC校验的初始值,类似于在长处法的数据前添加一段数据,这段数据算出来的CRC就是线性移位中的CRC校验值
故线性移位的初始值是代表一个CRC,长除法中的初始值代表一个数据
我用的outputlgic生成crc代码算出来的数据,类似是线性移位的结果,并没有在数据尾出补零,故将算出来的CRC加在原始数据之后(不是替换诊断字低32位处)再做CRC计算,即可得出0。上述错误是把 长处法的补零 和 interlaken协议中的通过低32位来携带CRC 这两件事弄混淆了
关于在线校验网站算的CRC和RTL计算CRC不一致问题?
开始以为是初始值设置的问题,但是测试出来不是,在线校验网站使用的类似移位校验法,故和rtl设置的初始值是一个意思,都表示一个初始crc值。
但是并行处理的算法根据并行处理数的位宽不同而不同,rtl中数据是固定位宽,故使用在线校验时,也需要将数据表示固定位宽的写法,即为0的比特位也要写出来。

CRC校验 串行 并行 长除 移位 查表 矩阵相关推荐

  1. 串行并行程序在效率上的简单比较

    串行&并行程序在效率上的简单比较 分类: Multi-X 2010-10-15 10:33 1198人阅读 评论(0) 收藏 举报 parallel工作程序开发作业语言测试 开头:     这 ...

  2. 基于串行并行ADMM算法的主从配电网分布式优化控制研究

    基于串行并行ADMM算法的主从配电网分布式优化控制研究 关键词:ADMM 串行并行算法 主动配电网 无功优化 分布式优化 参考文档:非复现,仅参考部分模型: 1)<主动配电网分布式无功优化控制方 ...

  3. 【转载】串行并行工序混合的生产线数学模型

    串行并行工序混合的生产线数学模型 串行并行工序混合的生产线数学模型 生产线简介 示意图 目标函数 求解结果 生产线简介 很多生产线工序并不是简单的串行或并行关系,而实两种同时存在的混合并发关系,本文主 ...

  4. 【51单片机】串行口连接74LS164进行串行/并行转换,输出到一个七段数码管。数码管循环显示0-9。采用串行通信方式0,定时间隔1秒。

    实验内容:51单片机的串行口连接74LS164进行串行/并行转换,然后输出到一个七段数码管.数码管循环显示0-9这10个数字.要求采用串行通信方式0,定时间隔1秒. 工具:proteus+keil # ...

  5. 串行并行 同步异步通信

    终端与其他设备(例如其他终端.计算机和外部设备)通过数据传输进行通信.数据传输可以通过两种方式进行:并行通信和串行通信. 1.串行通信 是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个 ...

  6. 计算机网络之物理层:1、接口特性、同步异步、串行并行、双工

    物理层:1.物理层相关概念 思维导图:(学习任务) 接口特性: 数据通信基础: 设计数据通信系统要考虑的三个问题: 三种通信方式: 串行.并行传输: 同步.异步传输: 思维导图:(学习任务) 接口特性 ...

  7. L9825_用于电阻和电感负载的八通道低侧驱动器,具有串行/并行输入控制、输出保护和诊断

    描述 L9825是一种八进制低压侧驱动电路,专用于汽车应用.当感应负载被驱动时,输出电压箝位用于反激电流再循环.芯片选择和串行外围接口,用于输出控制和诊断数据传输.两个输出的并联控制输入. 所有功能 ...

  8. 【基础知识】CRC(循环冗余校验)直接计算和查表法

    CRC概述 校验 校验是什么,个人理解就是经过一个算法,使用大量数据(几MB的数据)生成较小长度的一串信息(如16Bit),并切要做到 原数据不同时,生成的信息大概率不同(不是加密算法不考虑刻意造数据 ...

  9. 【Java8新特性 串行/并行流-Optional容器类-时间格式化线程安全等】

    Java8新特性二 一.并行流与顺序流 1.概念 2.Fork/Join框架 3. Fork/Join框架代码示例: 二.Optional类 1. 什么是Optional对象 2. Optional类 ...

最新文章

  1. UWP入门(八)--几个简单的控件
  2. 网站的Http请求转为Https请求
  3. NX,Canary,RELRO,PIE,Linux的4种保护机制讲解
  4. Linux(16)-Vim编辑器的使用
  5. 第六章—条件语句和循环
  6. java做抽奖小程序_基于JavaScript实现简单的随机抽奖小程序
  7. 7、matplotlib条形图的绘制
  8. 知识表示与计算机,两分钟了解人工智能中的“知识与知识表示”
  9. 解决Tomcat乱码
  10. EMC共模干扰处理,共模扼流圈的应用和选型。
  11. 计算机总线拓扑和环形拓扑,网络拓扑结构总线型环形星型,各自的优缺点是什么..._网络编辑_帮考网...
  12. Python 实现图片裁剪(附代码) | Python工具
  13. 当你迷茫时,请努力做好现在的工作
  14. [机缘参悟-13]:菩提心,一切“利他”之心
  15. 中煤哈密智能汽车电子衡系统过磅流程
  16. 物联网中使用了哪些技术?
  17. 基于Vue+Vant的旅游WebApp的设计与实现
  18. MySQL之CentOS安装MySQL
  19. 清华大学出版社计算机图书出版,请联系我
  20. 那些年曾经看过的书——工作篇

热门文章

  1. 字典-Python基础前传(9)
  2. bzoj5314: [Jsoi2018]潜入行动【树形dp】
  3. IIS 应用程序池自动停止处理
  4. 查找行迁移及消除行迁移(chained rows)
  5. Python+正则表达式编写多线程百度贴吧网页爬虫
  6. 伯克利大学计算机专业课程表,University of California Berkeley Global Access 加州大学伯克利分校学期学分课程.doc...
  7. 2019创业新项目手游充值代理是骗人的还是风口?
  8. HarmonyOS系统架构
  9. LVDS 视频输出格式
  10. 风险与收益并存——新书《利益攸关》解读