通信原理课程设计.docx
《通信原理课程设计.docx》由会员分享,可在线阅读,更多相关《通信原理课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
![通信原理课程设计.docx](https://file1.bdocx.com/fileroot1/2023-4/17/d3b49614-ac12-4ead-b539-b50e53d139e7/d3b49614-ac12-4ead-b539-b50e53d139e71.gif)
通信原理课程设计
通信原理课程设计
姓名______
学号_______
班级_____
一、目录…………………………………………………………………2
二、任务书……………………………………………………………………3
三、具体内容及要求……………………………………………………………4
3.1题目一…………………………………………………………………4
3.1.1题目内容……………………………………………………………4
3.1.2设计思想或方法………………………………………………………4
3.1.3实现的功能或方法……………………………………………………4
3.1.4程序流程图……………………………………………………………4
3.1.5程序代码……………………………………………………………5
3.1.6仿真框图……………………………………………………………5
3.1.7模块描述及参数设置…………………………………………………5
3.1.8结果运行……………………………………………………………10
3.1.9结果分析……………………………………………………………11
3.2题目二…………………………………………………………………11
3.2.1题目内容……………………………………………………………11
3.2.2设计思想或方法……………………………………………………113.2.2程序流程图……………………………………………………………12
3.2.4程序代码……………………………………………………………13
3.2.5仿真框图……………………………………………………………13
3.2.6模块描述及参数设置…………………………………………………14
3.2.7结果运行……………………………………………………………20
3.2.8结果分析……………………………………………………………20
3.3题目三…………………………………………………………………20
3.3.1题目内容……………………………………………………………20
3.3.2设计思想或方法………………………………………………………20
3.2.3程序流程图……………………………………………………………21
3.2.4程序代码……………………………………………………………21
3.2.5结果运行……………………………………………………………23
3.2.6结果分析……………………………………………………………23
四、心得与体会……………………………………………………………………23
五、参考文献………………………………………………………………………23
《通信原理课程设计》任务书
一、目的和要求:
要求学生在熟练掌握MATLAB和simulink仿真使用的基础上,学会通信仿真系统的基本设计与调试。
并结合通信原理的知识,对通信仿真系统进行性能分析。
二、实验环境
PC机、Matlab/Simulink
三、具体内容及要求
(1)试用Matlab/Simulink研究BPSK在加性高斯白噪声信道下的误码率性能与信噪比之间的关系;
(2)试用Matlab/Simulink研究BPSK+信道编码(取汉明码)在加性高斯白噪声信道下的误码率性能与信噪比之间的关系;分析不同码率对误码率性能的影响。
(3)试用Matlab编程实现HDB3码的编解码过程,并画出110100000011100000010的原始、编码和解码图形。
四、提交设计报告
内容包括:
●系统的基本原理框图以及每一个模块的作用;
●系统Simulink仿真过程中,每一个用到的模块中主要参数的意义;
●仿真系统参数的设定和设定的依据;
●仿真系统参数改变时,给仿真结果带来的影响(如高斯白噪声信道的信噪比增加,则误码率减小);
●仿真程序(需要加注释)。
●仿真的结果(波形,误码率等)。
五、主要参考文献及资料
邵玉斌.Matlab/Simulink通信系统建模与仿真实例分析.清华大学出版社2008年
李贺冰等,Simulink通信仿真教程,国防工业出版社,2006年5月。
3.1、题目一
3.1.1、题目内容
试用Matlab/Simulink研究BPSK在加性高斯白噪声信道下的误码率性能与信噪比之间的关系;
3.1.2、设计思想或方法
先用Simulink建立BPSK在加性高斯白噪声信道(无突发干扰)下的仿真模型,设置好每个模块的参数,编写主程序实现BPSK的输入,在程序运行过程中调用BPSK仿真模型,然后用BitErrorRate取在加性高斯白噪声信道下的误码率,最后画出BPSK在加性高斯白噪声信道下的误码率性能与信噪比之间的关系。
3.1.3、实现的功能说明
通过调用已建立的BPSK在加性高斯白噪声信道(无突发干扰)下的仿真模型,利用Matlab编程分析BPSK在加性高斯白噪声信道(无突发干扰)的误码率性能。
3.1.4、程序流程图
3.1.5、程序代码
x=0:
20;
y=x;
holdoff;%取消原来的图M=2
fori=1:
length(x)
SNR=x(i);%信道的信噪比依次取x中的元素
sim('untitled1');%运行仿真程序,得到的误比特率保存在工作区变量BitErrorRate中y(i)=mean(BitErrorRate);%计算BitErrorRate的平均值作为本次仿真的误比特率
End
semilogy(x,y,'k','LineWidth',2);%对y取对数画图
holdon;
xlabel('高斯白噪声信道中的SNR');
ylabel('误码率');
title('BPSK的误码率曲线');
holdon;
gridon;%画网格
3.1.6、仿真框图
3.1.7、模块描述及参数设置
RandomIntegerGenerator(随机整数发生器)
模块描述:
采用该模块产生随机的二进制随机信号作为系统的信源。
模块参数:
Initialseed:
随机数种子,不同的随机数种子通常产生不同的序列。
Sampletime:
抽样时间,表示输出序列中每个二进制符号的持续时间。
Frame-basedoutputs:
选种表示输出为帧格式,否则输出数据流。
Samplesperframe:
只有当Frame-basedoutputs选种后才可编辑此参数,它表示输出一帧中包含的抽样点数。
此处表示1帧由10000个比特组成。
Outputdatatype:
输出数据类型。
BPSKModulatorBaseband(BPSK基带调制器)
模块参数:
Phaseoffset(rad):
相位偏移
AWGNChannel(高斯信道)
模块描述:
最简单的信道,常指加权高斯白噪声(AWGN)信道。
这种噪声假设为在整个信道带宽下功率谱密度(PDF)为常数,并且振幅符合高斯概率分布。
模块参数:
Initialseed:
随机数种子,不同的随机数种子通常产生不同的序列。
SNR:
信噪比。
Inputsignalpower,referencedto1ohm:
输入信号功率,参考1欧姆。
BPSKDemodulatorBaseband(BPSK基带解调器)
模块参数:
Phaseoffset(rad):
相位偏移
ErrorRateCalculation(误码率计算)
模块描述:
通过比较传输数据和接收数据来计算误码率,模块的输出数据是长度为n的向量,其中每个元素的意义分别是:
误码率或误比特率、总的错误个数、总的参加比较的符号或比特数。
模块参数:
Receivedelay:
指定接收方滞后发送的抽样点数,即接收的第几个值对应发送的第一个值。
Computationdelay:
指定开始比较时模块忽略的抽样点数。
Computationmode:
指定模块是比较全部还是输入数据。
Outputdata:
指定计算结果是输出到工作区还是端口。
Selector(信号选择器)
模块描述:
选择或重组信号,对输入矢量的元素进行有选择的输出。
选择第一个,则输出误码率;选择第二个,则输出误码个数;选择第三个,则输出全部码数。
模块参数:
Numberofinputdimensions:
输入维数。
Indexmode:
索引模式,该模块默认从一开始的(one-based)。
Inputportsize:
输入口大小。
ToWorkspace(将输出数据写入到Matlab的工作空间)
模块描述:
将其输出写入工作空间。
模块将其输出写入到一个由模块Variablename参数命名的矩阵或结构中。
模块参数:
Variablename:
写入工作区间的数据名称,默认为simout。
Limitdatapointstolast:
模块最多可以保留的数据个数,inf表示无穷大。
Decimation:
写入数据的抽样频率,即每隔多少抽样点输入一个值。
Sampletime:
写入数据的抽样时间,默认值为-1,表示与上一模块抽样时间相同。
Saveformat:
将仿真输出保存到工作空间的格式,该模块是将输出保存为为数组形式。
3.1.8、运行结果
3.1.9、结果分析
在信道高斯白噪声的干扰下,数字调制系统的误码率取决于信噪比,BPSK的误码率随着信噪比的增大而减小。
3.2、题目二
3.2.1、题目内容
试用Matlab/Simulink研究BPSK+信道编码(取汉明码)在加性高斯白噪声信道下的误码率性能与信噪比之间的关系;分析不同码率对误码率性能的影响。
3.2.2、设计思想或方法
先用Simulink建立BPSK在加性高斯白噪声信道(无突发干扰)下的仿真模型,信道编码及解码方式,采用汉明码进行处理,设置好每个模块的参数,编写主程序实现BPSK的输入,在程序运行过程中调用BPSK仿真模型,然后用BitErrorRate取在加性高斯白噪声信道下的误码率,最后画出BPSK在加性高斯白噪声信道下的误码率性能与信噪比之间的关系曲线。
3.2.3、程序流程图
3.2.4、程序代码
clc
%x表示信噪比
x=-2:
1:
8;
y=zeros(size(x));%产生全零矩阵
%信源产生信号的bit等于10000bit/s
BitRate=10000;
%循环执行仿真程序
MessageLength=4;
CodewordLength=7;
fori=1:
length(x)
SNR=x(i);
sim('BPSK_Hamming');%运行仿真程序,得到的误比特率保存在工作区变量BitErrorRate中
y(i)=mean(BitErrorRate);%对矩阵中各列的误码率元素分别求平均值
end
semilogy(x,y,'-r');%y轴用对数标度,x轴用线性标度绘制图形
holdon;
MessageLength=11
CodewordLength=15
fori=1:
length(x)
SNR=x(i);
sim('BPSK_Hamming');%调用仿真程序
y(i)=mean(BitErrorRate);%取平均值
end
semilogy(x,y,'-k');%y轴用对数标度,x轴用线性标度绘制图形
holdon;
MessageLength=26
CodewordLength=31
fori=1:
length(x)
SNR=x(i);
sim('BPSK_Hamming');%调用仿真程序
y(i)=mean(BitErrorRate);%取平均值
end
semilogy(x,y,'-b');%y轴用对数标度,x轴用线性标度绘制图形
holdon;
xlabel('信噪比SNR(dB)');
ylabel('误码率Pe');
title('BPSK+汉明码的误码率性能');
legend('码率=4/7','码率=11/15','码率=26/31')%给图形加注解
axis([-281e-61]);%坐标轴
gridon;%画网格线
3.2.5、仿真框图
3.2.6、模块描述及参数设置
RandomIntegerGenerator(随机整数发电器)
模块描述:
采用该模块产生随机的二进制随机信号作为系统的信源
模块参数:
Initialseed:
随机数种子,不同的随机数种子通常产生不同的序列。
Sampletime:
抽样时间,表示输出序列中每个二进制符号的持续时间。
Frame-basedoutputs:
选种表示输出为帧格式,否则输出数据流。
Samplesperframe:
只有当Frame-basedoutputs选种后才可编辑此参数,它表示输出一帧中包含的抽样点数。
此处表示1帧由MessageLength个比特组成
Outputdatatype:
输出数据类型。
HammingEncoder(汉明码编码器)
模块描述:
用于对输入信息进行汉明编码,汉明码是一种能够纠正一位错误的红性分组码,码长为N。
该信息位的长度为K,其中,N=2^M-1(M>=3),K=N-M。
模块参数:
CodewordLength:
码长
M-degreeprimitivepolynomial:
m次本始多项式
BPSKModulatorBaseband(BPSK基带调制器)
模块参数:
Phaseoffset(rad):
相位偏移
AWGNChannel(高斯信道)
模块描述:
最简单的信道,常指加权高斯白噪声(AWGN)信道。
这种噪声假设为在整个信道带宽下功率谱密度(PDF)为常数,并且振幅符合高斯概率分布。
模块参数:
Initialseed:
随机数种子,不同的随机数种子通常产生不同的序列。
SNR:
信噪比。
Inputsignalpower,referencedto1ohm:
输入信号功率,参考1欧姆。
BPSKDemodulatorBaseband(BPSK基带解调器)
模块参数:
Phaseoffset(rad):
相位偏移
HammingDecoder(汉明码解码器)
模块描述:
创建一个码长为N,信息码长为K的汉明码。
其中,N=2^M-1(M>=3),K=N-M。
模块参数:
此处的两个参数要与前面的HammingEncode参数一致。
ErrorRateCalculation(误码率计算)
模块描述:
通过比较传输数据和接收数据来计算误码率,模块的输出数据是长度为n的向量,其中每个元素的意义分别是:
误码率或误比物率、总的错误个数、总的参加比较的符号或比特数。
模块参数:
Receivedelay:
指定接收方滞后发送的抽样点数,即接收的第几个值对应发送的第一个值。
Computationdelay:
指定开始比较时模块忽略的抽样点数。
Computationmode:
指定模块是比较全部还是输入数据。
Outputdata:
指定计算结果是输出到工作区还是端口。
Selector(信号选择器)
模块描述:
选择或重组信号,对输入矢量的元素进行有选择的输出。
选择第一个,则输出误码率;选择第二个,则输出误码个数;选择第三个,则输出全部码数。
模块参数:
Numberofinputdimensions:
输入维数。
Indexmode:
索引模式,该模块默认从一开始的(one-based)。
Inputportsize:
输入口大小。
ToWorkspace(将输出数据写入到Matlab的工作空间)
模块描述:
写入专门的数据到MATLAB的主工作区。
数据不可用直到仿真结束或暂停。
模块参数:
Variablename:
写入工作区间的数据名称,默认为simout。
Limitdatapointstolast:
模块最多可以保留的数据个数,inf表示无穷大。
Decimation:
写入数据的抽样频率,即每隔多少抽样点输入一个值。
Sampletime:
写入数据的抽样时间,默认值为-1,表示与上一模块抽样时间相同。
Saveformat:
输出数据的形式。
3.2.7、运行结果
3.2.8、结果分析
在相同信噪比的情况下,码率不同误码率也不同,信息码长度越长的误码率和信噪比关系曲线越低,在信噪比较小时很难分辨误码率相差不大,而随着信噪比的增大误码率会相差越来越大。
3.3题目三
3.3.1、题目内容
试用Matlab编程实现HDB3码的编解码过程,并画出110100000011100000010的原始、编码和解码图形。
3.3.2、设计思想或方法
编码时,对于消息码中的1依次取+1,-1,连续有4个0时,第4个0置为V,第一个V的正负与前一个相邻0的1的正负一样,之后V依次取前个V的相反极性;并且判断V的极性与前一个与0相邻的非0值的极性是否一样,若不一样,则改变该非0值的极性;
解码时,+1,—1都变成1;连续遇见3个0则把该3个0与之后1位皆变为0;l连续遇见2个0,则判断2个0之前一位与之后一位极性是否相同,若相同,则该4为皆化为0。
3.3.3、程序流程图
3.3.4、程序代码
x1=[110100000011100000010];
n=length(x1);
x2=x1;
m=1;
r=0;
c=0;
d=0;
%HDB3编码
fori=1:
n
ifx2(i)==0
r=r+1;
ifr==4&c==0
c=1;
x2(i)=b;
d=-x2(i);
r=0;
end
ifr==4&c==1
x2(i)=d;
d=-d;
ifx2(i)~=x2(i-4)
x2(i-3)=x2(i);
m=-x2(i-3);
end
r=0;
end
else
x2(i)=m;
b=m;
m=-m;
r=0;
end
end
%HDB3解码
e=0;
x3=x2;
fori=1:
n
ifx3(i)==0
e=e+1;
ife==3&ix3(i-2:
i+1)=[0000];
e=0;
end
ife==2&iifx3(i+1)==x3(i-2)
x3(i-2:
i+1)=[0000];
e=0;
end
end
elsex3(i)=1;
e=0;
end
end
%作图
subplot(4,1,1);stairs([0:
length(x1)-1],x1);axis([0length(x1)-22]);ylabel('消息码');
subplot(4,1,2);stairs([0:
length(x1)-1],x2);axis([0length(x1)-22]);ylabel('HDB3码');
subplot(4,1,3);stairs([0:
length(x1)-1],x3);axis([0length(x1)-22]);ylabel('解码后');
3.3.5、运行结果
3.3.6、结果分析
第一个波形是消息码110100000011100000010
第二个波形是HDB3码1-101000100-11-1000-10010
第三个波形是解码110100000011100000010
通过对比经HDB3码编码前的原消息码和HDB3码解码,可以得出其编码译码过程完全对应正确,解码成功。
4、心得与体会
这次通信原理的课程设计,不像平时的实验课,会提供仿真框图和程序,所以如何连接仿真框图,需要哪些部件,每个部件如何设置参数,如何编写程序都需要自己来解决。
虽然一开始无从下手,不过在同学的帮助下,上网查找资料,还是解决了这些问题。
这也使得我对于仿真框图与BPSK的调制解调等印象更加深刻。
在编写HDB3码的编码与解码程序时,也遇到了不少问题,好几次都失败了,令我满头疼的,最后冷静的分析了HDB3码的编码过程,并列出了许多个消息码转化为HDB3码的例子,相互比较找到规律后,成功解决了何时添加B,V和B,V极性的问题。
解码时便要容易许多了,只要观察几个例子,很容易得到规律。
不过我编写的解码部分程序还是存在一些不足之处,对于一些特别的消息码不能应用。
5、参考文献
【1】樊昌信,曹丽娜.通信原理,第6版.国防工业出版社,2006.