软件无线电之数字下变频(Matlab实例)

软件无线电之数字下变频

1 原理

在通信系统中,为了易于信号发射以及实现信道复用,传输的信号发射频率一般很高。

在接收机中,为了降低信号的载波频率或是直接去除载波频率得到基带信号,通常将接收信号与本地振荡器产生的本振信号相乘,然后通过低通滤波器获得变频后的信号,这种技术手段则是下变频。

数字下变频(Digital Down Converter,DDC)指在接收机中对ADC采样信号混频后得到的中频信号比原始信号的频率低的一种混频方式,是软件无线电(Software Defined Radio,SDF)的核心技术之一。

数字下变频的基本流程如下图,大致可分为两个基本的模块——数控振荡器NCO(Nu-merical Control Oscillator)混频模块和抽取滤波模块。其中NCO模块产生正余弦波样本值,然后分别与输入数据相乘,完成混频。

在这里插入图片描述
混频后的信号通过低通滤波器和抽取器得到输出信号。


2 实例

阐述原理的时候讨论了复信号的情况,在这儿我们只看一个时域信号数字下变频的例子,复信号只是多一个通道。

假设载波信号频率30MHz

% HIGH FREQUENCY (CARRIER)
f_carrier=30
w_carrier=2*pi*f_carrier;

原始信号频率2MHz

% BASE FREQUENCY (RIDER)
f_rider=2
w_rider=2*pi*f_rider;

接收机采样率80MHz(>2倍载波频率=60MHz,满足类奈奎斯特采样定理)

% SAMPLE RATE
N=60;
fs=80;
f=0:fs/N:fs-fs/N
t=0:1/fs:(N-1)/fs;

所以载波信号是

s_carrier=cos(w_carrier.*t);

ADC采样得到的信号是

s_carrier=cos(w_carrier.*t);

采样信号和本振信号做混频

%% MUL
s_multied=s_input.*s_carrier;

混频前后的频谱分别是

fre_map_input=fft(s_carrier);
fre_map_carrier=fft(s_multied);
figure
subplot(3,1,1)
plot(f,abs(fre_map_input))
title("采样输出频谱")
subplot(3,1,2)
plot(f,abs(fre_map_carrier))
title("本振叉乘输出频谱")

在这里插入图片描述
对比两图可知,采样信号和本振信号混频后,原始信号分量在频谱两侧上显现出来。要得到原始信号,只需要再对混频输出做低通滤波

%% FIR
st_filted = lowpass(s_multied,f_rider*4,fs);
fre_map_filted=fft(st_filted);
subplot(3,1,3)
plot(f,abs(fre_map_filted))
title("低通滤波输出频谱")

在这里插入图片描述
结果符合预期。


完整的MATLAB程序如下

%% PARAMETERS

% HIGH FREQUENCY (CARRIER)
f_carrier=30
w_carrier=2*pi*f_carrier;
% BASE FREQUENCY (RIDER)
f_rider=2
w_rider=2*pi*f_rider;
% SAMPLE RATE
N=60;
fs=80;
f=0:fs/N:fs-fs/N
t=0:1/fs:(N-1)/fs;

%% SIGNAL
s_input=cos(w_carrier.*t+w_rider*t.^2);
s_carrier=cos(w_carrier.*t);

%% MUL
s_multied=s_input.*s_carrier;
fre_map_input=fft(s_carrier);
fre_map_carrier=fft(s_multied);
figure
subplot(3,1,1)
plot(f,abs(fre_map_input))
title("采样输出频谱")
subplot(3,1,2)
plot(f,abs(fre_map_carrier))
title("本振叉乘输出频谱")

%% FIR
st_filted = lowpass(s_multied,f_rider*4,fs);
fre_map_filted=fft(st_filted);
subplot(3,1,3)
plot(f,abs(fre_map_filted))
title("低通滤波输出频谱")


  • 3
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
数字下变频(DDS)是一种数字信号处理技术,能够高效地生成可控制频率和幅度的模拟信号。MATLAB是一种广泛使用的数学软件,也是数字信号处理的常用工具。因此,使用MATLAB进行DDS仿真是一个常见的实践。下面介绍一个数字下变频MATLAB仿真实例。 首先,我们需要使用MATLAB内置的DDS函数生成一个数字信号。这个函数包含了一组计算公式,可以根据输入的参数生成输出的正弦波,其中,频率和相位是可调的。在本例中,我们假设需要产生一个频率为5 kHz的正弦波,因此我们需要设置函数的输入参数为: fs = 100000; % 采样率 f0 = 5000; % 信号频率 phase = 0; % 信号相位 我们还需要设置一个时间向量来对数字信号进行采样: t = 0:1/fs:1; % 时间向量 接下来,我们可以使用DDS函数来生成数字信号并进行下变频处理。下变频是一种将信号从高频率降低到低频率的信号处理方法,常用于无线电通信中。在MATLAB中,可以使用FFT函数来进行下变频处理。 下面是完整的MATLAB代码: % DDS数字信号生成 fs = 100000; % 采样率 f0 = 5000; % 信号频率 phase = 0; % 信号相位 t = 0:1/fs:1; % 时间向量 N = length(t); % DDS数字信号生成 y = dds(f0, phase, fs, N); % 下变频处理 fIF = 1000; % 中频频率 yIF = y .* exp(-1j * 2 * pi * fIF .* t); yIF = fft(yIF); % 绘制子图 subplot(2,1,1); plot(t,real(y)); title('原始信号'); xlabel('时间(s)'); ylabel('幅值'); grid on; subplot(2,1,2); f = (-N/2:N/2-1)/N*fs; plot(f,abs(fftshift(yIF))); title('下变频信号'); xlabel('频率(Hz)'); ylabel('幅值'); grid on; 通过运行上述代码,我们可以绘制出原始信号和下变频信号的频率响应图。这里我们选择了中频频率为1 kHz进行下变频处理。从图中可以看出,下变频处理后的信号频率范围在-4 kHz和6 kHz之间,与我们设计的中频频率1 kHz相差不大。这说明MATLAB的DDS函数和FFT函数可以很好地完成数字下变频仿真任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值