一、课题内容
基带传输:
欲传送的01比特流+码型变换(HDB3码)+基带成型网络(采用升余弦滚降系统)+信道+码型反变换+01比特流。
二、设计目的
1.综合应用《Matlab编程与系统仿真》、《信号与系统》、《现代通信原理》等多门课程知识,使学生建立通信系统的整体概念;
2.培养学生系统设计与系统开发的思想;
3.培养学生利用软件进行通信仿真的能力;
4.培养学生独立动手完成课题设计项目的能力;
5.培养学生查找相关资料的能力。
三、设计要求
1.每人独立完成一个题目
2.对通信系统有整体的较深入的理解,深入理解自己仿真部分的原理的基础,画出对应的通信子系统的原理框图3.提出仿真方案;
4.完成仿真软件的编制
5.仿真软件的演示
6.提交详细的设计报告
四、实验条件
计算机、Matlab软件、相关资料
五、系统设计
数字基带传输系统
(1)概念:未经调制的数字信号所占据的频谱是从零频或者很低频率开始,称为数字基带信号;
不经载波调制而直接传输数字基带信号的系统,称为数字基带传输系统;
(2)数字基带传输的研究的意义:
第一:在利用对称电缆构成的近程数据通信系统中广泛采用这种传输方式;
第二:数字基带传输方式迅速发展,不仅应用于低速数据传输,而且还用于告诉数据传输;
第三:基带传输系统的许多问题也是带通传输系统必须考虑的问题;
第四:任何一个采用线性调制的带通传输系统,可以等效为一个基带传输系统来研究。
(3)基带传输码型:
在实际的基带传输系统中,对传输码型的要求:
①不含直流分量。且低频分量尽量少;
②应含有丰富的定时信息,以便于从接受码流中提取定时信号;
③功率谱的主瓣宽度窄,以节省传输频带;
④不受信息源统计特性的影响,即能适应于信息源的变化;
⑤具有内在的检错能力,即码型应具有一定的规律性,以便宏观监测;
⑥编译码简单,已降低通信延时和成本。
基地传输常用码型:AMI码(传号交替反转码)、HDB3码(三阶高密度双极性码)、双相码、差分双相码、密勒码、CMI码(传号反转码)、块编码等。
A. 其中本次设计采用的HDB3码,
a.HDB3码编码规则:
①1——交替变换为+1,-1
②0——连0小于等于3,则用0电平表示
连0大于3,则用特定码组替换B 0 0 V或 0 0 0 V
③任意两个V之间B的个数为奇数
b.示例:
b.HDB3码的特点:
①有检错能力
②解决了连“0”时位定时信息提取困难
③无直流分量
④B码和V码各自保持极性交替变化,以确保无直流分量
⑤可能存在误码扩散的问题
⑥(欧洲系列)PCM一、二、三次群接口码型
(4)数字基带信号传输码系统组成:
①信道形成器:其功能产生适合于信道传输的基带信号波形
②信道:是允许基带信号通过的媒介,通常为有线信道,如双绞线、同轴电缆等,其传输特性一般不满足无失真传输条件;
③接受滤波器:用来接收信号,尽可能滤除信道噪声和其他干扰,对信道特性进行均衡,使输出的基带波形有利于抽样判决;
④抽样判决器:则在传输特性不理想及噪声背景下,在规定时刻对接受器的输出波形进行抽样判决,以恢复基带信号;
⑤同步提取:用来抽样的位定时脉冲依靠同步提取电路从接受信号中提取,位定时的准确与否将直接影响判决效果
⑥基带传输总特性:H(w)= Gr(w)C(w)GR(w)
若假设信道传输函数C(w)=1,于是基带系统的传输特性变为
H(w)= Gr(w)GR(w)
(5)无码间串扰的传输特性的设计:
①理想低通特性
信号带宽最小的波形—
理想低通信号的主要缺点
a.工程上难以实现;
b.尾部衰减慢(冲激响应h(t)波形收敛速度较慢,拖尾以1/t速率衰减,当存在定时误差时会带来比较大的干扰)
②升余弦滚降特性
升余弦滚降信号的波形与频谱:
六、详细设计与编码
1. 设计方案 (可以画出编程的流程图,阐述设计思路等)
实验流程:
设计思路:
(1)信源:
生成欲传送的01比特流,将个数N作为函数的输入;使用函数rand(1,N),使得大于某个特定值的数值为1,反之,小于则为0。
<注>:因本实验采用HDB3码作为基带传输码型,所以使用0.75作为0和1的分界线,这样可以生成低密度的01比特流,使得在程序运行的时候,只通过连续的少量bit就可以HDB3的编码与译码的正确性。
(2)码型编码:
将生成的01比特流作为码型转换函数的输入,函数输出为码型转换后的HDB3基带传输码型;
函数function hdb3NRZ_signal=hdb3NRZ(signal) :
函数输入信号signal为信源产生的01比特流,输出信号hdb3NRZ_signal为产生的不归零的HDB3码。初始设定Last_V=-1、Last_B=-1,count为连0计数器,遇4连零则置为V,i=1,流程图如下1:
函数function hdb3_signal=hdb3(signal,n):
函数输入信号signal为函数hdb3NRZ产生的不归零的HDB3码,函数输出hdb3_signal为进行双极性的,归零的HDB3码,每bit进行N=16点抽样,首先设定一维数组a0=zeros(1,N/2),作用是用来填充每个bit抽样之后的归零部分。流程图如下2:
(3)升余弦滚降系统:
将HDB3码作为滤波器的输入,函数输出系统输出信号;利用滤波器设计器FDATool设计Nyquist滤波器,其中参数设定:比特传输速率Rb=16b/s,每bit抽样点数N=16,滚降因子Rolloff=0.5,其中抽样速率fs=256Hz, Nyquist带宽Band=8Hz;
(4)抽样判决:
将系统输出信号作为判决器函数的输入,进行抽样判决;选择每bit的中心抽样进行抽样,当信号抽样值>某个特定值,则信号恢复时函数为1,若信号抽样值<-某个特定值,则信号恢复时信号值设定为-1,其余恢复为0.
一般判定值不设定为0,因为若有噪声等对信号进行干扰,导致系统输出信号不是理想的。
(5)码型译码:
将抽样判决后的信号作为函数的输入,进行码型反变换,函数输出为恢复了的欲传送的01比特流。编写程序时,首先进行设定标记Last_V、Last_B(初始设定默认为-1,与码型编码相对应),设定输入信号为signal,码型译码后的信号ssignal,其中N为每bit抽样点数
其函数程序流程图如下:
2. 编程工具的选择本次仿真使用Matlab
MATLAB具有以下几个特点:
(1)友好的工作平台和编程环境
(2)简单易用的程序语言
(3)强大的科学计算机数据处理能力
(4)出色的图形处理功能
(5)应用广泛的模块集合工具箱
(6)实用的程序接口和发布平台
(7)应用软件开发(包括用户界面)
3. 编码与测试(写出源代码,分析核心代码的功能)
A,源代码
(1)主函数:
clc;
clear all;
N=100;%生成的bit个数
n=16; %每个bit的抽样点数
%生成欲传送的01比特流
signal=signalsource(N);
%码型变换——HDB3码
hdb3_signal=hdb3(signal,n);
%滤波——升余弦滚降系统
filtersignal=filter_Nyquist(hdb3_signal);
%抽样判决
samplesignal=sampling(filtersignal,n);
%码型反变换
ssignal=reverse_hdb3(samplesignal,n);
%画图函数
draw(N,n,signal,hdb3_signal,filtersignal,samplesignal,ssignal);
(2)信源:
function signal=signalsource(N)
%函数输出signal为欲传送的01比特流
%函数输入N为欲生成的01比特流个数
signal=rand(1,N)>0.75;%生成低密度的个数为N的01比特流
(3)码型编码—HDB3码
①function hdb3NRZ_signal=hdb3NRZ(signal)
%hdb3NRZ_signal=hdb3NRZ(signal)
%函数输入signal为单极性不归零的01码
%函数输出hdb3RZ_signal不归零的HDB3码
last_V=-1;
last_B=-1;
hdb3NRZ_signal=zeros(size(signal));%初始化输出序列
count=0;%连0计数器
for i=1:length(signal)
ifsignal(i)==1%遇1则极性反转
hdb3NRZ_signal(i)=-last_B;%与之前的一个1的极性相反
last_B=hdb3NRZ_signal(i);
count=0;
else
count=count+1;
if count==4
count=0;
hdb3half_signal(i)=-last_V;%遇4连零则置为V
last_V=hdb3NRZ_signal(i);
if hdb3NRZ_signal(i)*last_B==-1%V与前一个非零符号极性相同
hdb3NRZ_signal(i-3)=hdb3NRZ_signal(i);%否则置为B
end
last_B=hdb3NRZ_signal(i);
end
end
end
②function hdb3_signal=hdb3(signal,n)
%hdb3_signal=hdb3RZ(signal,n)
%函数输出hdb3_signal为码型转换后的传输码型HDB3码
%函数输入signal为欲传输的01比特流
%函数输入n为每bit的抽样点数
a=hdb3NRZ(signal);
a0=zeros(1,n/2);
hdb3_signal=[];
for j=1:length(signal);
a1=[];
forjj=1:n/2
a1=[a1,a(j)];
end
hdb3_signal=[hdb3_signal,a1,a0];
end
(4)基带成型网络——升余弦滚降系统
function filtersignal=filter_Nyquist(signal)
%函数输入signal为传输码型的HDB3码
%函数输出filtersignal是经过升余弦响应系统后的信号
load myNyquist; %Rolloff=0.5,fs=256,Band=8
den=1;
filtersignal=filter(mynum,den,signal);
(5)抽样判决——恢复为HDB3码
function samplesignal=sampling(signal,n)
%sampling为抽样判决函数
%函数输出samplesignal为抽样判决后恢复的信息
%函数输入signal为滤波器的输出波形
%函数输入n为每个bit的抽样点数
samplesignal=[];
for i=n/2:n:length(signal)
ifsignal(i)>0.5
for j=1:n
samplesignal=[samplesignal,1];
end
elseifsignal(i)<-0.5
for j=1:n
samplesignal=[samplesignal,-1];
end
else
for j=1:n
samplesignal=[samplesignal,0];
end
end
end
(6)码型译码——恢复为欲传输的01比特流
function signal=reverse_hdb3(hdb3_signal,n)
%函数reverse_hdb3()为码型反变换函数
%函数输出signal为码型反变换后的01比特流
%函数输入hdb3_signal为经过抽样之后形成的双极性的不归零的HDB3码
%函数输入n为每个bit的抽样点数
signal=[];
last_B=-1;
last_V=-1;
j=0;
for i=n/2:n:length(hdb3_signal)
j=j+1;
ifhdb3_signal(i)==1|hdb3_signal(i)==-1
signal(j)=1;
if last_B*hdb3_signal(i)==1
signal(j)=0;
if last_V*hdb3_signal(i)==-1
signal(j-3)=0;
end
end
last_B=hdb3_signal(i);
else
signal(j)=0;
end
end
(7)画图函数
functiondraw(N,n,signal,hdb3_signal,filtersignal,samplesignal,ssignal)
%函数输入n为每个bit的抽样点数
%函数输入signal为生成的01bit流
%函数输入hdb3_signal为码型转换后的HDB3码
%函数出入filtersignal为经过滤波器之后的信号
%函数输入samplesignal为抽样判决之后的信号
%函数输入ssginal为码型反变换还原的01bit流
Rb=16;%bit的传输率Rb=16__比特间隔Tb=1/Rb
Ts=1/(Rb*n);%抽样间隔
%画原信号
t1=0:1/Rb:(N-1)/Rb;
figure(1)
subplot(3,2,1)
stairs(t1,signal)
axis([0,12/Rb,-1.2,1.2])
grid on
set(gca,'XTick',[0:1/Rb:12/Rb])
title('欲传送01比特流(1)')
%画码型转换的HDB3码
t2=0:Ts:(N*n-1)*Ts;%T=N*Rb为生成的信号的长度
subplot(3,2,3)
stairs(t2,hdb3_signal)
grid on
axis([0,12/Rb,-1.2,1.2])
set(gca,'XTick',[0:1/Rb:12/Rb])
title('HDB3码型(2)')
%经升余弦滚降系统之后信号
subplot(3,2,5)
plot(t2,filtersignal)
axis([0,12/Rb,-1.2,1.2])
grid on
set(gca,'XTick',[0:1/Rb:12/Rb])
title('经升余弦滚降系统之后信号(3)')
subplot(3,2,2)
plot(t2,filtersignal)
axis([0,12/Rb,-1.2,1.2])
grid on
set(gca,'XTick',[0:1/Rb:12/Rb])
title('经升余弦滚降系统之后信号(3)')
%画抽样判决之后的信号
subplot(3,2,4)
stairs(t2,samplesignal)
grid on
axis([0,12/Rb,-1.2,1.2])
set(gca,'XTick',[0:1/Rb:12/Rb])
title('抽样判决之后的信号(4)')
%恢复为欲传送的01比特流
subplot(3,2,6)
stairs(t1,ssignal)
grid on
axis([0,12/Rb,-1.2,1.2])
set(gca,'XTick',[0:1/Rb:12/Rb])
title('欲传送的01比特流(5)')
B,编码与调试过程:(编程过程中遇到的问题、如何解决)
a,首先编写码型编码的代码的时候依照理解的HDB3码的编码规则进行编写代码,但只是完成了双极性的HDB3码,是却不知道怎样将HDB3码变成归零码。然后问一些没有进行此项设计项目的同学询问方法,知道可以利用bit抽样的时候将每bit中后1/2的抽样点设定为0,才成功调试了正确的双极性的,归零的HDB3码;
b,在进行基带成型网络的设计时,一开始没有理解升余弦滚降系统的含义,不知该从何处下手编写代码。在仔细的进行学习教材关于此部分的内容的理解,也在图书馆寻找了一些资料,才了解了基带成型网络所包含的内容。
可是仍不知道该怎样进行编写此滤波器的代码,便进行查找,在FDATool中找到Nyquist滤波器,于是才将设计进行下去。
c,在进行码型译码的时候,发现每当欲传送的01比特流有连续的8个0出现的时候,译出的码型总是出错,却部没有找出错误在什么地方,此时也不敢肯定自己的思想是否正确。于是,在课堂上便向老师讲述了一番我的思想,在老师肯定了设计思想之后,也将错误限定在其中的码型译码的函数范围内,于是在依照思想重新编写了代码之后,对比之下,发现时for和if语句的嵌套过多,导致混乱。
5. 运行结果及分析
a,欲传送的01比特流:
b,码型编码后的HDB 3码
c,升余弦滚降系统输出的信号
d,进行抽样判决之后,恢复的不归零的HDB3码
e,码型译码的输出,恢复为欲传送的01bit流
f,基带后存数系统合成图:
g,运行完程序之后的workspace
(N为欲传送的比特个数,signal为生成的欲传送的01比特流,n为每bit的抽样点数,hdb3_signal为码型编码之后的HDB3码,filtersignal为经过基带成型网络(升余弦滚降系统)之后的信号,samplesignal为进行抽样判决之后的信号,ssginal为码型译码恢复为欲传送的01bit流)
七、设计心得
实验开始的时候是在准备MATLAB课程考试那段期间,没仔细认真的看设计课题,当时在做MATLAB综合设计性实验的时候比较吃力,觉得使用MATLAB编写程序好难。总是要开好多M—file文件进行编写函数,最麻烦的是写完一个子函数在单独对其进行验证就存在一些函数输入的问题。当时间过了3天之后,才拿起设计要求认真看起来,想起老师在课堂上进行基带传输的讲解时还是很感兴趣的,于是选择的基带传输系统作为我的本次课程设计的设计项目。
对通信系统的理解:因为之前有过课程设计的经验,于是刚开始的时候没有急于编写代码,而是仔细认真研究书本上的知识,进行消化和理解。①定性了分析了整个通信系统;②了解了基带传输系统研究的意义;③在进行对基带传输码型的研究后,于是选择了其中一种应用普遍的的码型—HDB3码作为本次设计项目的传输码型,也进一步加深对HDB3码编码规则的掌握;④明白基带成型网络的含义,及其传输特性方程和波形图;⑤更进一步理解了奈奎斯特准则——无码间干扰传输。
课程设计的收获:本次课程设计结束了,受益良多。它带来不仅是知识上的收获,而且精神上的收获也是无尽的。①本次课程设计是我在大学寥寥可数的几次设计性实验之一,是和同学们一起奋斗的一场经历。看到同学们的努力,看到老师的辛勤,自己也都不敢懈怠了。②实验开始的那一刻,告诫自己没有失败,老师既然出了设计项目,既然已经选择的这个设计项目,就不许中途退出,这不是游戏,我想那一刻要的是勇气,是决心吧!③实验成功的那一刻,收获的是信心,是对自己本学期以来学习《现代通信原理》的一个肯定,是对以后的学习的一种督促,也是对自己的未来大学校门外的生活的一个鼓励。④还有就是在设计肯定会有不甚理解的地方,这就需要我们自己动手查找资料,增加的不仅是查找的资料上面的知识,更多的搜索的能力
编程体会:①在编写代码的时候,不急于刚开始就对着电脑编写程序,一定要理解和整理出来你所想要做什么;②从前都没有画流程图的习惯,不过此次试验之前都有仔细分析,画流程图,发现在代码编写的过程中这样不仅效率高,而且成功率还快;③还有就是因为在程序中过多的嵌套过多for循环语句和if选择语句,所以很容易不小心就会导致代码错误,所以程序中应尽量避免。④还有就是一定要仔细,仔细,再仔细。
本次设计的改进:①实验的码型译码部分,当时想的比较复杂,方式是编码的逆运算,知道刚才进行分析时,才恍然大悟,就是当signal(j)与Last_B为同极性的,此时直接确定其signal(j-3)为0,而不是源代码中的要确定此时的signal(j)与Last_V为不同极性是才返回改动signal(j-3)=0,这样可以减少if语句的嵌套;②基带成型网络采用的是FDATool中进行设计的Nyquist滤波器,可以考虑使用部分响应进行替换。③本次试验可以进行眼图的观察,也便能更深的理解基带传输系统.
八、参考文献
[1]樊昌信等. 通信原理(第6版)[M]. 国防工业出版社,2008.3
[2]John G. proakis等著, 刘树棠译.现代通信系统(Matlab版)(第1版)[M], 西安交通大学出版社,
[3]唐向宏等著.MATLAB及在电子信息类课程中的应用,电子工业出版社,2008年6月