CRC冗余校验码的编译码仿真实现(完整版).doc
《CRC冗余校验码的编译码仿真实现(完整版).doc》由会员分享,可在线阅读,更多相关《CRC冗余校验码的编译码仿真实现(完整版).doc(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、CRC冗余校验码的编译码仿真实现(完整版)(文档可以直接使用,也可根据实际需要修改使用,可编辑 欢迎下载) *实践教学* 兰州理工大学计算机与通信学院2021年秋季学期 计算机通信 课程设计题 目:(13,9)CRC冗余校验码的编译码仿真实现专业班级: 通信工程四班 姓 名: 学 号: 指导教师: 成 绩: 摘要在实际的通信系统中,由于信道传输特性不理想以及加性噪声的影响,传输的信息中不可避免地会发生错误,影响通信系统的传输可靠性。随着数字通信技术的发展,各种业务对系统误码率的要求也逐渐提高,采用差错控制编码技术是提高数字通信可靠性的有效方法之一。差错控制编码就是在发送端的信息码元序列中,以某
2、种确定的编码规则加入一些监督码元,使信息码元与监督码元之间具有某种相关性。接收端通过检验这种相关性是否存在来判断在传输过程中是否出现了误码。本设计研究了CRC循环冗余校验码的原理,以及利用MATLAB对其进行了编程和编译仿真,实现了CRC循环冗余校验码的编码及校验,在接收端收到通过校验的码,从而确定传输过程是否出错,得到的结论和理论上是一致的。关键词:检错码 CRC循环冗余校验码 MATLAB 目录前言1一、基本原理21.1循环码的概念21.2循环码333数学特征2221.3循环冗余校验码CRC3331.4 CRC校验码的性质31.5 差错编码的基本概念31.6差错编码的基本原理41.7 差错
3、控制编码的方式55551.8 差错编码的特性和能力66661.9 循环冗余校验码(CRC)原理6二、系统分析82.1 循环码(13,9)算法设定82.2 循环码(13,9)编码算法分析8882.3 循环码(13,9)译码算法分析82.4 CRC冗余校验码的实现方法999三、MATLAB语言介绍103.1 MATLAB概述103.2 MATLAB系统组成11四、仿真过程及结果124.1程序流程图124.2 MATLAB的CRC编程134.3 结果分析16五、心得体会17参考文献18前言 在数据通信过程中,衰损,失真和噪声会使通信线路上的信号发生错误。为了减少错误,提高通信质量,使得误码率达到要求
4、,通常采用纠错,检错技术,即差错控制技术。差错控错控制的主要方法是将数据以某种形式进行编码。以前经常采用的电子线路进行编码和差错控制,既复杂又麻烦,而且可靠性又比较低。在计算机通信网中,采用计算机技术进行编码和控制,既简单又方便,而且可靠性还比较高。因此,计算机的应用,使得通信技术得到了很大提升。不仅如此,随着计算机的应用,差错控制技术本身也得到了相应的发展。一、基本原理1.1循环码的概念 循环码:无权码,每位代码无固定权值,任何相邻的两个码组中,仅有一位代码不同。 循环码是线性分组码中一个重要的分支。它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误
5、。 循环码是目前研究得最成熟的一类码,并且有严密的代数理论基础,故有许多特殊的代数性质,这些性质有助于按所要求的纠错能力系统地构造这类码,且易于实现,所以循环码受到人们的高度重视,在FEC系统中得到了广泛应用。1.2循环码333数学特征即如果c1,c2,是与消息m1,m2对应的码字,则c1+c2必定是与m1+m2对应的码字。即任一许用码组经过循环移位后所得到的码组仍为该许用码组集合中的一个码组。以3号码组(0010111)为例,左移循环一位变成6号码组(0101110),依次左移一位构成的状态图如图1-1所示。 10111000101110001011101110011110010110010
6、11001011 图1-1循环码中的循环圈 可见除全零码组外,不论循环右移或左移,移多少位,其结果均在该循环码组的集合中(全零码组自己构成独立的循环圈)。1.3循环冗余校验码CRC 循环冗余校验是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠 CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。它的编码规则是:移位:将原信息码(kbit)左移r位(k+r=n)相除:运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码。非常简单,要说明的:模2除就是在除
7、的过程中用模2加,模2加实际上就是我们熟悉的异或运算,就是加法不考虑进位,公式是:0+0=1+1=0,1+0=0+1=1即异则真,非异则假。由此得到定理:a+b+b=a 也就是模2减和模2加直值表完全相同。有了加减法就可以用来定义模2除法,于是就可以用生成多项式g(x)生成CRC校验码。生成多项式应满足以下原则:a、生成多项式的最高位和最低位必须为1。b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。c、不同位发生错误时,应该使余数不同。d、对余数继续做模2除,应使余数循环。1.4 CRC校验码的性质 可靠性:除了正好数据块的比特值是按除数值变化的错误外,
8、循环冗余校验讲检测出其他所有错误,甚至对于上面所提到的四比特错误这种情况放生的可能性仍然是很小的。而且,常用的CRC除数通常有17或是33比特,使得不可检测的错误可能降低到几乎近于零。1.5 差错编码的基本概念 为了提高通信系统的水平,在数字通信系统中,在发送端对信源发送的二进制数字序列附加多余数字与信息数字建立某种相关性。在接收端对这组编码进行检测,若发现错误,则试图找出错误位置并纠正。由此可见,差错控制的原理在于增加冗余度使得原来的信息可以检测传输差错。 新加入的码元越多,冗余度越大,纠错能力越强,但效率会降低。对二进制码而言,一个n位的二进制码的所有组合为N=2n种信息。1.6差错编码的
9、基本原理 差错编码的核心是抗干扰编码,简称差错编码。它的基本思想是通过对信息序列进行某种变换,使得原来彼此独立,互不相干的信息码元列产生某种规律性,从而在接收端有可能根据这种规律性来检验,发现或纠正传输信号序列中的差错。变换的方法不同就构成了不同的差错编码,在系统中使用不同的差错编码方法就产生了不同的差错控制方法。 我们以重复编码来简单地阐述差错编码在相同的信噪比情况下为什么会获得更好的系统性能。假设我们发送的信息0、1(等概率出现),现假设 Pe=10(即平均接收1000个中错一个)。如果我们将信息0编码成00,信息1编码成11,仍然采用上述系统,则在接收端可以作以下判断:如果发送的是00,
10、而收到的是01或10,此时我们知道发生了差错,要求发送端重新传输,直到传送正确为止,只有当收到11时,我们才错误地认为当前发送的是1。因此在这种情况下发生译码错误的概率是0.5pe2;同理,如果发送的是11,只有收到00时才可能发生错误译码,因此在这种情况下发生译码错误的概率也是0.5pe2。所以采用00、11编码的系统比特误码率为 ,即106。系统的性能将明显提高。在上例中,将0、1采用00000、11111编码,在接收端我们用如下的译码方法,每收到5个比特译码一次,采用大数判决,即5个比特中0的个数大于1的个数则译码成0,反之译码成1;不采用ARQ方式。那么,我们看到这种编码方式就变成了纠
11、错编码。由于传输错误当接收端收到11000,10100,10010,10001,01100,01010,01001,00110,00101,00011中的任何一种时,都可以自动纠正成00000。如上所述,将信息码分组,并为每个组附加若干监督的编码,称为“分组码”。在分组码中,监督码元仅监督本码组中的信息码元。分组码一般用符号(n),(k)表示,其中k是每组码二进制信息码元的数目,n是码组的总数目,又称码组的长度。r=n-k为每个码组中的监督码元的数目,按此规定的分组码的结构形式如图1-2所示。码长n=k+r D n-1D n-2D n-3.D n-kDr-1. D0D.图1-2 分组码结构1.
12、7 差错控制编码的方式 在差错控制系统中,差错控制的方式主要有三种:FEC方式发送端首先根据需要先进行编码,然后由发送端发送这种能纠错的码在接收端解码器根据码的冗余进行译码,并自动纠正的传输差错。系统框图如图1-3所示。FEC编码FEC译码前向信道进 出 图1-3前向纠措方式 发送端首先对发送序列进行差错编码,生成一个可以检测出错误的校验序列,然后连同数据一起发送出去。接收端根据校验序列的编码规则判断是否传错,并把判决结果通过反馈通道传回发送端。若无错,接收端确认接受,同时发送端缓冲器清除该序列。当出现差错时,接收端通过回送确认信号自动控制发送端原先帧的重发,直到接收端接受正确为止。系统框图如
13、图1-4所示。编码 缓冲 信道 缓冲 译码 信源 信宿 信道图1-4 自动请求重发(ARQ)方式 HEC方式是FEC和ARQ方式的结合,发送端发送的码不仅能检测错误,而其能在一定程度上纠正错误,接收端译码器收到码组后,首先检查传输差错的情况,如果差错在码的纠错能力以内,则自动进行纠错,若错误超出纠错能力,但能检测出来,则通过反馈信道给发送端发送一个反馈信息,请求重发出错的信息。其系统框图如图1-5所示。信源 信宿ARQ 译码 信道编码ARQ 信道 图1-5混合纠错方式1.8 差错编码的特性和能力就是从一个顶点移动到另一个顶点所经历立方体的最少边数。所谓最小距离就是立方体中从一个顶点移到另一个顶
14、点所经历的最少边数 。 定理1若一种码的最小距离为d0,则它能检查传输错误个数(检错能力)e应满足:d0=e+1 定理2若一种码的最小距离为d0,则它能纠正传输错误个数(纠错能力)t应满足:d0=2t+1 定理3若一种码的最小距离为d0,则它的检错能力和纠错能力应满足:d0=e+t+1 (e=t)1.9 循环冗余校验码(CRC)原理 在计算机通信中用的最广泛检错码是一种漏检错率低得多也便于实现的循环冗余校验码,又称多项式码。这是因为,任何一个二进制数位串组成的代码都可以和一个只含有0和1的两个系数的多项式建立一一对应的关系。一个k位帧可以看成是从X k-1到X0的k次多项式的系数序列,这个多项
15、式的阶数为k-1,高位时X k-1项的系数,下一位是X k-2项的系数,以此类推。例如,1011011有7位,表示成多项式是X6+X4+X3+X+1。CRC校验的思想是利用线性编码的理论,在发送端根据要传一个n比特的帧或报文,发送器生成一个r比特的序列。这样形成的帧将由(n+r)比特组成。这个帧刚好能够被某个预先确定好的数整除。接收端用相同的数去除外来的帧,如果无余数,则认为无差错。循环冗余校验码与奇偶校验码不同,后者是字符校验一次,而前者是字符串校验一次。在同步串行通信中,几乎都是用这种校验方法。一个n位的循环码是由k位信息位加上r位校验位组成的,其中r=n-k。如图1-6所示。 n位循环码
16、 K位 R位(R=n-k) 信息位 校验位(CRC校验)图1-6 n位循环码通常把这样的新组成的二进制位序列叫做循环冗余码(CRC)。表征CRC码的多项式叫生成多项式。K位二进制数加上r位CRC码后,即信息位要向左移(n-r)位,这相当于B(X)乘以Xr B(X)被生成多项式除,得整数多项式加上余数多项式。由以上分析可知,CRC校验的关键是如何求出余数,此余数即为校验码(CRC校验码)。以前通常用数字电路来实现,而现在用计算机来完成。二、系统分析2.1 循环码(13,9)算法设定循环码是线性分组码的一种,具有严密的代数学理论。循环码除了具有线性分组码的封闭性,即两个循环码组的模二加仍是一个循环
17、码组外,还具有循环性,即一个循环码组循环移位后,将最右端的码组移至左端,仍是一个循环码组。我们由生成多项式g(x)很容易计算出生成矩阵G,g(x)必须为一个常数项不为0的(n-k)次多项式,并且Xn+1是一个因式,本次课程设计选取循环码(13,9)的生成多项式g(x)=x4+x+1。2.2 循环码(13,9)编码算法分析 CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。 它的编码规则是: 1移位:将原信息码(kbit)左移r位(k+r=n) 2相除:运用一个生成多项式g(x)(也可看成二进制数)用模
18、2除上面的式子,得到的余数就是校验码。 非常简单,要说明的,模2除就是在除的过程中用模2加,模2加实际上就是我们熟悉的异或运算,就是加法不考虑进位,公式是: 0+0=1+1=0,1+0=0+1=1 由此得到定理:a+b+b=a 也就是模2减和模2加直值表完全相同。有了加减法就可以用来定义模2除法,于是就可以用生成多项式g(x)生成CRC校验码。 该编码算法比较简单,只需要三步即可。第一步,将信息码组m(x)乘以x4得到m(x)x4;第二步,计算上式与g(x)的除法,得到商q(x)和余数r(x);最后,计算编码后的码组多项式g(x)=m(x)x4+r(x)。2.3 循环码(13,9)译码算法分析
19、设接收到的码组位R(x),若C(x)=R(x),则说明接收到的码组正确,若该式不成立,则说明接收到的码组错误。且有R(x)=C(x)+E(x),其中E(x)为伴随式。如果要纠正一位错误(若要纠正多位错,则需要监督矩阵的位数),当然,为了提高效率也要增加信息位的长度。实际上,一个16位的码组中有两位都出错的概率要比只错一位的概率小得多。这里,E(x)有24种组合。一个15位的码组中若哪一位出了错,经过计算,伴随式与错误图样均有一定的关系。2.4 CRC冗余校验码的实现方法CRC计算可以靠专用硬件来实现,但对于低成本的微控制器系统,在没有硬件支持的情况下实现CRC检验,其关键问题是如何通过软件来实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CRC 冗余 校验码 译码 仿真 实现 完整版
限制150内