实验报告 一、实验名称:基于MATLAB的2ASK、2FSK和2PSK的调制仿真 二、实验目的: (1)熟悉2ASK、2FSK和2PSK的调制原理。 (2)学会运用Matlab编写2ASK、2FSK和2PSK调制程序。 (3)会画出原信号和调制信号的波形图。 (4)掌握数字通信的2ASK、2FSK和2PSK的调制方式。 三、实验原理分析 1、二进制振幅键控(2ASK) 振幅键控是利用载波的幅度变化来传递数字信息,而其频率和初始相位保持不变。在2ASK中,载波的幅度只有两种变化状态,分别对应二进制信息“0”或“1”。二进制振幅键控的表达式为: s(t) = A(t)cos(w0+θ) 0<t≤T 式中,w0=2πf0为载波的角频率;A(t)是随基带调制信号变化的时变振幅,即 A(t)=
典型波形如图所示: 2ASK信号的产生方法通常有两种:相乘法和开关法,相应的调制器如图2。图2(a)就是一般的模拟幅度调制的方法,用乘法器实现;图2(b)是一种数字键控法,其中的开关电路受s(t)控制。 在接收端,2ASK有两种基本的解调方法:非相干解调(包络检波法)和相干解调(同步检测法),相应的接收系统方框图如图: 2、二进制频移键控(2FSK) 二进制频移键控信号码元的“1”和“0”分别用两个不同频率的正弦波形来传送,而其振幅和初始相位不变。故其表达式为: 图4 2FSK信号时间波形 由图可见,2FSK信号的波形(a)可以分解为波形(b)和波形(c),也就是说,一个2FSK信号可以看成是两个不同载频的2ASK信号的叠加。 2FSK信号的调制方法主要有两种。第一种是用二进制基带矩形脉冲信号去调制一个调频器,使其能够输出两个不同频率的码元。第二种方法是用一个受基带脉冲控制的开关电路去选择两个独立频率源的振荡作为输出。 2FSK信号的接收也分为相关和非相关接收两类。 相关接收根据已调信号由两个载波f1、f2调制而成,则先用两个分别对f1、f2带通的滤波器对已调信号进行滤波,然后再分别将滤波后的信号与相应的载波f1、f2相乘进行相干解调,再分别低通滤波、用抽样信号进行抽样判决器即可。原理图如下:
非相关接收经过调制后的2FSK数字信号通过两个频率不同的带通滤波器f1、f2滤出不需要的信号,然后再将这两种经过滤波的信号分别通过包络检波器检波,最后将两种信号同时输入到抽样判决器同时外加抽样脉冲,最后解调出来的信号就是调制前的输入信号。其原理图如下图所示:
3、二进制相移键控(2PSK)
其中, 表示第n个符号的绝对相位:
0 发送“0”时 发送“1”时 因此,式子可以改写为
概率为P 概率为1-P 典型波形如图所示。
由于表示信号的两种码元的波形相同,极性相反,故2PSK信号一般可以表述为一个双极性全占空矩形脉冲序列与一个正弦载波的相乘,即
其中 这里,g(t)是脉宽为Ts的单个矩形脉冲,而 的统计特性为 1 概率为P
-1 概率为1-P 2PSK信号的调制原理框图如图所示。2ASK信号的产生方法比较常识对s(t)的要求不同,在2ASK中s(t)是单极性的,而在2PSK中s(t)是双极性的基带信号。
2PSK信号的解调通常采用相干解调法,解调器原理框图如图所示。
四、仿真源程序和代码 clear all; close all; A=1; fc = 2; %载波频率2Hz; N_sample = 8; N = 500; %码元数 Ts = 1; %1 baud/s dt = Ts/fc/N_sample; %波形采样间隔 t = 0:dt:N*Ts-dt; T = dt*length(t); Lt = length(t); %产生二进制信源 d = sign(randn(1,N)); dd =sigexpand((d+1)/2,fc*N_sample); gt = ones(1,fc*N_sample); %NRZ波形 figure(1) subplot(221); %输入NRZ信号波形 d_NRZ = conv(dd,gt); plot(t,d_NRZ(1:length(t))); axis([0 100 0 1.2]); ylabel('输入信号'); subplot(222); %输入NRZ频谱 [f,d_NRZf]=T2F(t,d_NRZ(1:length(t)) ); plot(f,10*log10(abs(d_NRZf).^2/T)); axis([-2 2 -50 10]);ylabel('输入信号功率谱密度(dB/Hz)'); %2ASK信号 ht = A*cos(2*pi*fc*t); s_2ask = d_NRZ(1t).*ht; subplot(223); plot(t,s_2ask); axis([0 10 -1.2 1.2]); ylabel('2ASK'); [f,s_2askf]=T2F(t,s_2ask ); subplot(224) plot(f,10*log10(abs(s_2askf).^2/T)); axis([-fc-4 fc+4 -5010]);ylabel('2ASK功率谱密度(dB/Hz)'); figure(2) %2PSK信号 d_2psk = 2*d_NRZ-1; s_2psk = d_2psk(1t).*ht; subplot(221) plot(t,s_2psk); axis([0 10 -1.2 1.2]); ylabel('2PSK'); subplot(222); [f,s_2pskf] = T2F(t,s_2psk); plot(f,10*log10(abs(s_2pskf).^2/T) ); axis([-fc-4 fc+4 -5010]);ylabel('2PSK功率谱密度(dB/Hz)'); % 2FSK信号 sd_2fsk = 2*d_NRZ-1; s_2fsk = A*cos(2*pi*fc*t +2*pi*sd_2fsk(1:length(t)).*t ); subplot(223) plot(t,s_2fsk); axis([0 10 -1.2 1.2]);xlabel('t'); ylabel('2FSK'); subplot(224); [f,s_2fskf] = T2F(t,s_2fsk); plot(f,10*log10(abs(s_2fskf).^2/T)); axis([-fc-4 fc+4 -5010]);xlabel('f');ylabel('2FSK功率谱密度(dB/Hz)'); %两个自定义函数如下: function [out]=sigexpand(d,M) %将输入的序列扩展成间隔M-1个0的序列 N = length(d); out = zeros(M,N); out(1,:) = d; out = reshape(out,1,M*N); function [f,sf]= T2F(t,st) %计算一个信号的傅里叶变换 dt = t(2)-t(1); T=t(end); df = 1/T; N = length(st); f=-N/2*df:df:N/2*df-df; sf = fft(st); sf = T/N*fftshift(sf); 五、仿真结果
五、结果分析 (1)2ASK信号的功率谱由连续谱和离散谱两部分,连续谱取决于调制信号线性调制后的双边带谱,离散谱由载波分量决定; (2)2FSK信号的功率谱也由连续谱和离散谱组成; (3)2PSK信号只有连续谱,对比2ASK信号,2PSK信号实际上是相当于抑制载波的双边带信号。
|