资源描述
通信原理课程设计
26
2020年4月19日
文档仅供参考,不当之处,请联系改正。
通信原理课程设计
专 业
学 号
学生姓名
指导教师
完成日期 1 月 5 日
一、课程设计目的
在本课程设计中使用的软件工具是MATLAB。目的是希望在以下几方面有所收获:
1.会MATLAB软件的最基本运用。
MATLAB是一种很实用的数学软件,它易学易用。MATLAB对于许多的通信仿真类问题来说是比较合适的。
2.了解计算机仿真的基本原理及方法,知道怎样经过仿真的方法去研究通信问题。
3.加深对信号与系统和通信原理及其相关课程内容的理解。
二 软件实现特点
与硬件实验相比,软件实验具如下一些特点:
1.软件实验具有广泛的实用性和极好的灵活性。在硬件实验中改变系统参数可能意味着要重做硬件,而在软件实验中这只是该一两个数据,或者只是在屏幕上按几下鼠标。
2.软件实验更有助于我们较为全面地研究通信系统。有许多问题,经过硬件试验来研究可能非常困难,但在软件实验中却易于解决。
3.硬件实验的精确度取决于元器件及工艺水平,软件实现的精确度取决于CPU的运算速度或者说是程序的运算量。
4.软件实验开发周期短,成本低。
三 基本要求
1 掌握matlab的基本操作及了解基本的仿真方法。
2 按以下要求编制仿真程序并调试运行
(1) 基本信号的仿真
(2) 数字基带传输码型的仿真
(3) 调制解调系统设计及仿真
(4) 数字基带系统设计及仿真
四 课程设计内容
1、 编程实现基本信号的仿真
(1)产生并绘出以下信号
单位阶跃序列
k= -30:30;
uk=[zeros(1,30),ones(1,31)];
stem(k,uk)
图1 单位阶跃序列图
周期方波square()
t=-2*pi/100:pi/1024:2*pi/100;
y=square(2*pi*30*t,50);
plot(t,y);
ylim([-1.5 1.5])
grid
图2 周期方波图
sin2πf1t*sin2πf2t (信号频率自定,不得雷同)
f1=10;
f2=20;
t=-2*pi/100:pi/1024:2*pi/100;
y=sin(2*pi*f1.*t).*sin(2*pi*f2.*t);
plot(t,y);
grid
图3
(2)正弦信号及其频谱
%正弦信号及其频谱
f=100;
t=-2*pi/100:pi/1024:2*pi/100;
y=sin(f.*t);
subplot(2,1,1)
plot(t,y)
N=256;t=0:N-1;
y1=sin(f.*t);
k=0:N/2;w=2*pi/N*k;
X=fft(y1,N);
magX=abs(X(1:N/2+1));
subplot(2,1,2)
plot(w/pi,magX);
图4 正弦信号及其频谱图
(3)利用MATLAB/SIMULINK功能建立如下模型,并对信号频谱进行观察。一个频率为3Hz,幅值为3,另外一个频率为1Hz,幅值为1。
图5 模型图
图6 示波器波形图
2、编程实现数字基带信号的码型的仿真
(1) 试做单极性归零码、双极性非归零码、单极性非归零码、双极性归零码,占空比50%(选择其中2种)
单极性归零码(随机产生码型)
close all
clear all
global dt t df N
N=2^14; %采样点数
L=64; %每码元的采样点数
M=N/L; %码元数
Rb=2; %码速率为2Mb/s
Ts=1/Rb; %码元间隔
dt=Ts/L; %时域采样间隔
Rt=0.5; %占空比
T=N*dt; %截短时间
t=linspace(-T/2,T/2,N); %时域横坐标 分成N个点
for jj=1:100
a=round(rand(1,M)); %产生M个取值0,1等概的随机码
s=zeros(1,N); %产生一个N个元素的零序列
for ii=1:Rt*Ts/dt
s(ii+[0:M-1]*L)=a;%产生单极性归零码
end
end
plot(t,s,'r')
xlabel('t(ms)')
ylabel('s(t)(V)')
axis([-10,+10,1.1*min(s),1.1*max(s)])
grid on
图7 单极性归零码
双极性不归零码
%时间单位 us 频率单位 MHz 码元速率 Mb/s
close all %关闭所有的窗口
clear all %清除所有的变量
k=14;
N=2^k; %总采样点数
L=128; %每码元采样点数
M=N/L; %码元数
Rb=2; %码元速率
Ts=1/Rb; %码元间隔
dt=Ts/L; %时域分辨率dt(时域取样间隔)
df=1.0/(N*dt); %频域分辨率df,满足df*dt=1/N
T=N*dt; %计算时间宽度T
Bs=N*df/2; %系统带宽
t=linspace(-T/2,T/2,N); %产生时间取样点矩阵
f=linspace(-Bs,Bs,N); %产生频域取样点矩阵
for ii=1:20
n=1;%赋初值
while rem(n,2)~=0;%保证仿真时有偶数个1
nrz=round(rand(1,M));%随机产生单极性归零码
n=length(find(nrz==1));
end
po0=find(nrz==0);%找出nrz中0的位置
nrz(po0)=-1;%将0赋为-1
copy0=ones(1,L);%定义复制的次数L
temp0=nrz(copy0,:); %将nrz第一行复制L次,生成L*M的矩阵
dnrz=reshape(temp0,1,L*M);%将temp0重排成1*L*M的矩阵
end
%开窗口1
figure(1)
plot(t,dnrz)
title('双极性不零码')
axis([0,10,-1.5,1.5])%设置坐标范
图8 双极性不归零码
(2) 双相码、AMI码、HDB3码等的仿真(选其中2种)。
AMI码的仿真
xn=[0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0];% 输入单极性码
yn=xn;% 输出yn初始化
num=0;% 计数器初始化
for k=1:length(xn)
if xn(k)==1
num=num+1; % "1"计数器
if num/2 == fix(num/2) % 奇数个1时输出-1,进行极性交替
yn(k)=1;
else
yn(k)=-1;
end
end
yh=yn;
end % 以上部分完成AMI码编码
input=yh; % AMI码输入
decode=input; % 输出初始化
for k=1:length(yh)
if input(k)==0
decode(k)=0;
else
decode(k)=1;
end
end
decode=abs(decode); % 整流
subplot(3,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);
subplot(3,1,2);stairs([0:length(xn)-1],yh);axis([0 length(xn) -2 2]);
subplot(3,1,3);stairs([0:length(xn)-1],decode);axis([0 length(xn) -2 2])
图9 AMI码图
HDB3码的仿真
xn=[1 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0];% 输入单极性码
yw=xn;% 输出yn初始化
num=0;% 计数器初始化
for k=1:length(xn)
if xn(k)==1
num=num+1; % "1"计数器
if num/2 == fix(num/2) % 奇数个1时输出-1,进行极性交替
yw(k)=1;
else
yw(k)=-1;
end
end
end
num=0; % 连零计数器初始化
yz=yw; % 输出初始化
sign=0; % 极性标志初始化为0
V=zeros(1,length(yw));% V脉冲位置记录变量
B=zeros(1,length(yw));% B脉冲位置记录变量
for k=1:length(yw)
if yw(k)==0
num=num+1; % 连“0”个数计数
if num==4 % 如果4连“0”
num=0; % 计数器清零
yz(k)=1*yz(k-4);
V(k)=yz(k); % V脉冲位置记录
if yz(k)==sign % 如果当前V符号与前一个V符号的极性相同
yz(k)=-1*yz(k);
yz(k-3)=yz(k); % 添加B符号,与V符号同极性
B(k-3)=yz(k); % B脉冲位置记录
V(k)=yz(k); % V脉冲位置记录
yz(k+1:length(yw))=-1*yz(k+1:length(yw));
end
sign=yz(k); % 记录前一个V符号的极性
end
else
num=0; % 当前输入为“1”则连“0”计数器清零
end
end % 编码完成
re=[xn',yw',yz',V',B']; % 结果输出: xn AMI HDB3 V&B符号
input=yz; % HDB3码输入
decode1=input; % 输出初始化
sign=0; % 极性标志初始化
for k=1:length(yz)
if input(k) ~= 0
if sign==yz(k) % 如果当前码与前一个非零码的极性相同
decode1(k-3:k)=[0 0 0 0];% 则该码判为V码并将*00V清零
end
sign=input(k); % 极性标志
end
end
decode1=abs(decode1); % 整流
error=sum([xn'-decode1']); % 解码的正确性检验,作图
subplot(3,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);
subplot(3,1,2);stairs([0:length(xn)-1],yz);axis([0 length(xn) -2 2]);
subplot(3,1,3);stairs([0:length(xn)-1],decode1);axis([0 length(xn) -2 2]);
图10 HDB3码图
3、 调制解调系统设计及仿真
AM和SSB调制解调系统设计及仿真:
要求:
(1)根调制和解调的原理框图,利用matlab的simulink功能,建立通信系统模型,观察各点波形及其频谱或功率谱。
(2)模拟调制系统输入模拟信号至少包含两个频率(频率自定);其它参数自定,不可雷同。
(3)加上噪声与上面图形作对比。
(4)结合所的波形及频谱或功率谱密度图分析系统的工作原理及性能。
1、AM调制相干解调
图11 AM调制相干解调系统图
图12 调制解调波形图
2、滤波法产生SSB调制信号并相干解调
图13 SSB系统图
图14 调制解调图
4、数字基带系统设计与仿真(输入数据自定)
(1)用simulink对系统建模设计一个数字基带系统
(2)采用开根号升余弦滤波器。滚降系数自定。
(3)观察各点波形,并对发送信号和接收信号的功率谱进行估计。
(4)要求观察接收信号眼图,对比发送数据与恢复数据波形。
滚降系数α=0.5,数字基带系统如下:
图15 系统结构模型图
接收眼图波形与分析:
图16 眼图
从上图中能够看出,眼图的线迹比较细,比较清晰,而且“眼睛”很大,说明误码率比较低,码间串扰与噪声对系统传输可靠性影响不大。
发送信号与接收信号功率谱估计与分析:
图17 发送功率谱和接收功率谱图
从两图比较中能够看出,接收信号的功率谱与发送信号的功率谱基本完全一样,说明整个基带传输系统模型的设计是合理的,能满足要求,具有较好的抗码间串扰的能力。
曼彻斯特码编码前后波形如图18所示:
图18 曼彻斯特码编码前后波形图
发送数据波形与接收数据波形
图19 发送数据波形与接收数据波形图
经过滤波器、信道的各点时域波形
图20 经过滤波器、信道的各点时域波形
五、 实验总结
在这次课程设计中,从刚开始对系统的整体构成不是很熟悉,思维比较模糊,到后来和其它小组同学进行了交流,明白了整个系统的构成。知道了程序设计的步骤和流程。课程设计主要是我们理论知识的延伸,我们在设计中发现问题,而且找到解决问题的方案。在课程设计过程中还发现不做系统,许多细小的环节是注意不到的。而这诸多环节往往影响你整个系统的正常运转。这可真应验了“细节决定一切”这句话。这一切告诉我做任何事情必须从全局出发,而且要注意其中的任何一个细节。我们还能从设计中检验我们所学的理论知识,查漏补缺把这门课学的扎实。
六、参考文献
通信原理——基于Matlab的计算机仿真 郭文彬等编著 北京邮电出版社
Matlab/Simulink通信系统建模与仿真实例分析 邵玉斌 北京:清华大学出版社,
现代通信实验系统的计算机仿真 陈平等编著 国防工业出版社
Matlab电子仿真与应用 韩利竹等编著 国防工业出版社
Matlab及其在电子信息类课程中的应用 唐向宏等主编 电子工业出版社
《MATLAB仿真技术与实例应用教程》 张森主编 机械工业出版社 .1
《MATLAB仿真技术与应用》 张葛祥主编 清华大学出版社 .6
通信原理樊昌信,误成柯等编著 国防工业出版社
现代通信原理与技术 张辉等 西安电子工业出版社
展开阅读全文