首页 > 其他分享 >CRC校验方法和FPGA实现

CRC校验方法和FPGA实现

时间:2024-03-30 20:12:33浏览次数:30  
标签:12 FPGA 16 多项式 校验 表示法 CRC

参考:

【科普向】谁都能看懂的CRC(循环冗余校验)原理_crc循环冗余校验原理-CSDN博客

CRC校验原理和推导过程及Verilog实现(一文讲透)_crc verilog-CSDN博客

介绍两个CRC源码生成工具,可生成Verilog和VHDL - nios II 爱好者 - 博客园 (cnblogs.com)

Generator for CRC HDL code (bues.ch)

http://www.easics.com/webtools/crctool

P(x)

P(x)是由一种称为本原元的特殊多项式计算而来的,P(x)应该满足:

最高位和最低位都是1
当被传送信息任何一位发生错误时 P(x)不被T(x)整除
不同位发生错误时,余数应该不同
对余数继续做模二除法时,应该使余数循环
基于这些限定条件,在有限域内求解本原元以及对P ( x ) P(x)P(x)的取值是通信领域的一个研究课题

这些是常用的循环冗余检验(CRC   )算法及其应用的简要列表。CRC是一种常见的用于检测数据传输或存储中出现错误的技术。

  • CRC-8: 使用多项式X^8 + X^2 + X + 1,表示法为0x07。这个简单的CRC通常用于小块数据的错误检测。

  • CRC-12: 使用多项式X^12 + X^11 + X^3 + X^2 + X + 1,表示法为0x80F。主要用于电信系统中。

  • CRC-16: 使用多项式X^16 + X^15 + X^2 + 1,表示法为0x8005。这是一个广泛使用的CRC,应用于Bisync, Modbus, USB, ANSI X3.28, SIA DC-07等多种标准和协议,也称为CRC-16或CRC-16-ANSI。

  • CRC-CCITT: 使用多项式X^16 + X^12 + X^5 + 1,表示法为0x1021。它主要用于ISO HDLC, ITU X.25, V.34/V.41/V.42, PPP-FCS等通讯标准。

  • CRC-32: 使用多项式X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 + X^8 + X^7 + X^5 + X^4 + X^2 + X + 1,表示法为0x04C11DB7。这是一个非常常见的CRC,用于ZIP, RAR文件格式,IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCS等。

  • CRC-32C: 使用多项式X^32 + X^28 + X^27 + X^26 + X^25 + X^23 + X^22 + X^20 + X^19 + X^18 + X^14 + X^13 + X^11 + X^10 + X^9 + X^8 + X^6 + 1,表示法为0x1EDC6F41。它用于iSCSI, SCTP, G.hn负载,SSE4.2指令集,以及Btrfs, ext4, Ceph等文件系统。

标签:12,FPGA,16,多项式,校验,表示法,CRC
From: https://www.cnblogs.com/VerweileDoch/p/18105959

相关文章

  • 从奇偶校验到ECC:MIPI-CSI2的校验和
    参考:手写MIPI(一):MIPI-CSI-2RAW10笔记_mipicsi-CSDN博客图像处理项目记录-NoNounknow-博客园(cnblogs.com)【通俗易懂的通信】信道编码之——汉明码_汉明编码-CSDN博客MIPI包的结构:MIPI数据包的包头使用ECC来校验数据的传输是否正确。所以解析MIPI数据必须用到ECC。......
  • Springboot做分组校验
    目录分组校验Insert分组Upload分组测试接口测试结果添加测试更新测试顺序校验@GroupSequence自定义分组校验自定义分组表单 CustomSequenceProvider 测试接口测试结果Type类型为A Type类型为B总结:前文提到了做自定义的校验注解,接下来的这篇文章将带领各......
  • 基于EP4CE6F17C8的FPGA数码管时钟显示实例
    一、电路模块本例的电路模块与“基于EP4CE6F17C8的FPGA数码管动态显示实例”中的完全一样,此处就不再给出了。二、实验代码本例使用6个数码管显示时钟的时、分、秒,时与分之间及分与秒之间通过小数点来分隔,代码使用Verilog编写,采用例化的形式,使用了两种方式来实现。第一种方式,共......
  • 校验码-体系结构-指令-流水线
    校验码码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,码距越大,越利于纠错和检错。奇偶校验码:在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数......
  • 接收文件流并导出至excel以及对二进制文件流内容的校验
    废话不说上代码consthandleRightDownload=async()=>{axios({method:'post',url:'/my/handleAndDownloadExcel',//请求地址这里写后端的地址,注意加上`/api`以确保最终的请求能被替换掉,/api表示server要替换的前缀'/api'->''data:{......
  • 新增文章参数校验-2024-3-29
    用到validation自定义校验packagecom.di.bigevent.pojo;importcom.di.bigevent.anno.State;importjakarta.validation.constraints.NotEmpty;importjakarta.validation.constraints.NotNull;importjakarta.validation.constraints.Pattern;importlombok.Data;imp......
  • elementUI——el-form表单数据校验(包含数组循环)
    一、普通的值类型的数据校验①设置el-form-item的prop值与formdata中定义的key保持一致`②如果rules需要通过el-form统一设置,rules的key定义也与prop保持一致(如果不一致,需要在el-form-item中手动指定)③复杂的校验函数可通过validator单独定义<el-form......
  • element-ui表单校验:有值却不通过 el-form validate
    解决:新增/编辑赋值的时候,所有明明有值校验不通过的属性使用$set赋值this.$set(this.form,"属性名","");//新增置空this.$set(this.form,"属性名",row.shuxing);//编辑赋值 ......
  • husky配置实现代码提交前校验与规范提交信息
    husky是一个GitHook管理工具,主要用于实现提交前eslint校验和commit信息的规范校验。Husky的原理是让我们在项目根目录中写一个配置文件,然后在安装Husky的时候把配置文件和GitHook关联起来,这样我们就能在团队中使用GitHook了。首先,确保已经安装了husky和commitlint......
  • FPGA入门笔记010——UART串口接收模块设计
    1、串口接收模块原理​当对于数据线Rs232_Rx上的每一位进行采样时,一般情况下认为每一位数据的中间点是最稳定的。因此一般应用中,采集中间时刻时的电平即认为是此位数据的电平,如图1所示。图1——串口接收时序图(图中BPS_CLK为采样时钟)​但是在实际工业应......