常用电路设计之CRC校验码产生器的设计

本文介绍了CRC校验码的产生原理,通过CRC16编码为例,详细阐述了如何使用二进制多项式表示及线性移位寄存器实现除法操作。并展示了CRC16的Verilog代码实现,通过Modelsim仿真验证了其正确性。
摘要由CSDN通过智能技术生成

一、CRC校验码的产生原理

        循环冗余编码(CRC)是二进制通信系统中一种常用的差错检测方法,它是通过在原始数据后面添加冗余校验码来实现检测差错的目的。CRC编码的基本原理就是:CRC可由原始数据流的二进制去除以一称作为生成多项式的常数,将得到的商抛弃,余数加到原始数据流二进制数的后面得到,在接收端,用接收的数据再去除以该生成多项式,如果余数为0则校验通过,否则校验不通过。

        这里我们采用CRC16编码作为典型例子进行讲解,首先我们先讲解一下二进制数的多项式表示,二进制数可以表示成多项式的系数,如10 0100 0101用多项式就可以表示成:x^{9}+x^{6}+x^{2}+1。另外,在CRC校验码的生成过程中需要用到除法操作,那么对于非常大的数字时,用数字逻辑来实现除法操作既消耗资源且操作麻烦,所以我们就需要将除数二进制数按照前面所讲解的规则转换为多项式,然后利用该多项式借助线性移位寄存器来实现复杂的除法操作。

      国际上对于不同类型的CRC校验编码是有相应的国际标准的,比如CRC8,CRC16,在这些标准中对除数(或者叫做生成多项式)都有明确的规定,我们只需要查阅相关标准手册,然后根据相应的生成多项式编码实现不同类型的CRC校验码,这里以CRC16为例,CRC16的生成多项式可以表示为:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值