ddy123456 发表于 2024-8-20 10:00:19

数字信号处理基础:混频的奥秘与实践

在数字信号处理的世界里,混频是一种将不同频率信号混合在一起,产生新频率信号的神奇技术。今天,我们就来揭开混频的神秘面纱,一探究竟。
一、混频原理
混频就是将两个不同频率的信号进行混合,得到新频率的信号,常用的方法是将两个信号相乘。



当我们有两个频率分别为f_1和f_2的信号时,通过混频操作,我们可以得到两个新的频率分量:和频率f_1 + f_2和差频率|f_1 - f_2|。

通常把其中的一个信号称为本振信号(local oscillator),另一个信号则称为混频器的输入信号。

在模拟电路中,混频通常用于将接收机接收到的高频信号转换成中频信号,以提高接收机的灵敏度。

而在数字电路中,混频可以通过简单的乘法操作实现,这在通信系统的调制、解调、数字上变频(DUC)和数字下变频(DDC)等过程中有着广泛的应用。
二、混频实现步骤
1、生成本振信号

在FPGA中,可以使用Quartus 的NCO(Numerically Controlled Oscillator)或Vivado的DDS(Direct Digital Synthesizer)IP核来生成具有特定频率的本振信号。

2、输入信号与本振信号相乘

将输入信号与本振信号通过乘法操作相乘,得到混频后的信号。

例如,将625kHz的本振信号与625kHz的输入信号做混频,混频后得到1.25MHz的和频信号与0Hz(直流),将直流滤除掉,即可得到1.25MHz的有效信号。

这里需要注意的是,乘法操作需要考虑数值表示法,确保使用有符号数或无符号数乘法,以避免错误的结果,一般都是用二进制补码。

3、滤波处理

混频后得到的信号可能包含不需要的频率分量,如直流分量。

通过设计适当的滤波器,可以滤除这些不需要的分量,得到所需的信号。

三、python实现
1、Python源码

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# 设置参数
fs = 1000# 采样频率
t = np.linspace(0, 1, fs, endpoint=False)# 时间向量

# 输入信号(消息信号)
f_input = 5# 输入信号的频率
input_signal = np.sin(2 * np.pi * f_input * t)

# 本地振荡器信号
f_lo = 50# 本地振荡器信号的频率
lo_signal = np.sin(2 * np.pi * f_lo * t)

# 混频
mixed_signal = input_signal * lo_signal

# 不加滤波的混频信号
mixed_signal_unfiltered = mixed_signal

# 低通滤波器设计
f_cutoff = 55# 截止频率,略高于本振频率
b, a = signal.butter(4, f_cutoff/(fs/2), btype='low')
mixed_signal_filtered = signal.lfilter(b, a, mixed_signal)

# 绘图
plt.figure(figsize=(12, 8))

# 绘制输入信号
plt.subplot(4, 1, 1)
plt.plot(t, input_signal)
plt.title('Input Signal (Message Signal)')
plt.xlabel('Time ')
plt.ylabel('Amplitude')

# 绘制本地振荡器信号
plt.subplot(4, 1, 2)
plt.plot(t, lo_signal)
plt.title('Local Oscillator Signal')
plt.xlabel('Time ')
plt.ylabel('Amplitude')

# 绘制混频后的信号(未滤波)
plt.subplot(4, 1, 3)
plt.plot(t, mixed_signal_unfiltered)
plt.title('Mixed Signal (Without Filtering)')
plt.xlabel('Time ')
plt.ylabel('Amplitude')

# 绘制混频后的信号(加滤波)
plt.subplot(4, 1, 4)
plt.plot(t, mixed_signal_filtered)
plt.title('Mixed Signal (With Filtering)')
plt.xlabel('Time ')
plt.ylabel('Amplitude')

plt.tight_layout()
plt.show()



2、实现效果



三、FPGA实现方法

在FPGA中实现混频通常涉及以下几个步骤:

1、使用NCO或DDS IP核生成本振信号。

2、将输入信号与本振信号进行乘法操作,生成混频信号。

3、通过FIFO或移位寄存器等方法缓存数据,并进行必要的滤波处理。根据需要,设计低通或高通滤波器来滤除混频后的不需要的频率分量。




页: [1]
查看完整版本: 数字信号处理基础:混频的奥秘与实践