网络知识 娱乐 2ASK和2FSK调制解调仿真

2ASK和2FSK调制解调仿真

实验  2ASK和2FSK调制解调仿真

一、实验目的

1.熟悉2ASK和2FSK调制解调原理。

2.掌握编写2ASK和2FSK调制解调程序的要点。

3.掌握使用Matlab调制解调仿真的要点。

二、实验内容

1.根据2ASK和2FSK调制解调原理,设计源程序代码。

2.通过Matlab软件仿真给定信号的调制波形。

3. 对比给定信号的理论调制波形和仿真解制波形。 

三、实验原理

   1.2ASK

   二进制振幅键控(2ASK)信号码元为:

                       S(t)=A(t)cos(w0t+θ)  0﹤t≤T

   式中w0=2πf0为载波的角频率;A(t)是随基带调制信号变化的时变振幅,即

                                     ╱ A   当发送“1”时

                          A(t)= 

                                    ╲ 0    当发送“0”时

在式中给出的基带信号码元A(t)的波形是矩形脉冲。

产生2ASK的调制方法,主要有两种。第一种方法采用相乘电路如图1,用基带信号A(t)和载波cosw0t相乘就得到已调信号输出。第二种方法是采用开关电路如图2,开关由输入基带信号A(t)控制,用这种方法可以得到同样的输出波形。

 

图1 相乘法原理图                                      图2  开关法原理图

2ASK信号有两种基本的解调方法:非相干解调(包络检波法)和相干解调(同步检测法),相应的接收系统如图 3和图4所示。

 

 

图3 包络检波法(非相干解调)

图4 相干解调原理图

抽样判决器的作用是:信号经过抽样判决器,即可确定接收码元是“1”还是“0”。假设抽样判决门限为b,当信号抽样值大于b时,判为“1”码;信号抽样值小于b时,判为“0”码。当本实验为简化设计电路,在调制的输出端没有加带通滤波器,并且假设信道时理想的,所以在解调部分也没有加带通滤波器。

2. 2FSK调制原理

       二进制频移键控(2FSK)信号码元的“1”和“0”分别用两个不同频率的正弦波形来传送,而其振幅和初始相位不变。故其表达式为;

式中,假设码元的初始相位分别为Φ1和Φ0;w1 =2πf1和w0 =2πf0为两个不同频率码元的角频率;A为一常数,表明码元的包络是矩形脉冲。

    2FSK信号的调制方法主要有两种。第一种是用二进制基带矩形脉冲信号去调制一个调频器,使其能够输出两个不同频率的码元。第二种方法是用一个受基带脉冲控制的开关电路去选择两个独立频率源的振荡作为输出。

.2FSK解调原理

2FSK信号的解调也分为相关和非相关解调两类。  相关接收根据已调信号由两个载波f1、f2调制而成,则先用两个分别对f1、f2带通的滤波器对已调信号进行滤波,然后再分别将滤波后的信号与相应的载波f1、f2相乘进行相干解调,再分别低通滤波、用抽样信号进行抽样判决器即可。

原理图如下:

图5 二进制移频键控相干解调原理方框图

非相关接收经过调制后的2FSK数字信号通过两个频率不同的带通滤波器f1、f2滤出不需要的信号,然后再将这两种经过滤波的信号分别通过包络检波器检波,最后将两种信号同时输入到抽样判决器同时外加抽样脉冲,最后解调出来的信号就是调制前的输入信号。其原理图如下图所示:

图6 二进制移频键控非相干解调原理方框图

四、程序设计

    1. 首先给定一组输入信号序列,如m=[1 1 1 0 0 0 1 0 1 1 0 1]。也可以利用rand随机产生一组元素为10的数字序列。

    2. 根据2ASK和2FSK调制原理,需要对输入信号序列中的每个元素进行判断,假设判断元素为“1”,则在一个周期内,2ASK图像中对应一个正弦波,2FSK图像中也对应一个正弦波;假设判断元素为“0”,则在一个周期内,2ASK图像中对应零输出,2FSK图像中对应两个正弦波;假设判断元素非上述两者,则在图中均无图像输出。

    3. 在Matlab当中进行操作时,首先要画出输入信号序列的图像,然后再画2ASK和2FSK的图像。在输入信号序列元素进行判断时,先要运用length函数得出序列的长度,然后运用循环语句和判断语句对序列每个元素逐一判断,对应元素画出相应图像。

    4. 根据2ASK和2FSK的相干解调法,画出解调信号的波形。

五、设计流程

1. 输入信号序列,并通过length函数得到序列长度。

2. 通过循环语句,对序列元素进行判断。符合判断条件的,对应2ASK和2FSK得出输出函数,画出图像。然后返回判断条件,进入下一元素和周期当中,重复上述判断步骤,画出图像。

3.根据相干解调法,经调制信号先过经过带通滤波器,再和余弦信号乘,再经过低通滤波器,最后进行抽样判决,画出解调后的波形,与原始信号波形进行比较。

六、源程序代码

2ASK代码

%2ASK的调制和调解

m = [ 1 1 1 0 0 0 1 0 1 1 0 1 ];

Lm =length(m);    %数字信号的带宽

F =200;      %正弦载波信号频率

f=800;     %载波幅度

A=1;

Q=f/F;   %频率比,即一个吗元宽度中的正弦周期个数,为适配下面滤波器参数选取,推荐将Q设为

if Q >= 3

M=500;     %一个正弦周期内的采样点数

t=(0:M)/M/f;   %一个正弦信号周期内的时间

carry1 = repmat(A*sin(2*pi*f*t),1,Q);      %一个码元宽度内的正弦载波信号

Lcarry1 = length(carry1);     %一个码元宽度内的信号长度

carry2 = kron (ones(size(m)),carry1);    %载波信号

ask = kron (m,carry1);    %调制后的信号

N = length(ask);   %长度

tau = (0:N-1)/(M-1)/f;   %时间

Tmin = min(tau);   %最小时刻

Tmax = max(tau);   %最大时刻

T =ones(size(carry1));    %一个数字信号'1'

dsig = kron(m,T);       %数字信号波形

figure

subplot(3,1,1);   %子图分割

plot(tau,dsig);    %画出数字信号的波形图

title('数字信号');

axis([Tmin Tmax -0.2 1.2])      %设置坐标范围

subplot(3,1,2);             %子图分割

plot (tau,carry2);           %画出载波图形

title('载波波形');

axis([Tmin Tmax -1.2*A 1.2*A])     %设置坐标范围

subplot(3,1,3);           %子图分割

plot (tau,ask);           %画出调制后的波形

title('经过2ASK调制后的波形');

grid on

axis([Tmin Tmax -1.2*A 1.2*A])     %设置坐标范围

sig_mul = ask.*carry2;          %已调制信号与载波信号相乘

figure

subplot(4,1,1);         %子图分割

plot(tau,sig_mul);       %画出信号相乘后的波形

title('信号相乘后的波形')

axis([Tmin Tmax -0.2 1.2])

[Ord,omega_c]=buttord(4*pi*f*0.6,4*pi*f*0.8,2,30,'s');%胡德 Butterworth 模拟低通原型滤波器的阶数及3dB截止频率

[num,den] = butter(Ord,omega_c,'s');%由原型滤波器向实际滤波器转换,获得滤波器分子,分母系数

h=tf(num,den);

x=lsim(h,sig_mul,tau);      %获得滤波器传递函数 % 滤波

subplot(4,1,2);        %子图分割

plot(tau,x);           %画出滤波后的滤形

title('滤波后的波形')

axis([Tmin Tmax -0.3 0.8]);     %设置坐标范围

th=0.25;     %抽样判决的阈值设置

t_judge=(0:Lm-1)*Lcarry1+Lcarry1/2;       %抽样判决点的选取

y=(x(t_judge))';       %抽样判决时刻的信号值

y_judge=1*(y>=th)+0*(y<=th);     %抽样判决信号值的 0 阶保持

y_value=kron(y_judge,ones(size(carry1)));    %抽样判决后的数字信号波形

n_tau=tau+0.5/F;     %抽样判决后的信号对应的时间

subplot(4,1,3);     %子图分割

plot(n_tau,y_value);    %画出抽样判决后的数字信号波形

title('抽样判决后的数字信号波形')

axis([min(n_tau) max(n_tau) -0.2 1.2])      %设置坐标范围

subplot(4,1,4);     %子图分割

plot(tau,dsig);        %画出原始信号波形与解调后的信号做对比

title('原始信号波形与2ASK解调后的信号作对比')

axis([Tmin Tmax -0.2 1.2])     %设置坐标范围

end

2FSK代码

fs = 2000;          %采样频率

dt = 1/fs; f1 = 5; f2=150;    %两个信号的频率

a = round(rand(1,10));        %产生原始数字随机信号

g1 = a ; g2 = ~a;            

g11 = (ones(1,2000))' * g1;   %将原始数字信号反转与g1反向

g1a = g11(:)';                %进行抽样

g21 = (ones(1,2000))' * g2;   %将数字序列变成列向量

g2a = g21(:)';

t = 0:dt: 10-dt;

t1 = length(t);

fsk1=g1a.*cos(2 * pi * f1.*t);     %得到频率f1的fsk1已调信号

fsk2=g2a.*cos(2 * pi * f2.*t);     %得到频率f2的fsk2已调信号

fsk = fsk1 + fsk2 ;                %已产生2FSK信号

figure(1)

no = 0.01 * randn(1,t1);          %产生的随机噪声

sn = fsk + no;

subplot(3,1,1);

plot(t,no)                          %产生的随机波形

title('噪声变形')

ylabel('幅度');subplot(3,1,2)

plot(t,fsk)                         %2FSK信号的波形

title('2fsk信号波形')

ylabel('幅度');subplot(3,1,3)

plot(t,sn)

title('经过信道后的2fsk 波形')

ylabel('幅度的大小');xlabel('t');

figure(2)    % fsk的解调

b1 = fir1(101, [3/ 1000 8/ 1000]);  %设置带通滤波器的参数

b2 = fir1(101, [145/ 1000 155/ 1000]) ;

H1 =filter(b1, 1,sn);       %经过带通滤波器后的信号

H2 = filter(b2, 1, sn);    

subplot(2, 1, 1); plot(t, H1)    %经过带通滤波器1的波形

title('经过带通滤波器f1后的波形');

ylabel('幅度');

subplot(2, 1, 2)                %经过带通滤波器2的波形

plot(t, H2)

title('经过带通滤波器2后的波形')

ylabel('幅度');xlabel('t');

sw1 = H1.* H1;  %经过相乘器1的信号

sw2 = H2.* H2;  %经过相乘器2的信号

figure(3)

subplot(2,1,1)

plot(t,sw1)

title('经过相乘器hl后的波形')

ylabel('幅度');

subplot(2,1,2)

plot(t,sw2)

title('经过相乘器h2后的波形')

ylabel('幅度');

xlabel('t');

bn =fir1(101,[1/ 1000 8/ 1000]);    %设置低通滤波器的参数

figure(4)

st1 =filter(bn,1,sw1);

st2 = filter( bn,1,sw2);

subplot(2,1,1)

plot(t,st1)                            %经过低通滤波器1的波形

title('经过低通滤波器sw1后的波形')

ylabel('幅度');

subplot(2,1,2)

plot(t,st2)                            %经过低通滤波器2的波形

title('经过低通滤波器sw2后的波形')

ylabel('幅度')

st=zeros(1,length(t));

for i =1: length(t)

if(st1(i) >=st2(i))

    st(i) =1;

else

    st(i) =0;

end

end

figure(5)

subplot(2,1, 1);

plot(t, st);                      %经过抽样判决器后解调出的波形

title('经过抽样判决器后解调出的波形')

ylabel('幅度');

subplot(2, 1, 2);

plot(t,g1a);                        %原始的数字序列波形

title('原始数字序列的波形')

ylabel('幅度');

xlabel('t');

  七、MATLAB绘制波形

      2ASK图形

 

 

       2FSK图形

 

 

 

 

 

  八、实验总结和心得

通过本次实验掌握了Matlab的基本功能和使用方法,对数字基带传输系统有了一定的了解,加深了对2ASK和2FSK的调制原理和解调原理的认识。理解了如何通过使用Matlab仿真,对各个调制和解调电路中各元件的特性有了全面的理解,在使用代码实现的过程了,遇到了很多困难,但是经过老师所给的源码进行调试,最终得出了实验结果,这个过程是很宝贵的,不仅学到了新的知识,还收获了很多解决问题的方法。加强了自己的动手能力,提高了自己的解决问题的能力。