FFT(快速傅里叶变换)是离散傅里叶变换(DFT)的高效实现算法,它的核心作用是快速将信号从时域转换到频域,从而简化信号分析和处理的过程。
自然界的信号(如声音、图像、电磁波等)通常以时域形式存在(即随时间变化的波形),但很多特性(如频率成分、谐波分布)在频域中更易分析
FFT 能快速计算信号中各频率分量的幅值和相位。可以进行频率拆分与实时处理。FFT 是 “信号的透视镜”,让我们能 “看见” 信号的频率本质,为后续的降噪、识别、监测等应用提供基础。
在FPGA的IP核中可直接调用
简单来说,调制是 “把有用信息加载到载波上” 的过程,解调是 “从载波中提取出有用信息” 的过程,二者配合完成 “信息发送 — 传输 — 接收” 的闭环。
有用信息(如语音、文字、图像)通常是低频信号(称为 “基带信号”,如人声频率 300Hz~3kHz),直接传输存在两大问题:
因此,需要通过调制将基带信号 “搬移” 到高频载波上(类似 “把信件装到快递车上”),利用高频信号易发射、可分频复用的特点传输;接收端再通过解调“卸下” 载波上的信息(类似 “从快递车上取下信件”),还原出原始信号。
载波是一个高频正弦波(如广播的 100MHz、手机的 2GHz
其数学表达式为:c(t)=Acsin(2πfct+ϕc)
其中,Ac(振幅)、fc(频率)、ϕc(相位)是载波的三个关键参数。
调制的本质是用基带信号(信息)改变载波的某一个或多个参数,让载波 “携带” 信息。常见的调制方式有三种:
调幅(AM):用基带信号改变载波的振幅。
调频(FM):用基带信号改变载波的频率。
调相(PM):用基带信号改变载波的相位。
解调是调制的逆过程,核心是从被调制的载波中 “还原” 出原始基带信号。具体方法与调制方式对应:
FPGA(现场可编程门阵列)之所以具有并行处理能力,主要源于其硬件结构设计与工作原理。与 CPU(中央处理器)的顺序执行不同,FPGA 的并行性体现在 “多个功能单元可同时独立工作”,这一特性使其特别适合处理需要高吞吐量、低延迟的任务(如信号处理、加密、AI 推理等)。
硬件结构:多是LUT和CLB,天然支持并行计算
数据流驱动:非CPU按顺序进行,而是并行计算,适用流水线和并行阵列
可编程:可按需定制并行结构
滤波器的核心功能是改变信号中不同频率成分的幅值或相位。其数学本质是对输入信号 x(n) 进行卷积运算。经常使用FIR IP核。可使用MATLAB 或 Python 生成低通滤波器系数,然后复制到IP核中。
FIR(Finite Impulse Response,有限脉冲响应)滤波器是一种线性时不变(LTI)数字滤波器,其核心作用是对信号中的特定频率成分进行选择性处理,具体包括:
FIR 滤波器的突出优势是具有严格的线性相位特性(可设计为线性相位),即不同频率成分通过滤波器后相位延迟与频率成线性关系,不会导致信号失真(如音频信号不会因相位失真产生 “变调”),因此在对相位敏感的场景(如通信、音频处理、图像处理)中广泛应用。
核心是使信号频率与目标频率一致,或补偿因环境(温度、电压)、器件差异导致的频率漂移,确保系统时钟、数据速率的稳定性。
FPGA 的锁相环(PLL) 和混合模式时钟管理器(MMCM,如 Xilinx 器件) 是频率补偿的核心硬件资源,其原理是通过反馈环路动态调整输出频率,抵消偏差
方法 1:基于 PLL/MMCM 的频率合成与校准
方法 2:数字锁相环(DPLL)的数字域补偿
核心是消除信号间的相位差(如时钟与数据的相位偏移、多通道信号的相位不一致),确保信号在时间上对齐。
FPGA 通过延迟锁相环(DLL)、可编程延迟线(PDL)、硬件延迟单元及数字逻辑调整实现相位补偿,具体方法如下:
方法 1:基于 DLL 的时钟相位调整
方法 2:可编程延迟线(PDL)的精细相位补偿
方法 3:数字域相位补偿(算法级)
在 ADC、DAC 或其他电子设备中,带宽(Bandwidth) 是描述其能够 “准确处理信号频率范围” 的核心参数,通常以频率单位(如 Hz、MHz)表示。简单来说,它代表设备对高频信号的 “响应能力”—— 带宽不足,意味着无法准确捕捉或生成高频信号。
ADC 的带宽(通常称为 “模拟输入带宽”,Analog Input Bandwidth)指的是:当输入正弦波信号的频率升高时,ADC 输出的数字信号幅度衰减到 “低频信号幅度的 70.7%(即 - 3dB)时的频率值。
信号的频率越高,变化速度越快。ADC 采集信号时,需要通过内部的模拟电路(如采样保持电路、放大器)对信号进行处理,而这些电路的 “响应速度” 是有限的:
可以把 ADC 的带宽比作 “相机的快门速度”:
1MHz 带宽的 ADC 采集 10MHz 信号,就像用快门速度 1 秒的相机拍飞驰的汽车,只能得到模糊的拖影,无法还原真实形态。
DAC 的带宽(通常称为 “输出带宽”)含义类似,指其输出的模拟信号幅度衰减到 - 3dB 时的频率。若 DAC 带宽不足,生成高频信号时会出现同样的衰减和失真(比如本应输出 10MHz 正弦波,结果变成幅度很低的 “失真波形”)。
高速信号(如 1Gbps 以上的 LVDS、DDR 接口信号)在传输过程中出现 “过冲”“下冲” 或震荡波形,导致接收端采样错误(比如本应是高电平的信号,因过冲被误判为低电平)。
信号在 PCB 传输线中传播时,若传输线阻抗与源端 / 负载端阻抗不匹配(如传输线阻抗 50Ω,但 FPGA 引脚输出阻抗 30Ω),部分信号能量会被反射回源端,与原信号叠加形成干扰。
在高速数据传输(如 DDR4 接口,速率 3200Mbps)中,反射会导致信号边沿模糊,超过接收端的建立 / 保持时间要求,引发数据误读。
相邻信号线之间的信号 “互相干扰”:当一根线(“ aggressor”)切换电平(如从 0→1)时,相邻线(“ victim”)的信号会出现异常波动(如本应稳定的低电平突然跳变 100mV)。
信号线之间存在寄生电容和互感:当 “干扰线” 电流变化时,会通过电磁耦合在 “被干扰线” 上产生感应电压,即串扰。在高密度 FPGA 布线(如 BGA 封装的 FPGA,引脚间距仅 0.8mm)中尤为明显。
在低速信号中可能无明显影响,但在高速并行总线(如 8 位数据总线)中,串扰会导致相邻数据线的信号同时跳变,引发 “数据错误”(比如本应传输1010
,因串扰变成1110
)。
时钟信号的周期不是严格恒定的,相邻周期的时间差(“抖动”)超过设计阈值(如 100MHz 时钟,理想周期 10ns,实际周期在 9.9ns~10.1ns 之间波动)。
在高速采样场景(如 ADC 采样率 1GHz)中,时钟抖动会导致采样时刻偏移,降低采样精度。例如:若抖动为 10ps,对 1GHz 信号采样时,相位误差可达 3.6°,可能导致信号幅值测量偏差超过 1%。
FPGA 的核心电压(如 1.0V)或 IO 电压(如 3.3V)存在纹波(如 1.0V 电源上叠加 50mV 的高频波动),导致逻辑电平不稳定。
在高扇出逻辑(如一个时钟驱动 100 个寄存器)中,电源噪声可能导致逻辑电平超出阈值(如高电平最低要求 0.8V,因噪声降至 0.7V,被误判为低电平),引发逻辑错误。