Matlab编程与系统仿真基带传输课程设计.docx
- 文档编号:30499747
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:19
- 大小:196.55KB
Matlab编程与系统仿真基带传输课程设计.docx
《Matlab编程与系统仿真基带传输课程设计.docx》由会员分享,可在线阅读,更多相关《Matlab编程与系统仿真基带传输课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
Matlab编程与系统仿真基带传输课程设计
通信原理课程设计
设
计
报
告
课题名称:
专业班级:
姓名:
学号:
起止时间:
重庆交通大学
信息科学与工程学院
目录
一、课题内容………………………………………………2
二、设计目的………………………………………………2
三、设计要求………………………………………………2
四、实验条件………………………………………………2
五、系统设计………………………………………………2
1、通信系统的原理……………………………………2
2.所设计子系统的原理………………………………3
六、详细设计与编码………………………………………3
1.设计方案……………………………………………3
2.编程工具的选择……………………………………5
3.编码与测试………………………………………5
4.运行结果及分析…………………………………11
七、设计心得
八、参考文献…………………………….……………….13
一、课题内容
基带传输:
欲传送的0、1比特流+码型变换+基带成型网络(采用升余弦滚降系统或者部分响应系统)+信道+码型反变换+0、1比特流。
针对某种码型分析其误码率。
(噪声为加性高斯白噪声)
二、设计目的
1.综合应用《Matlab编程与系统仿真》、《信号与系统》、《现代通信原理》等多门课程知识,使学生对通信系统的整体概念更加熟悉、了解;
2.培养学生系统设计与系统开发的思想,增添足学生自主学习的兴趣、能力;
3.培养学生利用软件进行通信仿真的能力,提高学生对应用软件的熟练程度;
4.培养学生的独立思考,与同学、老师交流、探讨问题的的能力;
5.培养学生查找相关资料,并对其应用的能力。
三、设计要求
1.一人一组;
2.对通信系统有整体的较深入的理解, 深入理解自己仿真部分的原理的基础,画出对应的通信子系统的原理框图
3.提出仿真方案;
4.完成仿真软件的编制
5.仿真软件的演示
6.提交详细的设计报告
四、实验条件
计算机、Matlab软件
五、系统设计
1、通信系统的原理
基带传输系统的输入信号是由终端设备编码器产生的脉冲序列,为了使这种脉冲序列适合于信道的传输,一般要经过码型变换器,码型变换器把二进制脉冲序列变为双极性码(AMI码或HDB3码),有时还要进行波形变换,使信号在基带传输系统内减小码间干扰。
当信号经过信道时,由于信道特性不理想及噪声的干扰,使信号受到干扰而变形。
在接收端为了减小噪声的影响,首先使信号进入接收滤波器,然后再经过均衡器,校正由于信道特性(包括接收滤波器在内)不理想而产生的波形失真或码间串扰。
最后在取样定时脉冲到来时,进行判决以恢复基带数字码脉冲。
噪声n(t)
基带传输系统
2.所设计子系统的原理
HDB3编码规则:
1.先将消息代码变换成AMI码,若AMI码中连0的个数小于4,此时的AMI码就是HDB3码;
2.若AMI码中连0的个数大于3,则将每4个连0小段的第4个0变换成与前一个非0符号(+1或-1)同极性的符号,用表示(+1+,-1-);
3为了不破坏极性交替反转,当相邻V符号之间有偶数个非0符号时,再将该小段的第1个0变换成+B或-B,符号的极性与前一非零符号的相反,并让后面的非零符号从符号开始再交替变化。
HDB3反编码:
将编码赋值的B和V反转为零,根据编码规则,查找出连续两个0信码,如果相邻的两个信码的极性相同则四个全部转换成0;查找出连续三个0,其相邻的两个信码极性相同,则把0后的一个信码置0。
抽样判决:
在传输特性不理想及噪声背景下,在规定时刻对接受器的输出波形进行抽样判决,以恢复基带信号;
六、详细设计与编码
1.设计方案
(1)信源:
生成欲传送的01比特流,将个数N作为函数的输入;使用函数rand(1,129),使得大于0.5的数值为1,反之,小于则为0。
(2)码型编码:
函数functionhdb3_signal=hdb3(signal)
将生成的01比特流作为码型转换函数的输入,函数输出为码型转换后的HDB3基带传输码型;
函数输入信号signal为信源产生的01比特流,输出信号hdb3_signal为产生的不归零的HDB3码。
初始设定V=-1、B=-1,count为连0计数器,遇4连零则置为V:
(4)转换归零码:
函数RZ_signal=RZhdb3(signal,n):
函数输入信号signal,并将函数转换为双极性的,归零的HDB3码,每bit进行N=16点抽样,首先设定一维数组k=zeros(1,n/2)用来填充每个bit后面的归零部分。
(5)升余弦滚降系统:
将HDB3码作为滤波器的输入,函数输出系统输出信号;利用滤波器设计器FDATool设计Nyquist滤波器,其中参数设定:
比特传输速率Rb=16b/s,每bit抽样点数N=16,滚降因子设定为0.5.
(6)抽样判决:
函数functionsample_signal=sampling(signal,n)
将系统输出信号作为判决器函数的输入,进行抽样判决;选择每bit的中心抽样进行抽样,当信号抽样值>0.5,则信号恢复时函数为1,若信号抽样值<-0.5,则信号恢复时信号值设定为-1,其余恢复为0。
注:
一般判定值不设定为0,因为若有噪声等对信号进行干扰,导致系统输出信号不是理想的。
(7)码型译码:
函数functionhdb3=hdb3_signal1(fsignal)
将抽样判决后的信号作为函数的输入,进行码型反变换,函数输出为恢复了的欲传送的01比特流。
将编码赋值的B和V反转为零,根据编码规则,查找出连续两个0信码,如果相邻的两个信码的极性相同则四个全部转换成0;查找出连续三个0,其相邻的两个信码极性相同,则把0后的一个信码置0。
2.编程工具的选择为Matlab
其原因是该软件具有以下特性;
(1)友好的工作平台和编程环境
(2)简单易用的程序语言
(3)强大的科学计算机数据处理能力
(4)出色的图形处理功能
(5)应用广泛的模块集合工具箱
(6)实用的程序接口和发布平台
(7)应用软件开发(包括用户界面)
3.编码与测试
(1)主函数
clc
clearall
a=rand(1,129);%生成129位随机序列;
n=16;
A=2*round(a)-1;%生成01比特流;
signal1=[];
fori=1:
length(A)
if(A(i)==1)
signal1=[signal1,ones(1,16)];
else
signal1=[signal1,zeros(1,16)];
end
end
figure
subplot(3,1,1);
plot(signal1,'g');%画出01比特流;
title('初始源信号')
axis([0,2064,-0.5,1.5]);
%HDB3码型变换;
hdb3_signal=hdb3(A);
signal2=[];
fori=1:
length(hdb3_signal)
if(hdb3_signal(i)==1)
signal2=[signal2,ones(1,16)];
elseif(hdb3_signal(i)==0)
signal2=[signal2,zeros(1,16)];
else
signal2=[signal2,(-1)*ones(1,16)];
end
end
end
subplot(3,1,2)
plot(signal2)%画出转换后的HBD3双极性码;
title('HBD3双极性码')
axis([0,2064,-1.5,1.5]);
%将HDB3码转换成归零码
RZ_signal=RZhdb3(hdb3_signal,n);
subplot(3,1,3)
plot(RZ_signal)%画出HBD3归零码;
title('HDB3归零码')
axis([0,2064,-1.5,1.5]);
figure
subplot(3,1,1)
plot(signal1,'g')
title('初始源信号')
axis([0,2064,-0.5,1.5])
%对归零码添加加性高斯白噪声
noiseRZ_signal=noise(RZ_signal)
subplot(3,1,2)
plot(noiseRZ_signal)%画出加入噪声后信号;
title('加入噪声后信号')
axis([0,350,-2,2]);
%进入升余弦滚将系统
loadNyquist;
filter_signal=filter(Nyquist,1,noiseRZ_signal)
subplot(3,1,3)
plot(filter_signal)%画出通过升余弦滚降系统的信号;
title('通过升余弦滚降系统信号')
axis([0,2064,-1.5,1.5]);
%对信号进行抽样判决
sample_signal=sampling(filter_signal,n);
signal3=[];
fori=1:
length(sample_signal)
if(sample_signal(i)==1)
signal3=[signal3,ones(1,16)];
elseif(sample_signal(i)==0)
signal3=[signal3,zeros(1,16)];
else
signal3=[signal3,(-1)*ones(1,16)];
end
end
end
figure
subplot(2,1,1)
plot(signal1,'g')
title('初始源信号')
axis([0,2064,-0.5,1.5]);
subplot(2,1,2)
plot(signal3)%画出抽样判决后的信号;
title('抽样判决后信号')
axis([0,2064,-1.5,1.5]);
%恢复为原01比特流
re_signal=hdb3_signal1(sample_signal);
signal4=[];
fori=1:
length(A)
if(A(i)==1)
signal4=[signal4,ones(1,16)];
else
signal4=[signal4,zeros(1,16)];
end
end
figure
subplot(2,1,1)
plot(signal1,'g')
title('初始源信号')
axis([0,2064,-0.5,1.5])
subplot(2,1,2)
plot(signal4)
title('HBD3码反编码信号')
axis([0,2064,-0.5,1.5])
s=0;
fori=1:
129
s=s+abs(re_signal(i)-A(i));
end
WML=s/129
(2)码型编码—转换HDB3码
functionhdb3_signal=hdb3(signal)
B=1;
hdb3_signal=zeros(size(signal));%初始化输出序列;
count=0;%连0计数器;
k=1;
fori=1:
length(signal)
ifsignal(i)==1%遇1则极性反转;
hdb3_signal(i)=-B;%与之前的一个1的极性相反;
B=hdb3_signal(i);
count=0;%计数器置0;
else
count=count+1;
ifcount==4%判断满足条件的码型;
count=0;
ifk==1
hdb3_signal(i)=hdb3_signal(i-4);
k=0;
V=hdb3_signal(i);
else
hdb3_signal(i)=-V;%遇4连零则置为V
V=hdb3_signal(i);
ifhdb3_signal(i)*B==1%V与前一个非零符号极性相同
hdb3_signal(i-3)=hdb3_signal(i);%否则置为B
end
B=hdb3_signal(i);
end
end
end
end
end
(3)设置归零码
functionRZ_signal=RZhdb3(signal,n)
j=ones(1,n/2);%0数组;
k=zeros(1,n/2);%1数组;
RZ_signal=[];
fori=1:
length(signal)
ifsignal(i)==1
RZ_signal=[RZ_signal,j,k];%每个信码先填充n/2个原码型,再填充n/2个0码;
elseifsignal(i)==-1
RZ_signal=[RZ_signal,(-1)*j,k];
else
RZ_signal=[RZ_signal,k,k];
end
end
end
end
(4)噪声函数
functionzs=noise(signal)%信号加入噪声;
noise=sqrt(0.5)/sqrt
(2)*randn(1,length(signal));
%设置噪声功率W=0.5,根据函数写出噪声;
zs=signal+noise;
end
(4)基带成型网络——升余弦滚降系统
%进入升余弦滚将系统
loadNyquist;
filter_signal=filter(Nyquist,1,noiseRZ_signal)
subplot(3,1,3)
plot(filter_signal)%画出通过升余弦滚降系统的信号;
(6)抽样判决
functionsample_signal=sampling(signal,n)
sample_signal=[];%设定空数组用于存放生成的新信码;
fori=n/2:
n:
length(signal)%设置间隔来取出抽样值;
ifsignal(i)>0.5%当信号抽样值>0.5,则信号恢复时函数为1;
sample_signal=[sample_signal,1];
elseifsignal(i)<-0.5%当信号抽样值<-0.5,则信号恢复时函数为-1;
sample_signal=[sample_signal,-1];
else%其余恢复为0;
sample_signal=[sample_signal,0];
end
end
end
end
(7)码型译码—恢复为01比特流
functionhdb3=hdb3_signal1(fsignal)
AMItemp=[];%先将信号恢复为AMI码;
count=0;%计数器置零;
a=;
fori=1:
length(fsignal)
ifa==0
AMItemp=[AMItemp,0];%将下一码型置零;
a=1;
else
AMItemp=[AMItemp,fsignal(i)];
end
iffsignal(i)==0
count=count+1;
ifcount==2
iffsignal(i-2)==fsignal(i+1)%判断是否为B00V码型;
AMItemp(i-2)=0;%将B置零;
a=0;%将标志a置零,方便下一位译码;
count=0;
end
elseif(count==3)
iffsignal(i-3)==fsignal(i+1)%判断是否为000V码;
a=0;
count=0;
end
end
end
end
end
hdb3=abs(AMItemp)
end
5. 运行结果及分析
源信号,HDB3双极性码,HDB3归零码比较
加入噪声、通过升余弦滚降系统比较
对信号进行抽样判决
码型译码—码型恢复为01比特流
升余弦滤波器
七、设计心得
本次设计你查阅了哪些资料、对通信系统的理解、编程方面等方面的心得体会;本次设计存在哪些有待继续完善的地方,并给出思路。
一开始确定题目,就开始翻阅《通信原理》,在上课的时候对基带系统有过学习,但是没有现在的深刻。
首先将书上的内容重新温习了一遍,然后在网上查阅了相关的资料比如。
虽然之前在Matlab的课程上对软件有一定的了解,并且在结课时完成了通信系统的模拟,包括了2PSK调制与解调,编码与译码等,但是在开始着手这次课程设计的时候,还是有不清楚的地方,花了很长时间才解决掉。
分析了在此次课程设计出现的部分问题和解决方法如下:
1.对于程序整体的把握性太差,刚看到题目时并没有一个完整的思路,逻辑性非常弱,在认真查阅资料后经过一段较长的时间后才开始着手程序的编写,其中也是困难重重,显示了我对对通信工程的基带传输系统的知识掌握度不够,不能熟练的应用。
在软件方面对一些基本的函数并不能熟练的应用,出现了很多失误,导致程序一直出现问题。
2.设计滤波器时,发现了好多问题。
一开始连参数设定都不知道如何进行,此次需要升余弦滚降系统个,在同学的指导下初步完成了滤波器的调制。
3.在画图的时候要考虑观看画出来的图形是否明了,需要根据Matlab的特点,将比特流和转换后的码性都添加了一定的扩展,在后面的抽样判决的时候就要考虑好采样点如何取。
4.HDB3编码和译码时,都出现了不同状况下的错误。
在最开始设计编码的时候,函数在判断出连续4个0信码的时候直接将其设置成0001信码,并没有根据前一个非0码基尼系那个设置,经过不断调试,添加了一个K=1,当K=1则取前一个非0信码相同值,K置零,不再使用,问题就迎刃而解了。
译码的时候在网上查找资料,但是觉得函数不够清晰简洁。
自己着手开始慢慢攻克。
利用count计数器,根据编码规则,查找出连续两个0信码,如果相邻的两个信码的极性相同则四个全部转换成0;查找出连续三个0,其相邻的两个信码极性相同,则把0后的一个信码置0,将count置零,用于下一次寻找。
AMI译码完成取绝对值就转换成原始01比特流了。
5.抽样判决的时候开始设定的是传入函数的信号直接进行判决,并在每个判决出来的码型后面填充相应的1、-1或者0。
在调试的时候却是出现了大问题,后来发现是传入的信号本身就是为了输出图片结果进行填充的信号。
解决关键点在抽样判决的取值上,利用i=n/2:
n:
length(signal),设置抽样间隔,取每个填充码的中间码型值进行判决。
课程设计我再一次感受到了Matlab的强大功能,在面对一个复杂的问题时,分解成一部分一部分的子函数来解决,很方便纠错和修改。
此次也巩固加深了了我对于有关《通信原理》的知识,也让我对知识的应用有了更深一步的理解。
一开始就是丈二的和尚摸不着头脑,一点思路也没有。
在大概理清楚思路后进行程序编写却问题不断。
比如在设计信号的编码、译码时,并不知到从哪里下手。
接着慢慢在网上查资料,询问同学,了解了一个完整的基带传输系统的几个主要内容的实现,熟悉了过后才按题目要求完成此次课程设计。
设计过程中遇到了很多麻烦,状况不断,由于对理论知识的理解不够,很多都是一知半解,掌握的东西不够熟练,程序的使用起来就非常不熟练,导致程序设计和编写的进度缓慢,时间过长。
很多地方又可以是说现学现用的新内容,通过不断地努力和同学的帮助才基本完成本次程序的编写。
还遇到了一些问题,在最后将通过结果来检验自己的程序有没有问题时,其误码率很高,信号的波形图显示出来与源信号相差很大,并不是简介明了,很多地方都是错误的,在返回去修改函数和滤波器的的参数,才使波形图输出平滑的曲线,使其误码率降低。
如此也让我直观的了解认识到影响误码率的因素。
通过此次程序的编写,深刻巩固我的理论知识,开阔了我的知识范围,通过不断查资料、询问同学,使我对所学的知识也得到更好的消化。
懂得怎样使自己所学的学的理论知识同实验实践联系起来,相结合,提高了自己的动手能力,加强了逻辑性的思考和判断。
八、参考文献
1.樊昌信曹丽娜等.通信原理(第七版)[M].国防工业出版社,2014年8月
2.HollyMoore著,高会生,刘童娜译.MATLAB实用教程(第二版)[M].电子工业出版社.2010年1月
3.JohnG.proakis等著,刘树棠译.现代通信系统(Matlab版)(第1版)[M].西安交通大学出版社,
4.唐向宏等著.MATLAB及在电子信息类课程中的应用.电子工业出版社.2008年6月
5.BernardSklar著.徐平平等译.数字通信系-基础与应用(第二版)[M].电子工业出版社.2014年11月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 编程 系统 仿真 基带 传输 课程设计