1.掌握DSB调制解调原理;
2.掌握在matlab中实现DSB调制解调的方法;
3.掌握随机信号在DSB调制解调过程中的特性变化。
1.PC一台;
2.Matlab2016b;
3.双踪示波器;
4.XSRP软件无线电平台。
1.在matlab中模拟一个叠加了白噪声的信号进行DSB调制解调的过程;
2.对DSB调制解调过程中各个节点的信号的特性进行比较分析;
3.对比输入输出信号的特性有何变化;
4.将在matlab中产生的信号输出到DA,通过示波器实测波形(时域和频域);
5.将在matlab中产生的信号样点数据存储为mif文件,在Quartus II中将mif文件导入到ROM然后通过DA输出到示波器实测。
DSB调制原理我们已经在实验二中详细讲解过,下面介绍DSB的解调原理。解调是调制的逆过程,其作用是从接收的已调信号中恢复出原基带信号,DSB解调一般采用相干解调法,其实质与调制一样,均是频谱搬移的过程,调制是把基带信号的频谱搬移到载频的位置,而解调则是把已调信号的频谱搬移回原基带频谱的位置,因此可以用相乘器将已调信号与载波(与原载波需严格同步)相乘来实现DSB解调。
下图为DSB调制调框图:
其中调制信号为叠加白噪声的1KHz正弦信号,将其通过滤波器得到带限信号。图中解调器载波为与调制载波相同基波的方波。
1.Matlab仿真
1)在Matlab中新建脚本文件用于编写本实验代码;
clc
clear
close all;
%-------------------------设置信号参数------------------------
fs=30.72e3; % 采样频率
F=1000; % 频率
Fc=4000; % 载波频率
N=30720; % 采样个数,N变大,时间长度变长
dt=1/fs; % 时间间隔,fs变大,时间间隔变短,曲线变光滑
t=0:dt:(N-1)*dt; % 时间向量,fs变大,时间长度变短
%------------------------------------------------------------
%---------------------产生输入信号x--------------------------
% x(t)时域
n=wgn(1,N,0)/5; % 产生高斯白噪声
x=sin(2*pi*F*t)+n; % 获取x(t)的采样点
figure;
subplot(221)
plot(t,x);
%axis([2e-2 4e-2 -2 2]);
xlabel('时间(t)');
ylabel('幅值(V)');
title('x(t)时域');
%------------------------------------------------------------
%-------------------------x信号的分析------------------------
disp('x(t)的均值为');
En=mean(x); % 求x(t)均值
disp(En);
disp('x(t)的方差为');
Dn=var(x); % 求x(t)方差
disp(Dn);
freq=fft(x,N); % 做离散傅里叶
freq_d=abs(fftshift(freq));
w=(-N/2:1:N/2-1)*fs/N; % 双边
subplot(222);
plot(w,freq_d);
%axis([-1500 1500 0 30000]);
xlabel('频率(Hz)');
ylabel('幅值(V)');
title('x(t)幅频特性');
[c,lags]=xcorr(x,'unbiased'); % 求出自相关函数
subplot(224);
plot(lags/fs,c); % 在时域内画自相关函数
%axis([-0.01 0.01 -1 1]);
xlabel('T');
ylabel('Rn(T)');
title('x(t)的自相关函数');
% x(t)的功率谱密度
long=length(c);
Sn=fft(c,long);
labelx=(0:long-1)*2*pi;
plot_magn=10*log10(abs(Sn));
subplot(223)
plot(labelx,plot_magn); % 画功率谱密度
%axis([0 6.3e5 -50 50]);
xlabel('w');
ylabel('Sn(w)');
title('x(t)的功率谱密度');
%------------------------------------------------------------
%--------------------------带通滤波器------------------------
[bp,ap]=butter(5,[800*2/fs,2000*2/fs]);
[hp,wp]=freqz(bp,ap);
figure;
plot(wp/pi*fs/2,abs(hp));
grid;
%axis([4e2 3e3 0 1]);
title('带通滤波器');
xlabel('频率(Hz)'); ylabel('幅度');
%------------------------------------------------------------
%------------------------产生信号Aa--------------------------
Aa=filter(bp,ap,x);
figure;
subplot(221);
plot(t,Aa);
%axis([2e-2 4e-2 -2 2]);
title('Aa(t)时域');
%------------------------------------------------------------
%-----------------------Aa信号的分析-------------------------
disp('Aa(t)的均值为');
En=mean(Aa);
disp(En);%求Aa(t)均值
disp('Aa(t)的方差为');
Dn=var(Aa);
disp(Dn);%求Aa(t)方差
freq=fft(Aa,N);%做离散傅里叶
freq_d=abs(fftshift(freq));
w=(-N/2:1:N/2-1)*fs/N; %双边
subplot(222);
plot(w,freq_d);
%axis([-1500 1500 0 30000]);
xlabel('频率(Hz)');
ylabel('幅值(V)');
title('Aa(t)幅频特性');
[c,lags]=xcorr(Aa,'unbiased'); %求出自相关序列
subplot(224);
plot(lags/fs,c); %在时域内画自相关函数
%axis([-0.01 0.01 -1 1]);
xlabel('T');
ylabel('Rn(T)');
title('Aa(t)的自相关函数');
%x(t)的功率谱密度
long=length(c);
Sn=fft(c,long);
labelx=(0:long-1)*2*pi;
plot_magn=10*log10(abs(Sn));
subplot(223)
plot(labelx,plot_magn); %画功率谱密度
%axis([0 6.3e5 -100 50]);
xlabel('w');
ylabel('Sn(w)');
title('Aa(t)的功率谱密度');
%------------------------------------------------------------
%-------------------------产生信号Ab-------------------------
Ab=Aa.*sin(2*pi*Fc*t);
figure;
subplot(221);
plot(t,Ab);
%axis([3e-2 3.5e-2 -2 2]);
title('Ab(t)时域');
%------------------------------------------------------------
%-----------------------Ab信号的分析-------------------------
disp('Ab(t)的均值为');
En=mean(Ab);
disp(En);%求Ab(t)均值
disp('Ab(t)的方差为');
Dn=var(Ab);
disp(Dn);%求Ab(t)方差
freq=fft(Ab,N);%做离散傅里叶
freq_d=abs(fftshift(freq));
w=(-N/2:1:N/2-1)*fs/N; %双边
subplot(222);
plot(w,freq_d);
%axis([-6000 6000 0 1.5e4]);
xlabel('频率(Hz)');
ylabel('幅值(V)');
title('Ab(t)幅频特性');
[c,lags]=xcorr(Ab,'unbiased'); %求出自相关序列
subplot(224);
plot(lags/fs,c); %在时域内画自相关函数
%axis([-0.01 0.01 -1 1]);
xlabel('T');
ylabel('Rn(T)');
title('Ab(t)的自相关函数');
%Ab(t)的功率谱密度
long=length(c);
Sn=fft(c,long);
labelx=(0:long-1)*2*pi;
plot_magn=10*log10(abs(Sn));
subplot(223)
plot(labelx,plot_magn); %画功率谱密度
%axis([0 6.3e5 -80 40]);
xlabel('w');
ylabel('Sn(w)');
title('Ab(t)的功率谱密度');
%------------------------------------------------------------
%-----------------------产生信号Ac---------------------------
p=square(2*pi*Fc*t);%方波
Ac=Ab.*p;
figure;
subplot(221)
plot(t,Ac);
%axis([3e-2 3.5e-2 -2 2]);
title('Ac(t)时域');
%------------------------------------------------------------
%-----------------------Ac信号的分析-------------------------
disp('Ac(t)的均值为');
En=mean(Ac);
disp(En);%求Ac(t)均值
disp('Ac(t)的方差为');
Dn=var(Ac);
disp(Dn);%求Ac(t)方差
freq=fft(Ac,N);%做离散傅里叶
freq_d=abs(fftshift(freq));
w=(-N/2:1:N/2-1)*fs/N; %双边
subplot(222);
plot(w,freq_d);
%axis([-2500 2500 0 30000]);
xlabel('频率(Hz)');
ylabel('幅值(V)');
title('Ac(t)幅频特性');
[c,lags]=xcorr(Ac,'unbiased'); %求出自相关序列
subplot(224);
plot(lags/fs,c); %在时域内画自相关函数
%axis([-0.01 0.01 -1 1]);
xlabel('T');
ylabel('Rn(T)');
title('Ac(t)的自相关函数');
%Ac(t)的功率谱密度
long=length(c);
Sn=fft(c,long);
labelx=(0:long-1)*2*pi;
plot_magn=10*log10(abs(Sn));
subplot(223)
plot(labelx,plot_magn); %画功率谱密度
%axis([0 6.3e5 -80 40]);
xlabel('w');
ylabel('Sn(w)');
title('Ac(t)的功率谱密度');
%------------------------------------------------------------
%------------------------低通滤波器--------------------------
[bp,ap]=butter(4,F*2/fs);
[hp,wp]=freqz(bp,ap);
figure;
plot(wp/pi*fs/2,abs(hp));
grid;
%axis([0 2e3 0 1]);
title('低通滤波器');
xlabel('频率(Hz)'); ylabel('幅度');
%------------------------------------------------------------
%----------------------产生输出信号y-------------------------
y=filter(bp,ap,Ac);
figure;
subplot(221)
plot(t,y);
%axis([3e-2 3.5e-2 -2 2]);
title('y(t)时域');
%------------------------------------------------------------
%-----------------------y信号的分析--------------------------
disp('y(t)的均值为');
En=mean(y);
disp(En);%求y(t)均值
disp('y(t)的方差为');
Dn=var(y);
disp(Dn);%求y(t)方差
freq=fft(y,N);%做离散傅里叶
freq_d=abs(fftshift(freq));
w=(-N/2:1:N/2-1)*fs/N; %双边
subplot(222);
plot(w,freq_d);
%axis([-1500 1500 0 15000]);
xlabel('频率(Hz)');
ylabel('幅值(V)');
title('y(t)幅频特性');
[c,lags]=xcorr(y,'unbiased'); %求出自相关序列
subplot(224);
plot(lags/fs,c); %在时域内画自相关函数
%axis([-0.01 0.01 -1 1]);
xlabel('T');
ylabel('Rn(T)');
title('y(t)的自相关函数');
%x(t)的功率谱密度
long=length(c);
Sn=fft(c,long);
labelx=(0:long-1)*2*pi;
plot_magn=10*log10(abs(Sn));
subplot(223)
plot(labelx,plot_magn); %画功率谱密度
%axis([0 6.3e5 -120 40]);
xlabel('w');
ylabel('Sn(w)');
title('y(t)的功率谱密度');
%------------------------------------------------------------
%------------------------网络接口----------------------------
%CH1_data=x;
%CH2_data=y;
%gain_flag=1;
%divFreq=30720000/fs-1;
%dataNum=length(CH1_data);
%DA_OUT(CH1_data,CH2_data,divFreq,dataNum, gain_flag);
%------------------------------------------------------------
%--------------------------JTAG-----------------------------
CH1_data=x;
CH2_data=y;
gain_flag=1;
SaveData('.\*1.mif ', CH1_data,gain_flag);
SaveData('.\*2.mif ', CH2_data,gain_flag);
%------------------------------------------------------------
2)设置采样率为5MHz,采样点数为50K;
3)产生1KHz的正弦波信号,叠加一个白噪声,打印该波形并对其进行特性分析,产生4KHz正弦信号作为载波(均值、方差、频谱、功率谱、自相关函数);
4)将上步中产生的信号通过带通滤波器得到带限信号,其最大频率应小于载波频率,打印该带限信号并对其进行特性分析(均值、方差、频谱、功率谱、自相关函数);
5)用上步得到的带限信号进行DSB调制,得到DSB调制信号,打印其波形并分析特性(同上);
6)产生与载波同频同相的方波作为相干载波,将DSB调制信号与相干载波相乘,打印得到的输出波形并分析其特性(同上);
7)将上步的输出波形通过低通滤波器,滤波器截止频率设置为1KHz(1.3步中正弦信号频率),打印滤波器输出信号并分析其特性,将其与调制信号对比;
8)学生按实验编号或其他规则改变参数,改变调制信号频率,载波频率及信噪比大小,按以上步骤产生波形并分析不同参数下各节点信号特性。
2.软硬结合
输出到DA后在示波器实测波形。
信号通过JTAG方式下载到XSRP硬件平台
实验过程中学生至少需记录以下数据并进行分析(仿真波形用截图方式记录,实测波形用拍照方式记录):
1.Matlab
2.软硬结合
问:实际工程中如何产生与载波严格同步的相干载波?
答:同步原理。