1. FFT有什么用?
FFT(快速傅里叶变换)是离散傅里叶变换(DFT)的高效实现算法,它的核心作用是快速将信号从时域转换到频域,从而简化信号分析和处理的过程。
自然界的信号(如声音、图像、电磁波等)通常以时域形式存在(即随时间变化的波形),但很多特性(如频率成分、谐波分布)在频域中更易分析
FFT 能快速计算信号中各频率分量的幅值和相位。可以进行频率拆分与实时处理。FFT 是 “信号的透视镜”,让我们能 “看见” 信号的频率本质,为后续的降噪、识别、监测等应用提供基础。
在FPGA的IP核中可直接调用
2. 什么是信号调制与解调?
简单来说,调制是 “把有用信息加载到载波上” 的过程,解调是 “从载波中提取出有用信息” 的过程,二者配合完成 “信息发送 — 传输 — 接收” 的闭环。
2.1 为什么需要调制与解调?
有用信息(如语音、文字、图像)通常是低频信号(称为 “基带信号”,如人声频率 300Hz~3kHz),直接传输存在两大问题:
传输效率低:低频信号的波长很长(如 1kHz 信号波长约 300 公里),需要巨大的天线才能发射,不现实;
信道拥挤:若所有信号都以低频传输,不同信号会因频率重叠而互相干扰(如同一个频道的收音机杂音)。
因此,需要通过调制将基带信号 “搬移” 到高频载波上(类似 “把信件装到快递车上”),利用高频信号易发射、可分频复用的特点传输;接收端再通过解调“卸下” 载波上的信息(类似 “从快递车上取下信件”),还原出原始信号。
2.2 调制:如何 “加载” 信息到载波?
载波是一个高频正弦波(如广播的 100MHz、手机的 2GHz
其数学表达式为:c(t)=Acsin(2πfct+?c)
其中,Ac(振幅)、fc(频率)、?c(相位)是载波的三个关键参数。
调制的本质是用基带信号(信息)改变载波的某一个或多个参数,让载波 “携带” 信息。常见的调制方式有三种:
调幅(AM):用基带信号改变载波的振幅。
例如:广播中,人声(基带信号)越强,载波的振幅越大;
特点:实现简单,但抗干扰能力弱(振幅易受噪声影响)。
调频(FM):用基带信号改变载波的频率。
例如:手机信号中,基带信号的变化会让载波频率在中心频率附近微小波动(如 2.4GHz±10kHz);
特点:抗干扰能力强(频率变化不易被噪声淹没),音质更好,常用于调频广播、对讲机。
调相(PM):用基带信号改变载波的相位。
例如:数字通信中,“0” 对应载波相位 0°,“1” 对应相位 180°(称为 “相移键控 PSK”);
特点:适合高速数字传输,广泛用于 WiFi、卫星通信。
2.3 解调:如何 “提取” 信息?
解调是调制的逆过程,核心是从被调制的载波中 “还原” 出原始基带信号。具体方法与调制方式对应:
调幅信号解调:通过 “检波器” 提取载波振幅的变化,还原基带信号;
调频信号解调:通过 “鉴频器” 将载波的频率变化转换为电压变化,还原基带信号;
调相信号解调:通过 “相位比较器” 对比载波相位与参考相位的差异,还原数字信息(0 或 1)。
3. 为什么FPGA是并行的?
FPGA(现场可编程门阵列)之所以具有并行处理能力,主要源于其硬件结构设计与工作原理。与 CPU(中央处理器)的顺序执行不同,FPGA 的并行性体现在 “多个功能单元可同时独立工作”,这一特性使其特别适合处理需要高吞吐量、低延迟的任务(如信号处理、加密、AI 推理等)。
硬件结构:多是LUT和CLB,天然支持并行计算
数据流驱动:非CPU按顺序进行,而是并行计算,适用流水线和并行阵列
可编程:可按需定制并行结构
4. 滤波器的使用?
滤波器的核心功能是改变信号中不同频率成分的幅值或相位。其数学本质是对输入信号 x(n) 进行卷积运算。经常使用FIR IP核。可使用MATLAB 或 Python 生成低通滤波器系数,然后复制到IP核中。
FIR 滤波器的核心作用
FIR(Finite Impulse Response,有限脉冲响应)滤波器是一种线性时不变(LTI)数字滤波器,其核心作用是对信号中的特定频率成分进行选择性处理,具体包括:
保留有用频率成分:让符合需求的频率信号通过(如音频中的人声、通信中的载波信号)。
抑制干扰频率成分:衰减或滤除不需要的频率信号(如噪声、杂波、邻道干扰等)。
频率整形:调整信号的频率分布,例如改变信号的带宽、相位特性等。
FIR 滤波器的突出优势是具有严格的线性相位特性(可设计为线性相位),即不同频率成分通过滤波器后相位延迟与频率成线性关系,不会导致信号失真(如音频信号不会因相位失真产生 “变调”),因此在对相位敏感的场景(如通信、音频处理、图像处理)中广泛应用。
5. 在FPGA设计中,如何进行频率与相位补偿
频率补偿
核心是使信号频率与目标频率一致,或补偿因环境(温度、电压)、器件差异导致的频率漂移,确保系统时钟、数据速率的稳定性。
FPGA 的锁相环(PLL) 和混合模式时钟管理器(MMCM,如 Xilinx 器件) 是频率补偿的核心硬件资源,其原理是通过反馈环路动态调整输出频率,抵消偏差
方法 1:基于 PLL/MMCM 的频率合成与校准
原理:PLL 通过比较输入参考时钟(Ref Clk)与反馈时钟(FB Clk)的频率差,生成控制信号调整压控振荡器(VCO)的输出频率,实现频率锁定。
补偿过程:
应用:在通信系统中,用 PLL 将接收端时钟与发射端载波频率同步,补偿信道引入的频率偏移。
若输入时钟频率存在偏差(如外部晶振实际频率为 100MHz±50ppm),PLL 可通过分频 / 倍频系数调整,输出精确的目标频率(如 200MHz);
当环境变化导致 VCO 频率漂移时,PLL 的反馈环路实时检测偏差并修正,确保输出频率稳定。
方法 2:数字锁相环(DPLL)的数字域补偿
原理:纯数字逻辑实现的锁相环,通过数字鉴频器、数字滤波器和数控振荡器(DCO)实现频率调整,适合无法使用硬件 PLL 的场景(如高频信号的精细调整)。
补偿过程:
应用:在软件无线电(SDR)中,用 DPLL 补偿射频信号的多普勒频偏。
数字鉴频器计算输入信号与本地参考信号的频率差;
数字滤波器(如 PI 控制器)输出控制字,调整 DCO 的输出频率(通过分频 / 倍频系数动态修改),直至频率一致。
相位补偿
核心是消除信号间的相位差(如时钟与数据的相位偏移、多通道信号的相位不一致),确保信号在时间上对齐。
FPGA 通过延迟锁相环(DLL)、可编程延迟线(PDL)、硬件延迟单元及数字逻辑调整实现相位补偿,具体方法如下:
方法 1:基于 DLL 的时钟相位调整
原理:DLL(Delay-Locked Loop)通过延迟线阵列将输入时钟延迟多个相位,再通过反馈环路锁定输出时钟与输入时钟的相位,实现零相位差或固定相位差。
特点:相比 PLL,DLL 仅调整相位,不改变频率,适合时钟树的相位对齐。
应用:在 FPGA 内部时钟分配网络中,用 DLL 补偿不同逻辑模块的时钟延迟,确保全局时钟相位一致。
方法 2:可编程延迟线(PDL)的精细相位补偿
原理:FPGA 的专用延迟单元(如 Xilinx 的 IODELAY、Intel 的 ALTDLL)可通过配置实现皮秒(ps)级的延迟调整,直接补偿信号路径的相位差。
补偿过程:
应用:LVDS 接口接收端,数据信号经 PCB 传输后与时钟存在相位偏移,通过 IODELAY 调整数据采样时刻,确保正确采样。
先通过校准电路测量目标信号与参考信号的相位差(如高速数据信号与采样时钟的偏移);
配置 PDL 的延迟值,使信号延迟相应时间,抵消相位差。
方法 3:数字域相位补偿(算法级)
多通道 ADC 采集时,各通道因器件差异存在相位不一致,可在 FPGA 中对每个通道的采样数据添加数字延迟(如移位寄存器),实现相位对齐;
通信系统中,接收端通过Costas 环或相位跟踪环路,对解调后的信号进行相位估计和补偿,消除载波相位偏移。
当硬件延迟调整精度不足时,可在数字逻辑中通过算法补偿相位差,适用于信号处理场景(如通信、雷达)。
例子:
6. 信号的带宽
在 ADC、DAC 或其他电子设备中,带宽(Bandwidth) 是描述其能够 “准确处理信号频率范围” 的核心参数,通常以频率单位(如 Hz、MHz)表示。简单来说,它代表设备对高频信号的 “响应能力”—— 带宽不足,意味着无法准确捕捉或生成高频信号。
以 ADC 为例理解 “带宽”
ADC 的带宽(通常称为 “模拟输入带宽”,Analog Input Bandwidth)指的是:当输入正弦波信号的频率升高时,ADC 输出的数字信号幅度衰减到 “低频信号幅度的 70.7%(即 - 3dB)时的频率值。
若某 12 位 ADC 的带宽为 1MHz,说明:
对于频率≤1MHz 的正弦波(如 500kHz),ADC 采集后还原的信号幅度几乎无衰减(接近输入信号的真实幅度);
当输入信号频率超过 1MHz(如 10MHz)时,ADC 输出的信号幅度会严重衰减(可能只剩原来的 10% 甚至更低),且波形会失真(比如正弦波变成 “畸形” 的波浪形)。
为什么带宽不足会导致 10MHz 信号采集失真?
信号的频率越高,变化速度越快。ADC 采集信号时,需要通过内部的模拟电路(如采样保持电路、放大器)对信号进行处理,而这些电路的 “响应速度” 是有限的:
对于 10MHz 的正弦波,其周期仅 0.1μs(100ns),信号在极短时间内完成正负半周的快速切换;
若 ADC 带宽仅 1MHz,其内部电路无法跟上 10MHz 信号的变化速度,相当于对高频信号 “反应迟钝”,采集到的信号会丢失大量高频分量,导致幅度衰减、波形畸变(比如原本平滑的正弦波变得 “扁平” 或 “锯齿化”)。
类比理解
可以把 ADC 的带宽比作 “相机的快门速度”:
带宽高 → 快门快,能清晰抓拍高速移动的物体(高频信号);
带宽低 → 快门慢,拍高速移动的物体时会模糊(高频信号失真)。
1MHz 带宽的 ADC 采集 10MHz 信号,就像用快门速度 1 秒的相机拍飞驰的汽车,只能得到模糊的拖影,无法还原真实形态。
延伸:DAC 的带宽
DAC 的带宽(通常称为 “输出带宽”)含义类似,指其输出的模拟信号幅度衰减到 - 3dB 时的频率。若 DAC 带宽不足,生成高频信号时会出现同样的衰减和失真(比如本应输出 10MHz 正弦波,结果变成幅度很低的 “失真波形”)。
7. 信号反射
现象
高速信号(如 1Gbps 以上的 LVDS、DDR 接口信号)在传输过程中出现 “过冲”“下冲” 或震荡波形,导致接收端采样错误(比如本应是高电平的信号,因过冲被误判为低电平)。
原因
信号在 PCB 传输线中传播时,若传输线阻抗与源端 / 负载端阻抗不匹配(如传输线阻抗 50Ω,但 FPGA 引脚输出阻抗 30Ω),部分信号能量会被反射回源端,与原信号叠加形成干扰。
影响
在高速数据传输(如 DDR4 接口,速率 3200Mbps)中,反射会导致信号边沿模糊,超过接收端的建立 / 保持时间要求,引发数据误读。
FPGA 中解决示例
端接匹配:在 FPGA 的高速差分接口(如 GTX)中,通过 IP 核配置内置的片上端接电阻(ODT,On-Die Termination),将负载端阻抗调整为与传输线一致(如 50Ω),吸收反射能量。
布线优化:PCB 设计时,确保 FPGA 到外部芯片(如 DDR 内存)的传输线阻抗连续,避免直角转弯、线宽突变等导致的阻抗突变。
8. 信号串扰
现象
相邻信号线之间的信号 “互相干扰”:当一根线(“ aggressor”)切换电平(如从 0→1)时,相邻线(“ victim”)的信号会出现异常波动(如本应稳定的低电平突然跳变 100mV)。
原因
信号线之间存在寄生电容和互感:当 “干扰线” 电流变化时,会通过电磁耦合在 “被干扰线” 上产生感应电压,即串扰。在高密度 FPGA 布线(如 BGA 封装的 FPGA,引脚间距仅 0.8mm)中尤为明显。
影响
在低速信号中可能无明显影响,但在高速并行总线(如 8 位数据总线)中,串扰会导致相邻数据线的信号同时跳变,引发 “数据错误”(比如本应传输1010,因串扰变成1110)。
FPGA 中解决示例
布线隔离:在 FPGA 的布局布线工具(如 Vivado)中,对高速信号线(如 SPI、I2C)设置 “禁止布线区域”,要求相邻信号线间距≥3 倍线宽(如线宽 0.2mm,间距≥0.6mm),减少耦合,扩大时钟网络布线间距。
差分信号:将关键信号(如时钟、高速数据)设计为差分对(如 LVDS),利用 “差分对的两个信号反相” 特性,抵消外部串扰(干扰对两根线的影响相同,差分后被消除)。
9. 时钟抖动
现象
时钟信号的周期不是严格恒定的,相邻周期的时间差(“抖动”)超过设计阈值(如 100MHz 时钟,理想周期 10ns,实际周期在 9.9ns~10.1ns 之间波动)。
原因
内部原因:FPGA 的 PLL/VCO 本身存在噪声(如电源纹波导致 VCO 频率波动);
外部原因:输入参考时钟的抖动(如晶振噪声)、电磁干扰(EMI)。
影响
在高速采样场景(如 ADC 采样率 1GHz)中,时钟抖动会导致采样时刻偏移,降低采样精度。例如:若抖动为 10ps,对 1GHz 信号采样时,相位误差可达 3.6°,可能导致信号幅值测量偏差超过 1%。
FPGA 中解决示例
低抖动 PLL 配置:使用 FPGA 的 “低噪声模式” PLL(如 Xilinx 7 系列的 MMCM,开启 “Jitter Optimization”),通过优化 VCO 供电、降低反馈环路带宽,将输出时钟抖动控制在 5ps 以内。
时钟树隔离:将高速时钟(如 ADC 采样时钟)与低速控制时钟(如 10MHz)的布线物理隔离,避免互相干扰。
10. 电源噪声
现象
FPGA 的核心电压(如 1.0V)或 IO 电压(如 3.3V)存在纹波(如 1.0V 电源上叠加 50mV 的高频波动),导致逻辑电平不稳定。
原因
FPGA 内部逻辑翻转时的 “动态电流” 突变(如大量寄存器同时切换状态,瞬间电流从 100mA 跳至 500mA),导致电源电压暂降。
影响
在高扇出逻辑(如一个时钟驱动 100 个寄存器)中,电源噪声可能导致逻辑电平超出阈值(如高电平最低要求 0.8V,因噪声降至 0.7V,被误判为低电平),引发逻辑错误。
FPGA 中解决示例
电源去耦:在 FPGA 的电源引脚附近放置多层陶瓷电容(0.1μF、10μF),吸收高频纹波和动态电流突变;
分区供电:将 FPGA 的高速接口(如 GTX 收发器)与普通 IO 口分开供电(如 GTX 专用 1.2V 电源独立于核心 1.0V 电源),避免高速模块的电流波动干扰核心逻辑。
原文链接:
https://community.sslcode.com.cn/687462f7080e555a88cf50b5.html
-
FPGA
+关注
关注
1646文章
22059浏览量
619195 -
通信设计
+关注
关注
0文章
27浏览量
10645 -
信号调制
+关注
关注
0文章
40浏览量
9087 -
低频信号
+关注
关注
2文章
50浏览量
8478
原文标题:FPGA通信设计十问
文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
【高手问答】第2期——阿东带你走进fpga的逻辑编程设计
高手问答汇往期回顾
【高手问答】第17期:小梅哥和你一起深入学习 FPGA
PROTEL应用常见问题及问答全集
通信工程师注意啦,57个LTE常见面试问答请收好资料下载

评论