16位CRC并行编解码电路原理图

模拟技术

2409人已加入

描述

首先,了解实验的大体要求,该实验要求我们对16位数据进行CRC编码,生成22位数据;再将22位CRC编码进行解码成16位数据,且判断数据是否在传输过程中发生一位错,两位错的情况,若出错,则必须对数据进行纠正。因此该实验要进行两个的电路图的设计。

一、16位CRC并行编码电路设计

1.解题思路

①已知该实验输入的是16位数据,输出22位CRC编码数据,其中包括16位原始数据,6位校验位,其中一位为总的奇偶校验位(校验位的位数也可由k+r<=2^r-1得到)。因此此时的r=5(不包含奇偶校验位),选择的多项式G(x)位数则为r+1=6位,此时我选择的多项式是G(x)=100101(该多项式不固定,选择其它六位的多项式也是可以的)。

②CRC编码原理:原始16位数据Q(X),左移r=5位成21位Q’(x)(即后面补r个0),再与多项式100101做模2运算,得到的r位的余数,将该余数替换掉Q’(X)后面的r位,即将它后面的r个0替换成该余数。如图所示r5r4r3r2r1便是得到的余数,而r6是总的奇偶校验位,对所有数据进行异或便可得到该偶校验位r6。

crc

③由于要采用并行编码,又有以下公式

crc

因此可先对该16位数据按位与该多项式进行模2除运算,再根据其实际数据进行异或操作。

举个例子:

crc

因此根据该思路,先将16位原始数据所对应位置上取1时,与G(x)进行模2除运算得到各自的5位余数,再用选择器进行根据每一位数据选择输入的是余数还是0,最后将16个输入数据进行异或,即可得到5位最终的余数。

③选择器的使用原理:

crc

此时选择器的选择端连接的是D1,由于D1数据位宽为1,则选择器有2^1=2个输入端。当D1为0,则输入0端的数据即00;若D1为1时,则输入1端的数据即0a。

因此根据选择器的选择原理,将16位数据Di(i=1,2…16)作为选择端控制每位数据输入的是00还是该位与多项式进行模2运算后的余数,最后将最终输入的16个5位数据进行异或,即可得到最终的余数。

2.求16位与多项式的余数

crc

如上图所示,Di(i=1,2…16)分别位数CRC编码的第7,8,9…22位上,因此其各自取1时与多项式模2除运算后的余数如下所示:

crc

3.电路图设计

crc

(r6是总的偶校验位)

二、16位CRC并行解码电路设计

该电路会比较难理解,要进行检错以及数据纠正得到原始的16位数据。

1.检错原理

① 接收方在接受到CRC编码后,将该编码与多项式进行模2除运算,得到余数r’,再根据q(假设q为总的奇偶检验位,将所有数据进行异或可得)的值进行判断数据是否产生错误,及产生错误后是一位错还是两位错。其检查原理同海明码的检错原理相同。

有以下情况:

①当r’ =0,q=0,表示数据无出错;

②r’ !=0,q=1,表示发生一位数据出错;

③r’ =0,q=1,表示该奇偶校验位出错,即发生一位出错;

④r’ !=0,q=0,表示发生两位数据出错。

②求余数时,可参照设计CRC编码时求余数的方法

crc

因为CRC编码最后的r位少于多项式位数,因此可将最后r位看作一个整体,让它与多项式进行模2除运算后,得到的余数显然是它本身,因此让它与其它16位数据与G(x)模2除后所得的余数进行异或,即可得最后接收方检验的余数。

如下图所示,箭头所指的该5位数据位便是其最终得到的余数(异或门输出位宽为5)。

2.纠错,得原始16位数据

crc

①若CRC编码发生出错,而它的出错位可能为第7,8,9…22位(不考虑第1到6位,因为我们要得的原始16位数据处于第7…22位上,因此只需要判断这些位是否出错,若出错对它们进行纠正,再输出即可)。因此将CRC编码按位取反后再与G(x)进行模2除运算,若余数为0,则说明该位出错,因此将余数取反为1,再与该位数据进行异或从而纠正该位的数据;若余数不为0,则说明该数据位并未发生传输错误,因此对该余数取反为0,再与该位的数据进行异或得到的数据仍为该数据位。(x异或0=x,x异或1=x反)

②CRC编码按位取反(即按位异或1)后再与G(x)进行模2除运算,根据公式可化成

CRC编码%G(x)异或该数据位取1%G(x)。

例如:假设第7位出错

CRC%100101异或100 0000%100101=CRC%100101异或0a。

3.电路图设计:

以下为完整电路图

以下分开截图

crc

4.通过测试

注:①(“老母亲帮的叮嘱‘)希望好好理解下实验原理,再去做,就不会产生太多的错误短路什么的!!!

②做编码的实验时,注意要检查下该隧道是否连接上了数据

crc

③在解码的电路设计,常量0和余数都是五位,所以设置其对应器件位宽是五位的。

例如以下的器件(不止这些数据位是5位,就不一一举出了)

如果设置位宽不对,后面可能会产生短路即显示红线!!!

crc

④太多用错逻辑门的,要好好理解下原理再去做就不会花太多时间卡在这一关啦

以下是常被用错的逻辑门,至于原理为何用这些门,上面解题思路讲到了,这里就不说了哈

crc

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分