📄 ddc_30m.m
字号:
%数字下变频全过程仿真程序 宽带
%fir1
%信号带宽为30MHz
%输入采样率为96MHz
%输出采样率为32MHz,抽取3
clear all;
close all;
fsamp=102.4e6;
Ts=1/fsamp;
fc=32.4e6;
band=30e6;
Tp=40e-6;
N=Tp*fsamp;
n=0:N-1;
u=band/Tp; %u为带宽除以时宽
t=-Tp/2:Tp/N:Tp/2-Tp/N;
f0=70e6;
xs=cos(2*pi*(f0*t+0.5*u*t.^2)); %信号表达式
S0=fft(xs,N);
S1=abs(S0);
S2=(S1); %信号频谱
ll=length(S2);
S2=awgn(S2,10);
f=0:fsamp/N:fsamp-fsamp/N;
figure(1);
plot(f,20*log10(S2/max(S2)));title('输入LPM(30M 40us)信号频谱');
xlabel('frequency (Hz)');
ylabel('Magnitude (dB)');
grid on
%----------generate NCO---------%
for t=1:N
t1=(t-1)*Ts;
ncoi_c(t)=cos(2*pi*fc*t1);
end
for t=1:N
t1=(t-1)*Ts;
ncoq_c(t)=sin(2*pi*fc*t1);
end
ncoi=awgn(ncoi_c,80);
ncoq=awgn(ncoq_c,80);
f=0:fsamp/N:fsamp-fsamp/N;
u1=abs(fft(ncoi));
u2=abs(fft(ncoq));
figure(2);plot(f,20*log10(u1/max(u1)));title('NCO(I 路)');
xlabel('frequency (Hz)');
ylabel('Magnitude (dB)');
grid on
figure(3);plot(f,20*log10(u2/max(u2)));title('NCO(Q 路)');
xlabel('frequency (Hz)');
ylabel('Magnitude (dB)');
grid on
for n=1:1:N
ysi(n)=xs(n)*ncoi(n);
ysq(n)=xs(n)*ncoq(n);
end
u1=abs(fft(ysi));
u2=abs(fft(ysq));
f=0:fsamp/N:fsamp-fsamp/N;
figure(4);plot(f,20*log10(u1/max(u1)));title('混频输出(I 路)');
xlabel('frequency (Hz)');
ylabel('Magnitude (dB)');
grid on
figure(5);plot(f,20*log10(u2/max(u2)));title('混频输出(Q 路)');
xlabel('frequency (Hz)');
ylabel('Magnitude (dB)');
grid on
% u=u1+u2;
u=abs(fft(ysi-j*ysq));
figure(6);plot(f,20*log10(u/max(u)));title('混频输出(I+JQ 路)');
xlabel('frequency (Hz)');
ylabel('Magnitude (dB)');
grid on
%设计fir1滤波器
fs=fsamp;
band=30e6; %信号带宽
gdd=7.5e6; %过渡带宽
wp=(band/2)*2*pi/fs;ws=(band/2+gdd)*2*pi/fs;
tr_width=gdd*2*pi/fs; %过渡带宽
rp=0.5; %通带波纹小于0.01dB
rs=90; %最小阻带衰减80dB
f=[band/2 band/2+gdd]; %理想低通滤波器的截止频率
a=[1 0]; %Desired amplitudes
dev=[(10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)];
[NN,fo,ao,w]=remezord(f,a,dev,fs); %NN为滤波器长度
NN=41;
fira=remez(NN,fo,ao,w);
figure(7);
freqz(fira,1,1024,fs);
title('抗混叠FIR滤波器');%[hf,f1]=freqz(fira,1,NN,fs);
% figure(7);
% f=f1;
% adg=1*20*log10(abs(hf));
% plot(f,adg);grid;title('FIR1 Magnitude Response(dB)');
% xlabel('frequency (Hz)');
% ylabel('Magnitude (dB)');
N_FIR1=NN
ysi1=conv(fira,ysi);
ysq1=conv(fira,ysq);
Nu=length(ysi1);
f=0:fs/Nu:fs-fs/Nu;
figure(8);
adg=abs(fft(ysi1));
plot(f,20*log10(adg/max(adg)));grid;title('FIR1 output Magnitude Response(dB) (I)');
xlabel('frequency (Hz)');
ylabel('Magnitude (dB)');
figure(9);
ysi_IQ1=ysi1-j*ysq1;
adg=abs(fft(ysi_IQ1));
plot(f,20*log10(adg/max(adg)));grid;title('FIR输出信号频谱(I+JQ)');
xlabel('frequency (Hz)');
ylabel('Magnitude (dB)');
ysi11(1:ceil(Nu/2))=ysi1(1:2:Nu);
ysq11(1:ceil(Nu/2))=ysq1(1:2:Nu);
figure(10);
Nu=length(ysi11);
adg=abs(fft(ysi11));
f=0:fs/(2*Nu):fs/2-fs/(2*Nu);
plot(f,20*log10(adg/max(adg)));grid;title('dec3 Magnitude Response(dB) (I)');
xlabel('frequency (Hz)');
ylabel('Magnitude (dB)');
ysout=ysi11-j*ysq11;
figure(12);
Nu=length(ysout);
adg=abs(fft(ysout));
f=0:fs/(2*Nu):fs/2-fs/(2*Nu);
plot(f,20*log10(adg/max(adg)));grid;title('DDC输出信号频谱(dB)(I+JQ)');
xlabel('frequency (Hz)');
ylabel('Magnitude (dB)');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -