CRC编码的Simulink仿真实现.doc
《CRC编码的Simulink仿真实现.doc》由会员分享,可在线阅读,更多相关《CRC编码的Simulink仿真实现.doc(20页珍藏版)》请在课桌文档上搜索。
1、 目录第一章 设计要求求.21.1基本要求.21.2提高要求.21.3功能需求.2 第二章 系统的组成及工作原理.32.1系统组成.32.2 CRC编码原理.32.3 通用CRC编码器.32.4 CRCN编码器.3 2.5 CRC检测器(CRCN检测器).4第三章 概要设计.53.1 系统层次结构图.53.2 方案的比较.5第四章 详细设计.6 4.1 仿真模型图.64.2 各个模块的功能及参数设置.6第五章 调试及测试结果与分析.125.1功能调试.125.2、问题发现及解决.13第六章 设计总结.14参考文献.15 附录1.16 附录2.17 第一章 设计要求1.1、设计要求 (1)对输入
2、数据帧,进行CRC编码。根据数据帧长度,选择适当长度的CRC编码器。观察编码前后的波形。(2)掌握CRC生成多项式、 系统码等概念。(3)掌握SIMULINK仿真参数的设置方法。1.2提高要求 从误码率的角度考虑如何根据数据帧长度选择合适的长度的CRC编码器。1.3功能需求 实现CRC编码以及检测过程,并且在示波器上显示波形。第二章 系统组成及设计原理2.1、系统组成 本系统由信源编码部分,信道部分,信宿检测部分组只要组成2.2、CRC编码原理在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的
3、多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(X)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设发送信息用信息多项式M(X)表示,将C(x)左移R位,则可表示成M(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。通过M(x)*2R除以生成多项式G(x)得到的余数就是校验码。2.3、通用CRC编码器通用CRC编码器根据输入的一帧数据计算得到这帧数据的循环冗余码,并且把这个循环冗余码附加到帧数据后面,形成输出数据流。如果通用CRC编码器的输人数据的帧长度等于凡,生成多项式的最高次数等于r,对每帧数据产生k个校验和(CHECKSUM),则CRC编码器的工作
4、流程如下:(1)把输入的一帧数据等分成k个部分,每个部分的长度是nk;(2)在每个部分的数据。后面添加r个二进制位(并且这r个二进制位的数值等于通用CRC编码器的初始状态),得到二进制序列S ;(3)计算5 的循环冗余码Ci;(4)把循环冗余码Ci添加到Wi的后面,得到二进制序列;(5)把所有的序列连接起来形成数据帧。2.4、CRCN编码器CRCN编码器(CRCN Generator)计算每一个输入信号帧的循环冗余码(CRC),并把计算得到的循环冗余码附加到输入帧的末尾。CRCN编码器是通用CRC编码器的简化,它的工作方式与通用CRC编码器类似,但是它提供了若干个经常使用的生成多项式,就表示这
5、些生成多项式的最高次数。2.5、CRC检测器(CRCN检测器)与通用CRC生成器、CRCN生成器相对应,CRC检测器也有两种:即通用户CRC检测器与CRC一检测器。这两种检测器具有相同的工作原理,它们首先从接收到的二进制序列中分离出信息序列和CRC,然后根据接收端的信息序列重新计算CRC。如果重新计算得到的CRC与接收到的CRC相等,则认为接收序列是正确的;否则,则认为接收序列存在着传输错误。第三章 概要设计3.1、系统层次结构图生成二进制序列进行CRC编码信道传播进行CRC检测计算误码率选择合适长度的成多项式是误码率最小3.2、方案的比较方案一:使用Simulink自带的模块进行搭配,设置参
6、数并仿真CRC码的仿真模型主要由Bernoulli BinaryGenerator(贝努利二进制序列生成器模块),CRCN Generator(CRCN生成器)和CRCN Syndrome Detector(CRCN检测器)等模块组成。通过设计各个模块的参数就可以得到仿真结果。方案二:使用C语言编写S函数并进行仿真。通过Simulink中的S函数也可以得到同样的仿真结果。与CRC码仿真实现对应的是一个离散状态的s函数,其输入模块为Bernoulli BinaryGnerator模块,通过S函数模块仿真后也能得到结果。但是相比较而言,方案二过程过于复杂,编写代码也容易出错,而方案一简单明了,调试
7、方便,所以选择的方案一来进行仿真。第四章 详细设计4.1、仿真模型图仿真模型图如图4-1图414.2、各个模块的功能及参数设置 (1)Bernoulli BinaryGenerator(贝努利二进制序列生成器模块)图42Bernoulli BinaryGenerator是一个二进制序列发生器,如图4-2所示。Probabolity of a zero设置序列中出现0的概率,这里设置为0.3。Samples per frame设置帧的长度。(2)CRC-N Generator(CRC编码器)CRC-N Generator是用来对输入帧进行CRC编码的,如图4-3所示。图43CRC-N Metho
8、d是用来设置生成多项式的,这里有6种生成多项式,如表4-1所示 表4-1在本次设计中采用CRC-32模式,其生成多项式对应二进制序列为1000000100110000010001110110110111。 (3)复数转换模块该模块如图4-4所示图44这个模块是用来将实数转换成虚部为0的复数,由于瑞利信道只能输入复数,所以需要添加这个模块。(4)多径瑞利衰减信道模块该模块如图4-5所示图45 该模块是用来实现信号的多径瑞利衰减仿真,他的输入信号是帧的复数形式。其参数设置如图4-6图46Doppler frequency(Hz):多普勒频移Sample time:抽样间隔Delay vector:
9、时延向量Gain vector:增益向量(5)矩阵螺旋解交织器 该模块如图4-7所示图47 该模块能将实数序列转换成1列多行的矩阵,其参数设置如图4-8图48(6)CRC-N检测器CRC-N检测器如图4-9所示图49该模块是用来CRC解码的,并且能计算是否出错了。设置参数方法跟CRC-N编码器相同(7)vector scope示波器该模块用来显示编码前后波形 如图4-10所示 图410 (8)错误率统计模块 该模块从发射端和接收端分别接受数据并进行比较,得出误码率。 该模块如图4-11所示图411 其参数设置如图4-12图412(9)选择器selector 该模块用来选择从错误率统计模块输出的
10、3个数据中的第一个(三个数据分别是:误码率,错误码元数,总码元数)如图4-13所示图413第五章 调试及测试结果与分析在整个制作过程中,首先是弄清楚各个模块的功能以及参数的设置方法 ,布置好各个模块的位置,然后进行连接接。再进行参数设置,进行仿真和调试。51功能调试 按下运行,等仿真结束,观察示波器波形,然后计算CRC编码,看是否与示波器波形相同。示波器波形如图5-10图5-1从图5-1可以看出输入为101101111001111111001101110101110110010000111111CRC-N编码器选用的是CRC-32 即生成多项式对应二进制代码为10000001001100000
11、10001110110110111经过计算所得校验位1101010100110111101101001001100所得CRC编码为1011011110011111110011011101011101100100001111111101010100110111101101001001100跟图示相同说明仿真过程完全正确。5.2、问题发现及解决调试过程某利信道报错,查了资料,发现锐瑞利信道的输入输出必须是复数,在瑞利信道输入端接上一个复数转换模块,将输入实数转换成虚部为0的复数后问题得到解决。调试过程中又发现误码率非常高,通过查资料和请教老师,发现这是又由延迟造成的。然后在信源和信宿分别连接一个T
12、o Worksapce模块,再在示波器显示,观察延迟,并且在错误率统计模块修改延迟,然后再一次仿真,控制误码率在0.4左右,问题得到了解决。第六章 设计总结本次课程设计,学会了Simulink仿真工具的基本使用方法以及调试方法,并且初步了解了Simulink的模块,同时还了解了S函数的编程方法。在本次设计中,完成了CRC编码以及检测的要求,而且了解了系统码、线性编组码的定义,对设计中所用到的模块有了深刻的了解,尤其是CRC编码器和CRC检测器的工作原理,同时也了解了各个模块的设置要求以及输入输出数据的要求,总的来说这次设计圆满完成了。但是不可否认在本设计中还是存在很多问题,Vector sco
13、pe只能显示幅度不能显示时间和频率;误码率还是比较高(查资料显示使用瑞利信道误码率都很大);生成的多项式只能有6种模式,这个问题如果使用通用CRC编码器能得到解决。本次实验前,用使用Simulink进行多次仿真,在仿真过程中发现问题分析原因后,及时修改设计方案,修改电路中的各项参。但仿真的环境与实际情况还是存在出入,因而在使用中,还要完善方案参考文献:1.樊昌信 曹丽娜等. 通信原理(第6版) M. :国防工业,2008 2.X森 X正亮等 Marlab仿真技术与实例应用教程. :机械工业,20043.邓华等 Matlab通信仿真及应用实力详解.:人民邮电,2003 附录1:仿真电路图附录2:
14、S函数代码functionsys,x0,str,ts=crcfunc(t,x,u,flag)0A定义S函数m=1 1 0 1 0 1 0 1;消息对应的二进制序列G=1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1;生成多项式G( )=+ 5+ +I对应的二进制序列switch flag,0A根据flag的值进行不同的S函数操作case 0sys,xO,str,ts=mdllnitializeSizes(m,G);case 2sys=mdlUpdate(t,x,u,m,G);case 3sys=mdlOutputs(t,x,u,m,G);case1,4,9sys=;other
15、wiseerror(unhandled flag=,num2str(flag);endfunctionsys,x0,sir,t8=mdllnitializeSizes(m,G)0A初始化S函数sizes=simsizes;sizesNumContStates=0:sizesNumDiscStates=1;sizesNumOutputs=1;sizesNumInputs=1;sizesDirFeedthrough=1;sizesNumSampleTimes=1;sys=simsizes(sizes);xO=ones(2,1);str=;ts=1 0;for i=1:24if(i=8)M(i)=m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CRC 编码 Simulink 仿真 实现

链接地址:https://www.desk33.com/p-18090.html