实验报告
一、实验目的、要求
1.掌握掌握数字调制以及对应解调方法的原理。
2.掌握数字调制解调方法的计算机编程实现方法,即软件实现。 3.培养学生综合分析、解决问题的能力,加深对课堂内容的理解。 4.掌握数字ASK、FSK和PSK的方法原理以及对应的解调原理;编制调制解调程序;完成对一个二进制数字序列的调制、传输、滤波、解调过程的仿真;实验后撰写实验报告。 二、实验原理
1.FSK调制解调原理
频移键控是利用载波的频率变化来传递数字信息。在2FSK中,载波的频率随二进制基带信号在f1和f2两个频点间变化。故其表达式为:
e2FSK(t){Acos1(tncAos2(nt
))2FSK信号的产生方法主要有两种。一种可以采用模拟调频电路来实现;另一种可以采用键控的方法实现,即在二进制基带矩形脉冲序列的键控下通过开关电路对两个不同的频率源选通,使其在每个码元Ts期间输出f1或f2两个载波之一。
2FSK信号的常用解调方法是采用非相干解调(包络检波)和相干解调。其解调原理是将2FSK信号分解为上下两路2ASK信号分别解调,然后进行判决。 三、实验环境
PC机,Windows7,WPS,Matlab12以上版本软件。 四、实验内容
已知消息信号为一个长度为8的二进制序列;载波频率为fc800Hz,采样频率为4KHz。编程实现一种调制、传输、滤波和解调过程。
五、实验步骤
1 根据参数产生消息信号s和载波信号。调用函数randint生成随机序列。 2 编程实现调制过程。调用函数y=fskmod(s,M,FREQ_SEP,NSAMP)完成频率调制,y=pskmod(s,M) 完成相位调制,或者。调用函数modulate完成信号调制。 3 编程实现信号的传输过程。产生白噪声noise,并将其加到调制信号序列。或者调用函数awgn完成。
4 编程实现信号的解调。x=fskdemod(y,M, FREQ_SEP,NSAMP) 完成FSK信号的解调,x=pskdemod(y,M) 完成PSK调制信号的解调。或者调用demodulate完成解调。
5 计算误码率。调用函数symerr完成误码率计算。
五、实验过程、数据记录、分析及结论
1.先产生一组随机8位离散信号,但是对它实现800位扩展,如果是0,则接下来的100位都是0,如果是1,接下来的100位都是1,正好完成800位扩展;然后画出它的信号图和频谱图;再对这个离散信号利用demodulate进行fsk完成频率调制和psk完成相位调制;再分别画出调制后的信号频谱图。 离散信号和载波信号的时域和频谱图形如下:
2.画图fsk和psk调制后的信号和其频谱图形如下:
3.然后给信号加上白噪声,然后再分别对其进行fsk和psk解调,得到解调后的信号时域和频谱图,如下图:
六、讨论、思考题
1.总结数字调制解调的仿真方法。
2FSK:是利用载频频率的变化来传输数字信息的。数字载频信号有相位离散和相位连续两种情形。若两个振荡频率分别由不同的振荡器提供,它们之间的相位互不相关,这就叫相位离散的数字调频信号;若两个振荡频率由同一振荡信号源提供,是对其中一个载频进行分频,这样产生的两个载波就是相位连续的数字调频信号。
2PSK:在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号. 通常用已调信号载波的 0°和 180°分别表示二进制数字基带信号的 1 和 0. 二进制移相键控信号的时域表达式为
e2PSK(t)= g(t-nTs)]cosωct 2. 如何显示已调信号的完整波形?
假设X为信号,plot(X)显示信号的波形,如果X为复数形式,可用plot(abs(X))显示幅度波形,plot(angle(X))显示相位波形,也可用real和imag函数取实部和虚部。 附源程序:
clear all
s = randi([0,1],1,8); N = 8; fc = 800; Fs = 4000;
t = 1/Fs:1/Fs:0.2; T=0:1/Fs:1; g = -Fs/2:1:Fs/2; fk=sin(2*pi*fc*T); f = (-Fs/2):Fs/799:Fs/2; for i=1:N if s(i)==1
sn(i*100-99:i*100)=ones(1,100); else
sn(i*100-99:i*100)=zeros(1,100); end end
Sn = fft(sn); Fk=fft(fk);
%FSK调制
opt = (fc/Fs)*2*pi;
y = modulate(sn,fc,Fs,'fm',opt); Y = fft(y); %PSK调制 opt = pi;
y1 = modulate(sn,fc,Fs,'pm',opt); Y1 = fft(y1);
figure(1); subplot(221); plot(sn);
title('信号波形'); axis([0,800,0,1.5]); subplot(222); plot(T,fk);
title('载波信号时域'); subplot(223);
plot(f,abs(fftshift(Sn))); xlabel('f/Hz');ylabel('频谱幅度'); title('信号频谱'); subplot(224);
plot(g,abs(fftshift(Fk))); xlabel('f/Hz');ylabel('频谱幅度'); title('载波信号频谱'); figure(2) subplot(221); plot(y);
title('FSK调制波形'); axis([0,800,-1.5,1.5]);
subplot(222); plot(y1);
title('PSK调制波形'); axis([0,800,-1.5,1.5]); subplot(223);
plot(f,abs(fftshift(Y))); title('FSK调制信号频谱'); subplot(224);
plot(f,abs(fftshift(Y1))); title('PSK调制信号频谱'); %加入噪声
y = awgn(y,20); y1 = awgn(y1,20); %FSK解调
opt = (fc/Fs)*2*pi;
x = demod(y,fc,Fs,'fm',opt); X = fft(x); %PSK解调 opt = pi;
x1 = demod(y1,fc,Fs); X1 = fft(x1); figure(3); subplot(321); plot(sn);
title('信号波形'); axis([0,800,0,1.5]); subplot(322);
plot(f,abs(fftshift(Sn))); title('信号频谱'); subplot(323); plot(x);
title('经过FSK调制,解调后信号波形'); axis([0,800,-0.5,1.5]); subplot(324); plot(x1);
title('经过PSK调制,解调后信号波形'); axis([0,800,-1.5,1.5]); subplot(325);
plot(f,abs(fftshift(X)));
title('经过FSK调制,解调后信号频谱'); subplot(326);
plot(f,abs(fftshift(X1))); title('经过PSK调制,解调后信号频谱');