CRC编码的Simulink仿真实现.docx

上传人:b****1 文档编号:1395999 上传时间:2022-10-22 格式:DOCX 页数:16 大小:342.32KB
下载 相关 举报
CRC编码的Simulink仿真实现.docx_第1页
第1页 / 共16页
CRC编码的Simulink仿真实现.docx_第2页
第2页 / 共16页
CRC编码的Simulink仿真实现.docx_第3页
第3页 / 共16页
CRC编码的Simulink仿真实现.docx_第4页
第4页 / 共16页
CRC编码的Simulink仿真实现.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

CRC编码的Simulink仿真实现.docx

《CRC编码的Simulink仿真实现.docx》由会员分享,可在线阅读,更多相关《CRC编码的Simulink仿真实现.docx(16页珍藏版)》请在冰豆网上搜索。

CRC编码的Simulink仿真实现.docx

CRC编码的Simulink仿真实现

第一章设计要求求2

1.1基本要求2

1.2提高要求2

1.3功能需求2

第二章系统的组成及工作原理3

2.1系统组成3

2.2CR(编码原理3

2.3通用CR编码器3

2.4CRC—N编码器3

2.5CRC检测器(CRC-N检测器)4

第三章概要设计5

3.1系统层次结构图5

3.2方案的比较5

第四章详细设计6

4.1仿真模型图6

4.2各个模块的功能及参数设置6

第五章调试及测试结果与分析12

5.1功能调试12

5.2、问题发现及解决13

第六章设计总结14

参考文献15

附录116

附录217

第一章设计要求

1.1、设计要求

CRCS

(1)对输入数据帧,进行CRC编码。

根据数据帧长度,选择适当长度的码器。

观察编码前后的波形。

(2)掌握CR(生成多项式、系统码等概念。

(3)掌握SIMULINK仿真参数的设置方法。

1.2提高要求

从误码率的角度考虑如何根据数据帧长度选择合适的长度的CRCS码器

1.3功能需求

实现CRCS码以及检测过程,并且在示波器上显示波形。

第二章系统组成及设计原理

2.1、系统组成

本系统由信源编码部分,信道部分,信宿检测部分组只要组成

2.2、CRC编码原理

在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K码。

对于一个给定的(N,K)码,可以证明存在一个最高次幕为N-K=R的多项式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、通用CR(编码器

通用CR(编码器根据输入的一帧数据计算得到这帧数据的循环冗余码,并且把这个循环冗余码附加到帧数据后面,形成输出数据流。

如果通用CR(编码器的输人数据的帧长度等于凡,生成多项式的最高次数等于r,对每帧数据产生k个校验和

(CHECKSUM)则CR(编码器的工作流程如下:

(1)把输入的一帧数据等分成k个部分,每个部分的长度是n/k;

(2)在每个部分的数据。

后面添加r个二进制位(并且这r个二进制位的数值等于通用CR(编码器的初始状态),得到二进制序列S;

⑶计算5的循环冗余码Ci;

⑷把循环冗余码Ci添加到Wi的后面,得到二进制序列;

(5)把所有的序列连接起来形成数据帧。

2.4、CR—N编码器

CR—N编码器(CRC-NGenerator)计算每一个输入信号帧的循环冗余码(CRC),并把计算得到的循环冗余码附加到输入帧的末尾。

CRC-N编码器是通用CR编码器的

简化,它的工作方式与通用CR(编码器类似,但是它提供了若干个经常使用的生成多项式,W就表示这些生成多项式的最高次数。

2.5、CR检测器(CRC—N检测器)

与通用CRCk成器、CRC-N生成器相对应,CR检测器也有两种:

即通用户CRC检测器与CR一W检测器。

这两种检测器具有相同的工作原理,它们首先从接收到的二进制序列中分离出信息序列和CRC然后根据接收端的信息序列重新计算CRC如果重新计算得到的CR与接收到的CR(相等,则认为接收序列是正确的;否则,则认为接收序列存在着传输错误。

第三章概要设计

3.1、系统层次结构图

3.2、方案的比较

方案一:

使用Simulink自带的模块进行搭配,设置参数并仿真

CR(码的仿真模型主要由BernoulliBinaryGenerator(贝努利二进制序列生成

器模块),,CRC-NGenerator(CRC—N生成器)和CRC-NSyndromeDetector(CRC—N检测器)等模块组成。

通过设计各个模块的参数就可以得到仿真结果。

方案二:

使用C语言编写S函数并进行仿真。

通过Simulink中的S函数也可以得到同样的仿真结果。

与CR码仿真实现对应的是一个离散状态的s函数,其输入模块为BernoulliBinaryGnerator模块,通过S函数模块仿真后也能得到结果。

但是相比较而言,方案二过程过于复杂,编写代码也容易出错,而方案一简单明了,调试方便,所以选择的方案一来进行仿真。

第四章详细设计

4.1、仿真模型图

仿真模型图如图4-1

rwwwvIGmajIiI

•mm

*屮旨叩!

I豈

4用

图4-1

4.2、各个模块的功能及参数设置

(1)BernoulliBinaryGenerator(贝努利二进制序列生成器模块)

图4-2

BernoulliBinaryGenerator是一个二进制序列发生器,如图4-2所示。

Probabolityofazero设置序列中出现0的概率,这里设置为0.3。

Samplesperframe设置帧的长度。

(2)CRC-NGenerator(CRC编码器)CRC-NGenerator是用来对输入帧进行CRC

编码的,如图4-3所示。

CRC-NOenerdluF

图4-3

CRC-NMetho是用来设置生成多项式的,这里有6种生成多项式,如表4-1

所示

CRC32

忑煜卜声址*川站土拓22*工山+工M】十

ATm+A*+A?

+XS-JC4+X2+X+1

32

4-^+1

24

CRC-16

再国★北甘4工上+1

16

Rc^crwdCRC,(fi

X14+X1*+X+1

Jb

CRM

护十,於十"+X*+X1+1

W3

X*十丄]+J;1+x+f

4

表4-1

在本次设计中采用CRC-32莫式,其生成多项式对应二进制序列为

1000000100110000010001110110110111

(3)复数转换模块

该模块如图4-4所示

Conplixto

Redlimidg

图4-4

这个模块是用来将实数转换成虚部为0的复数,由于瑞利信道只能输入复数,以需要添加这个模块。

(4)多径瑞利衰减信道模块

该模块如图4-5所示

MultipalhKayleigb

Fjdin$Channel

图4-5

该模块是用来实现信号的多径瑞利衰减仿真,他的输入信号是帧的复数形式。

其参数设置如图4-6

图4-6

Dopplerfrequency(Hz):

多普勒频移

Sampletime:

抽样间隔

Delayvector:

时延向量

Gainvector:

增益向量

(5)矩阵螺旋解交织器

该模块如图4-7所示

Mrirbc

Irrt前討呻

Interlejvei

图4-7

该模块能将实数序列转换成1列多行的矩阵,其参数设置如图4-8

图4-8

(6)CRC-检测器

CRC-检测器如图4-9所示

*

CRG^NSyndrome

Dftector

CRC-MSyndrome

n[i1

图4-9

该模块是用来CR解码的,并且能计算是否出错了设置参数方法跟CRC-编码器相同

(7)vectorscope示波器

该模块用来显示编码前后波形如图4-10所示

Vector

图4-10

(8)错误率统计模块

该模块从发射端和接收端分别接受数据并进行比较,得出误码率该模块如图4-11所示

ErrorRdte

图4-11

其参数设置如图4-12

图4-12

(9)选择器selector

该模块用来选择从错误率统计模块输出的3个数据中的第一个(三个数据分别

是:

误码率,错误码元数,总码元数)如图4-13所示

Sek«tor

图4-13

 

第五章调试及测试结果与分析

在整个制作过程中,首先是弄清楚各个模块的功能以及参数的设置方法,布置好各个模块的位置,然后进行连接接。

再进行参数设置,进行仿真和调试。

5.1功能调试

按下运行,等仿真结束,观察示波器波形,然后计算CRC编码,看是否

与示波器波形相同。

示波器波形如图5-10

图5-1

从图5-1可以看出输入为

101101111001111111001101110101110110010000111111

CRC-编码器选用的是CRC-32即生成多项式对应二进制代码为

1000000100110000010001110110110111

经过计算所得校验位1101010100110111101101001001100

所得CRC编码为

1011011110011111110011011101011101100100001111111101010100110111101101001001100

跟图示相同说明仿真过程完全正确。

5.2、问题发现及解决

调试过程中瑞利信道报错,查了资料,发现锐瑞利信道的输入输出必须是复数,在瑞利信道输入端接上一个复数转换模块,将输入实数转换成虚部为0的复数后问题

得到解决。

调试过程中又发现误码率非常高,通过查资料和请教老师,发现这是又由延迟造成的。

然后在信源和信宿分别连接一个ToWorksapce模块,再在示波器显示,观察延迟,并且在错误率统计模块修改延迟,然后再一次仿真,控制误码率在0.4左右,

问题得到了解决。

第六章设计总结

本次课程设计,学会了Simulink仿真工具的基本使用方法以及调试方法,并且初步了解了Simulink的模块,同时还了解了S函数的编程方法。

在本次设计中,完成了CR编码以及检测的要求,而且了解了系统码、线性编组码的定义,对设计中所用到的模块有了深刻的了解,尤其是CR(编码器和CR检测器

的工作原理,同时也了解了各个模块的设置要求以及输入输出数据的要求,总的来说

这次设计圆满完成了。

但是不可否认在本设计中还是存在很多问题,Vectorscope只能显示幅度

不能显示时间和频率;误码率还是比较高(查资料显示使用瑞利信道误码率都很大);生成的多项式只能有6种模式,这个问题如果使用通用CRCS码器能得

到解决。

本次实验前,用使用Simulink进行多次仿真,在仿真过程中发现问题分

析原因后,及时修改设计方案,修改电路中的各项参。

但仿真的环境与实际情

况还是存在出入,因而在使用中,还要完善方案

2008

2004

参考文献:

[1].樊昌信曹丽娜等•通信原理(第6版)[M].北京:

国防工业,

[2].森正亮等Marlab仿真技术与实例应用教程•北京:

机械工业,

[3].邓华等Matlab通信仿真及应用实力详解.北京:

人民邮电,2003

附录1:

仿真电路图

 

总亡也£*』帀

14W9>I

"*>nr+|話

rirT|p・t

匚■Njnrr

0*iRp

 

附录2:

S函数代码

function[sys,xO,str,ts]=crcfunc(t,x,u,flag)OA定义S函数

m=[11010101];消息对应的二进制序列

G=[11000000000000101];生成多项式G()=

+5++1对应的二进制序列

switchflag,0A艮据flag的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1