2ASK系统的仿真Word文件下载.docx
《2ASK系统的仿真Word文件下载.docx》由会员分享,可在线阅读,更多相关《2ASK系统的仿真Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
基于MATLAB的2ASK系统的研究与仿真
1背景知识
1.1数字频带传输系统
在数字基带传输系统中,为了使数字基带信号能够在信道中传输,要求信道应具有低通形式的传输特性。
然而,在实际信道中,大多数信道具有带通传输特性,数字基带信号不能直接在这种带通传输特性的信道中传输。
必须用数字基带信号对载波进行调制,产生各种已调数字信号。
图1.1-1数字调制系统的基本结构[1]
Fig1.1-1Thebasicstructureofdigitalmodulationsystem
数字调制与模拟调制原理是相同的,但是数字信号有离散取值的特点。
基本的三种数字调制方式是:
振幅键控(ASK)、移频键控(FSK)和相移键控(PSK)。
1.2二进制振幅键控(2ASK)
1.2.1基本原理
振幅键控是利用载波的幅度变化来传递信息,而其频率和初相位保持不变。
在2ASK中,载波幅度只有两种变化,分别对应二进制信息“0”或“1”。
2ASK信号其表达式是:
(1.2.1-1)
其中:
(1.2.1-2)
式中:
Ts为码元持续时间;
g(t)为持续时间为Ts的基带脉冲波形。
通常假设g(t)是高度为1、宽度为Ts的矩形脉冲;
an是第n个符号的电平取值。
(1.2.1-3)
2ASK信号产生通常有两种:
模拟调制法(相乘器法)和键控法,相应的调制器如图1.2.1-1所示。
图1.2.1-1模拟相乘法(上)数字键控法(下)[1]
Fig1.2.1-1Analogmultiplication(on)digitalkeying(below)
2ASK信号与模拟调制中的AM信号类似。
所以,对2ASK信号也能够采用非相干解调(包络检波法)和相干解调(同步检测法),其相应原理方框图如图1.2.1-2所示。
图1.2.1-2非相干解调方式(a)相干解调方式(b)[1]
Fig1.2.1-2non-coherentdemodulation(a)coherentdemodulationmethod(b)
1.2.22ASK实际应用价值
2ASK是20世纪初最早运用于无线电报中的数字调制方式之一。
但是ASK传输技术受噪声影响很大。
噪声电压和信号一起改变了振幅。
在这种情况下,“0”可能变为“1”,“1”可能变为“0”。
由于ASK是受噪声影响很大的调制技术,现已很少应用,不过,2ASK常常作为研究其他数字调制的基础,因此了解它很必要。
1.3设计平台简介
1.3.1MATLAB简介
MATLAB是美国MathWorks公司生产的一个为科学和工程计算专门设计的交互式大型软件,是一个可以完成各种精确计算和数据处理的、可视化的、强大的计算工具。
它集图示和精确计算于一身,在应用数学、物理、化工、机电工程、医药、金融和其他需要进行复杂数值计算的领域得到广泛应用。
它不仅是一个在各类工程设计中便于使用的计算工具,而且也是一个在数学、数值分析和工程计算等课程教学中的优秀的教学工具,在世界各地的高等院校中十分流行,在各类工业应用中更有不俗的表现。
MATLAB可以在几乎所有的PC机和大型计算机上运行,适用于Windows、UNIX等各种系统平台
1.3.2Simulink简介
Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。
在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。
Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。
同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。
Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。
Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。
为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI),这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。
22ASK系统仿真设计
2.12ASK相干解调设计框图
2.2应用Simulink进行2ASK相干解调仿真框图
2.3选用模块以及参数设定[3]
1.伯努利二进制发生器模块ernoulliBinaryGenerator的参数设置为:
Probabilityofazero概率设为0.5,initialseed设为61,Sampletime抽样时间为1S。
2.正弦波SineWave的参数设置为:
频率设为60rad/sec。
3.乘法器Product模块的参数设置为:
输入端数量设为2。
4.高斯白噪声GaussianNoiseGenerator模块的设置为:
Sampletime抽样时间为0.01s。
5.Sum模块的参数设置为:
sampletime设为-1。
6.带通滤波器AnalogFilterDesign模块的参数设置为:
filterorder为8,Lowerpassbandedgefrequency为52,Upperpassbandedgefrequency为68。
7.相乘器Product模块的参数设置为:
输入端数量设为2
8.低通滤波器AnalogFilterDesign模块的参数设置为:
filterorder为8,passbandedgefrequency为8。
9.示波器Scope的参数设定为:
接口有6个,时间范围是自动调整。
10.抽样判决器其中constant的constantvalue参数设定为:
2.4MATLAB编程[3]
clear;
%清空Workspace
clc;
%清空CommandWindow
closeall;
%关闭所有窗口
%--------------------------------------
%信号以及仿真相关参数的设置
dt=0.001;
%时间采样间隔,即仿真步长
fc=10;
%载波中心频率
B_number=10;
%设码元数目为10个
T=5;
%信号时长
N=T/dt;
%采样点数,即仿真点数
B_Sample_Point=N/B_number;
%一个码元所对应的采样点数
B_Sample_array=zeros(1,N);
%建立一个码元采样的空数组
t=0:
dt:
(N-1)*dt;
%所有采样点数的时间组成的数组,即模型中函数的自变量
random_buffer=rand(1,B_number);
%生成10个随机数组
fori=1:
1:
B_number%将10个码元进行归一成二进制0、1
ifrandom_buffer(i)<
0.5
random_buffer(i)=0;
else
random_buffer(i)=1;
end
end
fori=1:
B_number%产生基带信号
forj=1:
B_Sample_Point
B_Sample_array((i-1)*B_Sample_Point+j)=random_buffer(i);
CarrySignal=cos(2*pi*fc*t);
%载波信号表达式
%2ASK调制信号的产生
Signal_2ASK=CarrySignal.*B_Sample_array;
%进行绘制调制曲线
figure('
toolbar'
'
none'
...%设置是否显示工具栏:
否
'
menu'
...%设置是否显示菜单栏:
name'
2ASK调制过程'
...%设置对话框名称
NumberTitle'
off'
...%设置是否显示图形窗口编号:
color'
w'
...%设置背景颜色
Resize'
on'
);
%设置是否可以改变窗口大小
subplot(6,1,1);
%图形分为6行1列,目前画第一个
plot(t,B_Sample_array,'
r'
linewidth'
3);
%画出二进制基带信号
holdon;
gridon;
%保持图像,使其能和下一个图像一起显示
xlabel('
时间/s'
ylabel('
幅值/v'
title('
二进制基带信号'
%简单的配置
axis([0,5,-0.2,1.2]);
%定义坐标区间
subplot(6,1,2);
%图形分为6行1列,目前画第二个
plot(t,CarrySignal,'
2);
%画出载波信号
载波信号'
axis([0,5,-1.2,1.2]);
subplot(6,1,3);
%图形分为6行1列,目前画第三个
plot(t,Signal_2ASK,'
1.5);
%画出调制信号
%保持图像
gridon;
%显示格点
调制信号'
%信道传输(加入噪声)
Gaussian_Noise=randn(1,N)/5;
%加上高斯白噪声
Signal_2ASK=Signal_2ASK+Gaussian_Noise;
subplot(6,1,4);
%图形分为6行1列,目前画第四个
plot(t,Gaussian_Noise,'
1);
高斯噪声'
subplot(6,1,5);
%图形分为6行1列,目前画第五个
加噪调制信号'
%带通滤波器
Fp=5;
Rp=3;
%53
Fs=15;
Rs=60;
%1560
Wp=2*pi*Fp/800;
%800
Ws=2*pi*Fs/800;
[n,Wp]=ellipord(Wp,Ws,Rp,Rs);
[b,a]=ellip(n,Rp,Rs,Wp);
BPF_ASK=filter(b,a,Signal_2ASK);
%带通滤波器输出
subplot(6,1,6);
%图形分为6行1列,目前画第六个
plot(t,BPF_ASK,'
带通滤波后的信号'
%相干解调
Coherent_ASK=BPF_ASK.*CarrySignal;
%低通滤波器
Fp=25;
Fs=45;
Rs=50;
Wp=2*pi*Fp/10000;
Ws=2*pi*Fs/10000;
Coherent_ASK=0-Coherent_ASK;
LPF_ASK=filter(b,a,Coherent_ASK);
%低通滤波器输出
%抽样判决
Judge_value=max(LPF_ASK)/2;
Coherent_ASK_Out=zeros(1,N);
B_number%抽样判决
ifLPF_ASK(i*B_Sample_Point-B_Sample_Point/2)>
Judge_value
Coherent_ASK_Out((i-1)*B_Sample_Point+1:
i*B_Sample_Point)=1;
%判为1
i*B_Sample_Point)=0;
%-------------------------------
%绘制相干解调的波形
figure
(2);
%打开第二个显示窗
2ASK相干解调过程'
...%设置对话框名称
subplot(4,1,1);
subplot(4,1,2);
plot(t,Coherent_ASK,'
与载波相乘'
subplot(4,1,3);
plot(t,LPF_ASK,'
低通滤波器滤波'
subplot(4,1,4);
plot(t,Coherent_ASK_Out,'
%画出相干解调实验
相干解调结果'
%非相干解调
Non_Coherent_ASK=abs(BPF_ASK);
LPF_ASK=filter(b,a,Non_Coherent_ASK);
Non_Coherent_ASK_Out=zeros(1,N);
Non_Coherent_ASK_Out((i-1)*B_Sample_Point+1:
%绘制非相干解调的波形
figure(4);
2ASK非相干解调过程'
plot(t,Non_Coherent_ASK,'
全波整流'
plot(t,Non_Coherent_ASK_Out,'
非相干解调结果'
%绘制分析的波形
figure(6);
2ASK分析波形'
subplot(3,1,1);
plot(t,B_Sa