数字通信系统的性能分析与仿真报告书.docx
《数字通信系统的性能分析与仿真报告书.docx》由会员分享,可在线阅读,更多相关《数字通信系统的性能分析与仿真报告书.docx(21页珍藏版)》请在冰点文库上搜索。
数字通信系统的性能分析与仿真报告书
淮海工学院
课程设计报告书
课程名称:
通信综合课程设计
题目:
数字通信系统的性能分析与仿真
系(院):
电子工程系
学期:
2011-12-01
专业班级:
姓名:
学号:
评语:
成绩:
签名:
日期:
1课程设计的目的
本次课程设计是根据“通信工程专业培养计划”要求而制定的。
综合课程设计是通信工程专业的学生在学完所有专业课后进行的综合性课程设计。
其目的在于使学生在课程设计过程中能够理论联系实际,在实践中充分利用所学理论知识分析和研究设计过程中出现的各类技术问题,巩固和扩大所学知识面,为以后走向工作岗位进行设计打下一定的基础。
课程设计的任务是
(1)掌握一般通信系统设计的过程、步骤、要求、工作内容及设计方法;掌握用计算机仿真通信系统的方法。
(2)训练学生综合运用专业知识的能力,提高学生进行通信工程设计的能力。
2教学要求
课程设计要求的主要步骤有:
1、明确所选课题的设计目的和任务,对设计课题进行具体分析,充分了解系统的性能,指标,内容等。
2、进行方案选择。
根据掌握的知识和资料,针对系统提出的任务,要求和条件,完成系统的功能设计。
从多个方案中选择出设计合理,可靠,满足要求的一个方案。
并且对方案要不断的进行可行性和优缺点的分析,最后设计一个完整框图。
3、原理设计。
4、调试阶段。
5、说明书编制。
3设计内容
本次综合课程设计内容为数字通信系统的性能分析与仿真。
应该包括以下设计内容:
1、使用一种分组码进行信道纠错编码。
2、使用格雷码对数据进行映射。
3、使用MQAM进行调制,M可选择8、16、32、64、128。
4、选择合适的升余弦函数,使用升余弦对基带信号进行滤波。
5、在解调端,进行滤波,MQAM的解调,格雷码的逆映射,纠错解码。
6、改变信噪比,分析系统性能。
4设计内容介绍
MQAM是一种基本的相位----幅度联合调制方式。
研究这种基本的数字调制信号的性能可以帮助学生理解数字通信的基本特点。
信道纠错编码是分组码,M必须选择数字8、16、32、64、128以分析各种M下的QAM系统性能。
应用Matlab进行仿真,仿真采用蒙特卡罗模型。
仿真的基本框图是:
信号源---信道编码---映射---调制---滤波—高斯信道---滤波---解调-----逆映射-----译码---信宿
信号源:
基本的二进制数据流。
信道编码:
可以选择卷积吗,分组吗。
调制:
MQAM。
M必须是数字8,16,32,64。
在调制前使用格雷码进行映射。
信道:
信号经过调制后。
通过信道。
信道可以选择高斯加性白噪声信道,二进制对称信道,多径瑞利衰落信道,莱斯衰落信道。
设置不同的信道信噪比,对系统进行仿真,分析不同信噪比之下的系统性能。
解调:
根据调制方式,选择对应的解调方式。
译码:
根据信道编码方式,选择对应的信道解码方式。
性能分析:
信号经过调制,信道,解调过程。
在接收端,将得到的数据于原来的信号源数据比较,得到在特定信噪比的误码率。
改变系统信噪比,从而得到系统的误码率曲线图。
5设计过程
1.仿真模型
(1)根据选择的调制信号方式,确定仿真流程及框图。
(2)确定仿真中所用的函数,模块的具体参数。
2.软件设计:
编写M文件,在程序中依次改变信噪比,得到在特定信噪比下的误码率。
信噪比范围是-10dB---30dB之间,步长为2dB。
根据得到的误码率数据,给出误码率---信噪比的曲线图。
3.仿真调试:
在完成设计草案后可以进行仿真,并且对所设计的系统进行修改,并同理论数据进行比较。
要求完成:
1、选择一种在具体的信道编码,信道类型下的MQAM的数字调制方式。
2、结合具体数字调制方式,分别选择四种MQAM进行系统仿真。
3、绘出没有信道编码情况下的该数字调制系统下的误码率---信噪比曲线图。
4、绘出有信道编码情况下的该数字调制系统下的误码率---信噪比曲线图。
5、对有无信道编码情况下的系统误码率---信噪比曲线图进行比较,并分析。
6程序设计说明书
6.1随机信号16-QAM的传输与仿真数字通信系统
a.源程序
%产生二进制整数流
M=16;%信号星座图大小为16
k=log2(M);
n=3e4;%3000
nsamp=1;%采样率
x=randint(n,1);%产生随机二进制数据流
图;%产生一个新窗体
stem(x(1:
40),'filled');%选择向量中1到40的数据
title('RandomBits');%标题
xlabel('BitIndex');%横坐标
ylabel('BinaryValue');%纵坐标
图1:
随机产生的前四十个二进制数字信号
产生的随机信号作为信号源的信号用于数字通信的仿真与性能分析。
%定义滤波参数
nsamp=4;%采样率
filtorder=40;%滤波次顺序
delay=filtorder/(nsamp*2);%时延
rolloff=0.25;%滚降系数
rrcfilter=rcosine(1,nsamp,'fir/sqrt',rolloff,delay);
figure;%产生一个新窗体
impl(rrcfilter,1);
图2:
信号经过格雷映射之后形成的十进制数值图
图1中显示的四十个二进制数转换为十进制,因此图2中只显示十个十进制数。
%分组码纠错编码
genmat=[[101;011;010],eye(3)];%产生一个6*3的矩阵
fen=enfen(x,6,3,'linear',genmat);%进行分组线性编码
%准备调制,格雷码映射
mapping=[0132457612131514891110].';%定义一个格雷码数组
yings=bi2de(reshape(fen,k,length(fen)/k).','left-msb');%2进制到10进制转换
yings=mapping(yings+1);
figure;%产生一个新窗体
stem(yings(1:
10),'filled');
title('Randomsymols');%标题
xlabel('SymbolIndex');%横坐标
ylabel('IntegerValue');%纵坐标
图3:
滤波器的脉冲响应曲线图%进行16QAM调制
y=qammod(yings,M);
%进行平方跟升余弦滤波
send=rcosflt(y,1,nsamp,'filter',rrcfilter);
eyediagram(send(1:
2000),nsamp*2);%产生眼图
图4:
产生的无噪信号的眼图
%加入高斯白噪声
EbNo=10;
snr=EbNo+10*log10(k)-10*log10(nsamp);%信噪比公式
ynoisy=awgn(send,snr,'measured');
recive=ynoisy;
%滤波
recive=rcosflt(ynoisy,1,nsamp,'Fs/filter',rrcfilter);
recive=downsample(recive,nsamp);
recive=recive(2*delay+1:
end-2*delay);
%产生分布图
h=scatterplot(sqrt(nsamp)*ynoisy(1:
nsamp*5e3),nsamp,0,'g.');
holdon;%在一张图上
scatterplot(recive(1:
5e3),1,0,'kx',h);%绘图
title('ReceivedSignal,BeforeandAfterFiltering');%标题
legend('BeforeFiltering','AfterFiltering');%图例
axis([-55-55]);%范围
图5:
信号通过高斯信道后滤波前后的星座图。
可以看到信号在经过滤波器之后码间距离增大、性能提高。
%16QAM解调
niyings=qamdemod(recive,M);
%格雷码逆映射
[dummydemapping]=sort(mapping);
%sort对mapping排序,排序结果存在dummy中,并把dummy中的数值在mapping中的索引给出,存在demapping中
demapping=demapping-1;
niyings=demapping(niyings+1);
l=de2bi(niyings,'left-msb');%进制转换
l=reshape(l.',prod(sile(l)),1);
%分组码纠错解码
l=defen(l,6,3,'linear',genmat);
figure;%产生一个新窗体
stem(l(1:
40),'filled');
title('RandomBits');%标题
xlabel('BitIndex');%横坐标
ylabel('BinaryValue');%纵坐标
图6:
终端接收端得到的信号
与图1产生的随机输入信号相同,即没有误码。
%计算BER
[errors,error_rate]=biterr(x,l)
b.运行结果:
errors=25
error_rate=8.3333e-004
6.2M=8、16、32、64时的QAM系统误码率比较
Mvec=[8163264];%定义数组
EbNovec=[0:
2:
10];%0到10步长2
errors=leros(length(Mvec),length(EbNovec));
%产生一个length(Mvec)*length(EbNovec)的0矩阵
error_rate=leros(length(Mvec),length(EbNovec));
%产生二进制整数流
foridxM=1:
length(Mvec)
foridxEbNo=1:
length(EbNovec)
M=Mvec(idxM)
k=log2(M);
n=3e4;
nsamp=4;
x=randint(n,1);
%定义滤波参数
nsamp=4;
filtorder=40;
delay=filtorder/(nsamp*2);
rolloff=0.25;
rrcfilter=rcosine(1,nsamp,'fir/sqrt',rolloff,delay);
%分组码纠错编码
genmat=[[101;011;010],eye(3)];
fen=enfen(x,6,3,'linear',genmat);
%准备调制,格雷码映射
Msile=Mvec(idxM);
mapping=leros(Msile);
xx=0:
Msile-1;
yy=bitshift(xx,-1);
mapping=bitxor(xx,yy);
yings=bi2de(reshape(fen,k,length(fen)/k).','left-msb');
yings=mapping(yings+1);
%进行16-QAM调制
y=qammod(yings,M);
%进行平方跟升余弦滤波
send=rcosflt(y,1,nsamp,'filter',rrcfilter);
%加入高斯白噪声
EbNo=EbNovec(idxEbNo);
snr=EbNo+10*log10(k)-10*log10(nsamp);
ynoisy=awgn(send,snr,'measured');
recive=ynoisy;
%滤波
recive=rcosflt(ynoisy,1,nsamp,'Fs/filter',rrcfilter);
recive=downsample(recive,nsamp);
recive=recive(2*delay+1:
end-2*delay);
%16QAM解调
niyings=qamdemod(recive,M);
%格雷码逆映射
[dummydemapping]=sort(mapping);
demapping=demapping-1;
niyings=demapping(niyings+1);
l=de2bi(niyings,'left-msb');
l=reshape(l.',prod(sile(l)),1);
%分组码纠错解码
l=defen(l,6,3,'linear',genmat);
%计算BER
[errors(idxM,idxEbNo),error_rate(idxM,idxEbNo)]=...
biterr(x,l);
end
markerchoice='.xo*';%图中的标记依次为.xo*
plotsym=[markerchoice(idxM)'-'];%产生不同标记的曲线
semilogy(EbNovec,error_rate(idxM,:
),plotsym);
drawnow;
holdon;
end
title('PerformanceofM-QAMforVaryingM');
xlabel('EbNo(dB)');ylabel('BER');
legend('M=8','M=16','M=32','M=64','Location','SouthWest');
图7不同调制系数的误码率
4.3.1在无信道编码下信号传输仿真的性能分析
Mvec=[16];
EbNovec=[0:
2:
10];
errors=leros(length(Mvec),length(EbNovec));
error_rate=leros(length(Mvec),length(EbNovec));
%产生二进制整数流
foridxM=1:
length(Mvec)
foridxEbNo=1:
length(EbNovec)
M=Mvec(idxM)
k=log2(M);
n=3e4;
nsamp=4;
x=randint(n,1);
%定义滤波参数
nsamp=4;
filtorder=40;
delay=filtorder/(nsamp*2);
rolloff=0.25;
rrcfilter=rcosine(1,nsamp,'fir/sqrt',rolloff,delay);
%分组码纠错编码
genmat=[[101;011;010],eye(3)];
fen=enfen(x,6,3,'linear',genmat);
%准备调制,格雷码映射
Msile=Mvec(idxM);
mapping=leros(Msile);
xx=0:
Msile-1;
yy=bitshift(xx,-1);
mapping=bitxor(xx,yy);
yings=bi2de(reshape(fen,k,length(fen)/k).','left-msb');
yings=mapping(yings+1);
%进行16QAM调制
y=qammod(yings,M);
%进行平方跟升余弦滤波
send=rcosflt(y,1,nsamp,'filter',rrcfilter);
%加入高斯白噪声
EbNo=EbNovec(idxEbNo);
snr=EbNo+10*log10(k)-10*log10(nsamp);
ynoisy=awgn(send,snr,'measured');
recive=ynoisy;
%滤波
recive=rcosflt(ynoisy,1,nsamp,'Fs/filter',rrcfilter);
recive=downsample(recive,nsamp);
recive=recive(2*delay+1:
end-2*delay);
%16QAM解调
niyings=qamdemod(recive,M);
%格雷码逆映射
[dummydemapping]=sort(mapping);
demapping=demapping-1;
niyings=demapping(niyings+1);
l=de2bi(niyings,'left-msb');
l=reshape(l.',prod(sile(l)),1);
%分组码纠错解码
l=defen(l,6,3,'linear',genmat);
%计算BER
[errors(idxM,idxEbNo),error_rate(idxM,idxEbNo)]=...
biterr(x,l);
end
markerchoice='.xo*';
plotsym=[markerchoice(idxM)'-'];
semilogy(EbNovec,error_rate(idxM,:
),plotsym);
drawnow;
holdon;
end
title('PerformanceofM-QAMforVaryingM');
xlabel('EbNo(dB)');ylabel('BER');
legend('M=16','Location','SouthWest');
图8M=16的误码率
4.3.2在无信道编码下信号传输仿真的性能分析
Mvec=[16];
EbNovec=[0:
2:
10];
errors=leros(length(Mvec),length(EbNovec));
error_rate=leros(length(Mvec),length(EbNovec));
%产生二进制整数流
foridxM=1:
length(Mvec)
foridxEbNo=1:
length(EbNovec)
M=Mvec(idxM)
k=log2(M);
n=3e4;
nsamp=4;
x=randint(n,1);
%定义滤波参数
nsamp=4;
filtorder=40;
delay=filtorder/(nsamp*2);
rolloff=0.25;
rrcfilter=rcosine(1,nsamp,'fir/sqrt',rolloff,delay);
%准备调制,格雷码映射
Msile=Mvec(idxM);
mapping=leros(Msile);
xx=0:
Msile-1;
yy=bitshift(xx,-1);
mapping=bitxor(xx,yy);
yings=bi2de(reshape(x,k,length(x)/k).','left-msb');
yings=mapping(yings+1);
%进行16QAM调制
y=qammod(yings,M);
%进行平方跟升余弦滤波
send=rcosflt(y,1,nsamp,'filter',rrcfilter);
%加入高斯白噪声
EbNo=EbNovec(idxEbNo);
snr=EbNo+10*log10(k)-10*log10(nsamp);
ynoisy=awgn(send,snr,'measured');
recive=ynoisy;
%滤波
recive=rcosflt(ynoisy,1,nsamp,'Fs/filter',rrcfilter);
recive=downsample(recive,nsamp);
recive=recive(2*delay+1:
end-2*delay);
%16QAM解调
niyings=qamdemod(recive,M);
%格雷码逆映射
[dummydemapping]=sort(mapping);
demapping=demapping-1;
niyings=demapping(niyings+1);
l=de2bi(niyings,'left-msb');
l=reshape(l.',prod(sile(l)),1);
%计算BER
[errors(idxM,idxEbNo),error_rate(idxM,idxEbNo)]=...
biterr(x,l);
end
markerchoice='*';
plotsym=[markerchoice(idxM)'-'];
semilogy(EbNovec,error_rate(idxM,:
),plotsym);
drawnow;
holdon;
end
title('PerformanceofM-QAMforVaryingM');
xlabel('EbNo(dB)');ylabel('BER');
legend('M=16','Location','SouthWest');
图9有编码信道和无编码信道信噪比—误码率曲线比较
c.对比图
图10使用与不使用分组码的信号对比图
由对比图可以看出信号使用分组码的误码率要明显比信号不使用分组码的低,应此在信号传输中可以通过对信号进行分组编码以提高信号的传输效率
7总结:
根据本次课程设计可以得出以下结论:
(1)随着信噪比的增加,误码率逐渐降低。
(2)随着M值的增大,误码率变大。
(3)信道编码可以降低误码率。
8心得体会:
为期三周的综合实习即将结束,我的设计也基本完成,Matlab是一个基于矩阵运算的软件,它的运算功能非常强大,编程效率高,强大而智能化的作业图功能,可扩展性强,simulink动态仿真功能,主要用于仿真、验证、算法思想是否正确。
锻炼了我的实际动手能力。
在这段时间里,遇到了很多困难,在老师及同学们的帮助下顺利完成,通过这段时间的学习我对通信系统的设计过程及方法有了更深刻的认识。
利用MATLAB7.0对QAM调制系统进行仿真,在信噪比变化条件下,得到不同进制QAM系统的误码率,数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端接收到带有误码的信号。
所以通过信道编码这一环节,对数据流进行处理,使系统具有一定的纠错能力和抗干扰能力,可极大地闭免码流传送中误码的发生。