Matlab编程与系统仿真基带传输课程设计资料.docx

上传人:b****6 文档编号:6175486 上传时间:2023-01-04 格式:DOCX 页数:17 大小:196.65KB
下载 相关 举报
Matlab编程与系统仿真基带传输课程设计资料.docx_第1页
第1页 / 共17页
Matlab编程与系统仿真基带传输课程设计资料.docx_第2页
第2页 / 共17页
Matlab编程与系统仿真基带传输课程设计资料.docx_第3页
第3页 / 共17页
Matlab编程与系统仿真基带传输课程设计资料.docx_第4页
第4页 / 共17页
Matlab编程与系统仿真基带传输课程设计资料.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Matlab编程与系统仿真基带传输课程设计资料.docx

《Matlab编程与系统仿真基带传输课程设计资料.docx》由会员分享,可在线阅读,更多相关《Matlab编程与系统仿真基带传输课程设计资料.docx(17页珍藏版)》请在冰豆网上搜索。

Matlab编程与系统仿真基带传输课程设计资料.docx

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月

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

当前位置:首页 > 表格模板 > 合同协议

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

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