(DUC/DDC)数字上混频/正交下混频原理及matlab仿真

数字上混频、下混频matlab仿真,读者有兴趣的话后面更新FPGA实现代码。

代码中lowpass低通滤波器用matlab内部APP Filter Designer生成,具体配置如下:

仿真运行结果:

 

 

 

 

 

 

 

 

仿真代码:

%%  数字上变频、数字正交下变频仿真
clc;
clear;
close all;

%%  参数设置
T = 20e-6;      %脉宽20us
B = 50e6;      %带宽50M
f0 = 120e6;    % 120M中频
Fs = 960e6;    %1G采样
N = T*Fs;
K = B/T;
t = linspace(-T/2, T/2, N);
F = ((1:N)-1)*Fs/N - Fs/2;

%% DUC 数字上变频
%LFM
sig = exp (-1j*pi*K*(t).^2);

figure;
plot(real(sig)) ;
hold on;
plot(imag(sig)) ;
title('原始信号时域(实部)');

%脉压
coe = exp(1j*pi*K*(t).^2);
len = length (coe);
coe = coe.*hamming(len).';
pc = conv(sig, coe);
figure;
plot(abs(pc));
title('原始信号脉压结果');

figure;
plot(20*log10(abs(pc)/max(abs(pc))));
title('原始信号脉压结果(dB)');

figure;
plot(F/1e6, abs(fftshift(fft(sig))));
xlabel('频率/Mz');
title('基带信号频谱');

%中频
mid_f =exp(1j*2*pi*f0*t);

figure;
plot (F/1e6, abs(fftshift(fft(mid_f))));
xlabel('频率/MHz');
title('中频信号频谱');

%上混频
f_up = sig.*mid_f;
figure;
plot(F/1e6,abs(fftshift(fft(f_up))));
xlabel('频率/MEz');
title('上混频信信号频谱');

%% DDC 数字下变频
%数字正交下混频
mid_f_in = cos(2*pi*f0*t + pi*K*(t).^2);

figure,
plot(F/1e6, abs(fftshift(fft(mid_f_in))));
xlabel('频率/MHz');
title('下混频输入信号频谱');

mif_f_sin = sin(2*pi*f0*t);
mif_f_cos = cos(2*pi*f0*t);

f_down_real = mid_f_in.*-mif_f_sin;
f_down_imag = mid_f_in.*mif_f_cos;
f_down = f_down_real + 1j*f_down_imag;

figure;
plot(F/1e6, abs(fftshift(fft(f_down))));
xlabel('频率/MHz');
title('数字正交下混频信号频谱');

% IQ两路分别进行低通滤波
f_down_new_real = zeros(1,50000);
f_down_new_real(1:length(f_down_real)) = f_down_real;
f_down_new_imag = zeros(1,50000);
f_down_new_imag(1:length(f_down_imag)) = f_down_imag;

%5OM低通滤波器
load lowpass
f_down_lowpass_real = filter(lowpass, 1, f_down_new_real);
f_down_lowpass_imag = filter(lowpass, 1, f_down_new_imag);
f_down_lowpass = f_down_lowpass_real + 1j*f_down_lowpass_imag;

figure;
plot(abs(fftshift(fft(f_down_lowpass))));
% xlabel('频率/MHz');
title('低通滤波信号频谱');

figure;
plot(imag(f_down_lowpass)) ;
hold on;
plot(real(f_down_lowpass));
title('低通滤波信号时域(实部)');

pc = conv(f_down_lowpass, coe);
figure;
plot(abs(pc));
title('低通滤波信号脉压结果');
figure;
plot (20*log10(abs(pc)/max(abs(pc))));
title('低通滤波信号脉压结果(dB)');

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值