FPGA 数字信号处理入门保姆级指南:40 + 核心名词大白话解析 + 配套习题(电赛 / 竞赛专用)

FPGA 数字信号处理入门保姆级指南:40 + 核心名词大白话解析 + 配套习题(电赛 / 竞赛专用) 很多同学备战电赛信号类题目比如 2023 年 H 题信号分离装置时最大的门槛不是写代码而是看不懂满屏的专业名词FIR、FFT、Q 格式、建立时间、频谱泄漏…… 每个字母都认识凑在一起就不知所云抄完代码出了 bug 根本不知道从哪查。这篇文章把 FPGA 做数字信号处理时最高频的 40 专业名词全部用生活化类比 电赛真实场景讲透零基础也能看懂文末配套了对应习题看完就能检验掌握程度效率翻倍。一、信号基础与质量指标先搞懂信号的「好坏」怎么衡量这部分是所有信号处理的基石对应 ADC 采集、DAC 输出的最前端也是题目评分的核心指标。1. 基波大白话解释信号里能量最大、最主要的那个频率成分就是我们真正想要的目标信号。电赛场景题目里要求分离的 50kHz、100kHz 正弦波就是两路信号的基波。2. 谐波大白话解释频率是基波整数倍的杂波信号属于信号失真的产物比如 2 次谐波就是 2 倍基频3 次谐波就是 3 倍基频。电赛场景三角波里天然包含 3 次、5 次、7 次等奇次谐波如果电路设计不好正弦波输出也会产生谐波影响分离精度。3. 信噪比SNR大白话解释有用信号的功率和噪声功率的比值单位 dB。数值越大信号越干净背景噪声越小。电赛场景ADC 采样位数越高、电源噪声越小信噪比越高后续信号处理的精度就越好。4. 总谐波失真THD大白话解释所有谐波的总能量和基波能量的比值衡量信号波形的失真程度。数值越小波形越接近理想正弦波。电赛场景题目里输出波形的失真度指标本质就是 THD是评分的关键项。5. 无杂散动态范围SFDR大白话解释基波幅度和最大杂波幅度的比值单位 dB。代表系统能分辨的最大信号和最小信号的差距。电赛场景DDS 输出的纯净度、FFT 识别微弱信号的能力都和这个指标直接相关。6. 噪声底噪声基底大白话解释系统本身固有的噪声水平就算没有输入信号也存在的背景噪声。电赛场景FFT 频谱里底部的那些杂乱小峰就是噪声底小信号如果低于噪声底就会被淹没识别不出来。7. 满量程Full Scale大白话解释ADC/DAC 能处理的最大电压范围比如 0~3.3V 就是常见的满量程范围。电赛场景信号幅值接近满量程时信噪比最高信号太小的话容易被噪声淹没。二、数字滤波器全系列从基础到进阶滤波器是电赛信号题的绝对核心从基础的 FIR 到进阶的多速率滤波全部整理在这里。1. FIR 滤波器有限长冲激响应大白话解释只靠历史采样值加权求和实现的「电子筛子」系统绝对稳定、输出波形不失真是电赛首选方案。对应代码方案一里的fir_1024.sv就是典型的 1024 阶 FIR 滤波器实现。2. IIR 滤波器无限长冲激响应大白话解释带反馈结构的滤波器相同性能下阶数更低、省资源但容易振荡、波形会产生相位失真电赛慎用。3. 阶数抽头数大白话解释滤波器系数的总个数相当于筛子的层数。阶数越高筛选边界越锐利、滤得越干净但信号延迟越大、硬件资源占用越多。对应代码1024 阶 FIR就代表有 1024 个加权系数。4. 通带 / 阻带 / 过渡带大白话解释通带能顺利通过、几乎不被削弱的频率范围阻带被大幅衰减、基本无法通过的频率范围过渡带通带和阻带中间的缓冲区域信号是逐步被削弱的现实中不存在一刀切的理想滤波器。5. 阻带衰减大白话解释阻带内信号被削弱的程度单位 dB。常用数值参考20dB 削弱到 1/1040dB 削弱到 1/10060dB 削弱到 1/1000。6. 线性相位大白话解释所有频率的信号通过滤波器后延迟时间完全一样。最大好处是波形不会变形正弦波输入还是正弦波输出。实现条件FIR 系数左右严格对称就能保证线性相位MATLAB 工具生成的系数天然满足。7. 群延迟大白话解释信号通过滤波器需要的时间单位是采样周期。线性相位滤波器的群延迟是固定值等于 (阶数 - 1)/2。8. 窗函数大白话解释设计 FIR 滤波器的不同「数学配方」常用汉宁窗、汉明窗、布莱克曼窗各有优劣。电赛常规题目用汉宁窗即可均衡性最好。9. 抽取Decimation大白话解释降低采样率每隔 N 个采样点取一个相当于降采样。抽取前必须先做低通滤波防止信号混叠。10. 插值Interpolation大白话解释提高采样率在两个原始采样点之间插入新的数值相当于升采样。插值后要做低通滤波滤除镜像频率。11. 多速率信号处理大白话解释系统里不同模块用不同的采样率低速部分用低采样率节省资源高速部分用高采样率保证性能。12. CIC 滤波器梳状滤波器大白话解释专门用于抽取 / 插值的滤波器不需要乘法器只用加法器和寄存器硬件资源极少适合大倍率降采样场景。13. 半带滤波器Half-band大白话解释一种特殊的 FIR 滤波器通带和阻带对称一半系数为 0运算量是普通 FIR 的一半常用在 2 倍抽取 / 插值的场景。14. 等波纹滤波器大白话解释用 Parks-McClellan 算法设计的 FIR 滤波器通带和阻带的纹波是均匀的相同阶数下性能比窗函数法更好。三、FFT 频谱分析全家桶频域分析必备这部分对应方案二的 FFT 识别方案搞懂这些才能理解频谱分析的原理和常见坑点。1. DFT / FFT大白话解释DFT离散傅里叶变换把时域信号转换成频域算出每个频率分量的大小FFT快速傅里叶变换DFT 的快速优化算法运算量小几十上百倍工程上全部使用 FFT。对应代码方案二里的xfftIP 核就是 Xilinx 官方的 FFT 硬件加速器。2. 功率谱大白话解释每个频率对应的信号能量大小横轴是频率、纵轴是功率峰值最高的地方就是信号的主频率。对应代码Cal_pwoer.v模块做的就是计算每个频点的功率值。3. 频率分辨率大白话解释FFT 能分辨的最小频率差核心公式频率分辨率 采样率 / FFT 点数。举例8.192MHz 采样率 16384 点 FFT分辨率就是 8192000 / 16384 500Hz。4. 栅栏效应大白话解释FFT 只能看到整数倍分辨率的频率点就像隔着栅栏看风景只能看到缝隙里的部分。如果信号频率刚好不在频点上能量会分散到相邻频点峰值位置有偏差。5. 频谱泄漏大白话解释如果采样的信号不是整周期的FFT 后信号能量会扩散到旁边的频点上主峰值变矮、两侧出现杂峰就像水洒出来一样。解决方法FFT 前给信号乘窗函数比如汉宁窗可以大幅减小频谱泄漏代价是频率分辨率略有下降。6. 主瓣 / 旁瓣大白话解释主瓣频谱里峰值最高的主峰对应信号的真实频率旁瓣主瓣两边的小凸起是窗函数带来的固有特性。 窗函数的旁瓣越低滤波越干净但主瓣会越宽频率分辨率会下降。7. 蝶形运算大白话解释FFT 的基本运算单元因为结构长得像蝴蝶的翅膀得名。每一级 FFT 都由大量蝶形运算单元组成。8. 基 2 FFT大白话解释FFT 点数是 2 的整数次幂比如 1024、2048、16384算法最简单、硬件实现最方便电赛基本都使用基 2 FFT。9. 位序倒置比特反转大白话解释基 2 FFT 的输入或输出地址是乱序的需要把二进制位反过来排序才能得到正确顺序的频谱结果。10. 整周期采样大白话解释采样时长刚好是信号周期的整数倍这时候做 FFT 几乎没有频谱泄漏主峰值最准、识别精度最高。四、DDS 与锁相环进阶波形生成与相位同步这部分对应三种方案的波形生成和锁相重构模块是输出端的核心技术。1. DDS直接数字频率合成大白话解释用「相位累加器 波形 ROM」生成任意频率波形的技术频率切换快、精度高是 FPGA 生成波形的主流方案。对应代码三个方案里的波形生成模块全部采用 DDS 架构。2. 相位累加器大白话解释DDS 的核心计数器每个时钟周期加上一个固定值数值代表当前的相位角度。位宽越宽频率精度越高。3. 频率控制字大白话解释每个时钟周期加到相位累加器上的数值数值越大相位走得越快输出频率越高。核心公式输出频率 频率控制字 × 系统时钟 / 2^NN 是相位累加器位宽。4. 相位截断杂散大白话解释DDS 只取相位累加器的高位去查波形 ROM低位被丢弃导致输出信号产生杂波是 DDS 杂散的最主要来源。5. 幅度量化杂散大白话解释波形 ROM 里的幅值是量化后的整数不是连续的真实值由此带来的失真和杂散。ROM 位宽越高杂散越小。6. 数字锁相环DPLL大白话解释一个负反馈控制系统让本地生成的信号和输入信号保持同频、相位差恒定最终示波器显示的波形稳定不漂移。对应代码方案二里的PllOneOrder模块就是典型的一阶数字锁相环。7. 鉴相器大白话解释锁相环的第一级检测输入信号和本地信号的相位差输出对应的误差信号。代码中常用乘法器实现。8. 环路滤波器大白话解释锁相环的第二级把误差信号里的高频杂波滤掉输出平滑的控制信号决定了锁相的速度和稳定性。9. 环路带宽大白话解释锁相环能够跟上的频率变化范围。带宽大锁相速度快但抗干扰能力差带宽小抗干扰强但锁相速度慢。10. 稳态相位误差大白话解释锁相环进入锁定状态后输入和输出信号之间固定的相位差值不是 0而是一个恒定值。11. 捕获时间大白话解释从上电开始到锁相环进入稳定锁定状态所需要的时间。五、FPGA 硬件与时序基础代码背后的真实硬件搞懂这些才知道写的 Verilog 代码最终变成了什么出了硬件问题也能快速定位。1. LUT查找表大白话解释FPGA 实现组合逻辑的最小单元本质是一小块 SRAM 存储真值表输入地址直接输出结果。2. 触发器FF / 寄存器大白话解释存储 1 位数据的基本单元按时钟节拍更新数据是所有时序逻辑的基础。3. BRAM块存储器大白话解释FPGA 里集成的专用高速内存块专门用来存储大量数据。对应代码FIR 的延迟线、DDS 的波形 ROM、延迟补偿的环形缓冲区最终都会综合成 BRAM 资源。4. DSP SliceDSP 单元大白话解释FPGA 里专门做乘法、加法的硬核电路比用 LUT 搭建的乘法器快得多、节省逻辑资源。对应代码FIR 滤波、FFT 运算、功率计算里的所有乘法操作最终都会映射到 DSP 单元上。5. 建立时间Setup Time大白话解释时钟有效沿到来之前数据必须保持稳定的最短时间。不满足的话触发器采到的数据可能出错。6. 保持时间Hold Time大白话解释时钟有效沿到来之后数据必须保持稳定的最短时间。不满足同样会导致采样错误。7. 时序裕量Slack大白话解释时间还剩余多少正值代表满足时序要求负值代表时序违例电路可能无法稳定工作。8. 时序收敛大白话解释布局布线完成后所有逻辑路径都满足建立时间和保持时间要求设计能够在指定时钟下稳定运行。9. 时钟抖动Jitter大白话解释时钟沿不是完美准时的会有微小的左右偏移会影响 ADC 采样精度和系统时序。10. 时钟偏斜Skew大白话解释同一个时钟信号到达不同触发器的时间不一样有先后差值。全局时钟网络就是用来减小时钟偏斜的。11. 关键路径大白话解释整个设计中延迟最长的那条逻辑路径它决定了电路最高能跑多快的时钟频率。12. 流水线大白话解释把一个大运算拆成多拍时钟完成每拍只做一小部分以此提升最高运行频率代价是增加运算延迟。13. IP 核大白话解释官方或第三方做好的、经过验证的功能模块相当于现成的积木直接调用即可不用从零开始编写。举例FFT IP 核、FIR 编译器 IP 核、乘法器 IP 核都是电赛常用的官方 IP。14. ILA在线逻辑分析仪大白话解释Xilinx FPGA 内置的调试工具能够实时抓取内部信号波形是电赛现场调 bug 的神器。六、数字运算与数据格式运算的底层规则FPGA 的数字运算和软件不一样数据格式错了结果全错这部分是最容易踩坑的地方。1. 定点数 / 浮点数大白话解释浮点数类似科学计数法带小数点范围大、精度高但运算慢、占用资源多FPGA 信号处理一般不用定点数小数点位置固定全部按整数运算最后再换算速度快、省资源是 FPGA 信号处理的首选。2. Q 格式大白话解释定点数的标准表示方法Qm.n 代表 1 位符号位 m 位整数位 n 位小数位。举例Q1.15 就是 16 位位宽1 位符号 15 位小数能表示 - 1 到接近 1 的小数范围。3. 补码大白话解释FPGA 中有符号数的标准表示方式正数最高位为 0负数最高位为 1减法可以转换成加法运算。4. 符号扩展大白话解释把短位宽的有符号数扩展成长位宽时高位全部补充符号位保证数值大小不变。5. 截位Truncation大白话解释运算后位宽变宽直接丢掉低位相当于向下取整。实现简单、省资源但有固定的偏差误差。6. 舍入Rounding大白话解释类似四舍五入平均误差比截位小但逻辑稍微复杂一点。7. 饱和运算大白话解释运算结果超出位宽范围时把值钳位在最大值 / 最小值而不是直接截断高位。对应代码方案一加法器里的溢出判断逻辑就是典型的饱和截断处理。8. 量化误差大白话解释用有限位数表示真实数值带来的误差位数越多误差越小。9. 字长效应大白话解释因为位宽有限运算过程中误差不断累积最终影响结果精度。设计时要选择合适的位宽不是越大越好。学习小建议不用死记硬背碰到不懂的名词回来查即可结合代码和实际场景理解最快电赛核心优先级FIR 滤波器 → DDS → FFT → 锁相环吃透这四个模块大部分信号类题目都能快速上手先仿真再上板MATLAB 先验证算法正确性再移植到 FPGA比盲目调硬件效率高得多。配套习题电赛 H 题场景全部题目围绕 2023 电赛 H 题三种方案设计学完名词可以直接检验掌握程度。一、单项选择题共 15 题下列关于 FIR 滤波器的说法错误的是 A. 可以实现严格线性相位 B. 系统一定是稳定的 C. 相同阶数下比 IIR 阻带衰减更大 D. 可以用分时复用架构减少资源答案C解析相同阶数下 IIR 的选频特性更好、阻带衰减更大FIR 需要更高阶数才能达到相同的滤波效果。8.192MHz 采样率、2048 点 FFT频率分辨率约为 A. 500Hz B. 4kHz C. 1kHz D. 2kHz答案B解析分辨率 采样率 / FFT 点数 8192000 / 2048 4000Hz 4kHz。DDS 相位累加器位宽增加会直接带来什么好处 A. 输出幅值精度提高 B. 频率分辨率提高 C. 谐波失真减小 D. 最高输出频率提高答案B解析DDS 频率分辨率 系统时钟 / 2^NN 是相位累加器位宽位宽越大分辨率越高。下列哪种窗函数的阻带衰减最大 A. 矩形窗 B. 汉宁窗 C. 汉明窗 D. 布莱克曼窗答案D解析布莱克曼窗阻带衰减约 74dB汉明窗 53dB汉宁窗 44dB矩形窗 21dB。频谱泄漏产生的主要原因是 A. 采样率太低 B. FFT 点数太少 C. 非整周期采样 D. 信号幅值太小答案C解析非整周期采样时信号截断导致能量扩散产生频谱泄漏加窗可以缓解但不能完全消除。数字锁相环中环路滤波器的主要作用是 A. 检测相位差 B. 滤除误差信号的高频分量 C. 生成输出频率 D. 扩大频率范围答案B解析环路滤波器是低通特性滤除鉴相输出的高频和频分量得到平滑的直流误差信号。FPGA 中FIR 滤波器的乘法运算优先使用哪种资源实现 A. LUT B. 触发器 C. DSP Slice D. BRAM答案C解析DSP Slice 是专用乘加单元专门为滤波、FFT 等信号处理运算优化速度快、节省逻辑资源。下列关于饱和运算的描述正确的是 A. 运算速度比直接截位快 B. 溢出时会出现严重的 wrap-around 失真 C. 溢出时将值钳位在最大 / 最小值 D. 会减小信号幅值答案C解析饱和运算的核心就是溢出时钳位避免严重的波形畸变是信号处理的标准操作。异步 FIFO 使用格雷码指针的主要目的是 A. 提高读写速度 B. 减少 BRAM 占用 C. 避免跨时钟域的亚稳态问题 D. 简化空满判断逻辑答案C解析格雷码每次只有 1 位跳变跨时钟域采样时不容易出错配合两级同步器大幅降低亚稳态风险。线性相位 FIR 滤波器的系数需要满足什么条件 A. 全部为正数 B. 左右对称 C. 全部为整数 D. 中间大两边小答案B解析系数偶对称是 FIR 实现严格线性相位的充要条件MATLAB 生成的窗函数法 FIR 天然满足。奈奎斯特采样定理要求采样率至少是信号最高频率的多少倍 A. 1 倍 B. 2 倍 C. 5 倍 D. 10 倍答案B解析采样率必须大于信号最高频率的 2 倍才能无失真还原信号否则会产生混叠。下列哪个不是 DDS 的杂散来源 A. 相位截断误差 B. 幅度量化误差 C. 时钟抖动 D. 相位累加器位宽太大答案D解析相位累加器位宽越大相位截断误差越小杂散越小是提升 DDS 性能的手段。时序分析中关键路径决定了什么 A. 电路最高工作频率 B. 资源占用多少 C. 功耗大小 D. 逻辑功能正确性答案A解析关键路径是延迟最长的路径它的延迟决定了时钟周期的最小值也就决定了电路的最高工作频率。Q1.15 格式的 16 位有符号数能表示的最大正数约为 A. 1 B. 接近 1 C. 32767 D. 15答案B解析Q1.15 有 1 位符号、15 位小数最大正数是 0.111...111等于 1 - 1/32768无限接近 1。三角波的频谱特点是 A. 只有基波没有谐波 B. 包含所有整数次谐波 C. 只包含奇次谐波 D. 只包含偶次谐波答案C解析三角波是奇对称信号傅里叶展开只有奇次谐波谐波幅度和次数的平方成反比。二、判断题共 10 题FIR 滤波器的阶数越高过渡带越窄阻带衰减也越大。 答案×解析阶数越高过渡带越窄但阻带衰减由窗函数类型决定和阶数无关。数字锁相环锁定后输出信号和输入信号相位差为 0。 答案×解析锁定后相位差恒定但存在稳态相位误差不一定为 0。加窗可以完全消除频谱泄漏。 答案×解析加窗只能减小频谱泄漏不能完全消除。FPGA 中 BRAM 既可以当 RAM 用也可以配置成 ROM 用。 答案√解析BRAM 可以初始化数据上电后只读作为 ROM 使用比如存储 DDS 的波形表。建立时间违例时可以通过降低时钟频率来解决。 答案√解析降低时钟频率时钟周期变长建立时间裕量会变大能缓解建立时间违例。实信号 FFT 的频谱前后两半是完全独立的。 答案×解析实信号 FFT 具有共轭对称性后半部分是前半部分的镜像有效信息只在前半段。CIC 滤波器不需要乘法器适合大倍率抽取。 答案√解析CIC 只有加法器和寄存器没有乘法器硬件资源极少是高倍率降采样的首选方案。定点数运算中截位的误差比舍入更小。 答案×解析舍入的平均误差更小截位总是往小的方向取偏差更大。异步 FIFO 读写时钟频率相同就不会有亚稳态。 答案×解析只要是不同时钟域哪怕频率相同相位不同也可能产生亚稳态。半带滤波器一半系数为 0运算量是普通 FIR 的一半。 答案√解析半带滤波器系数对称且奇数点为 0计算量减半常用在 2 倍抽取插值场景。三、综合解答题共 3 题1. 结合电赛 H 题说明为什么方案一 FIR 滤波不适合发挥部分的多频率自适应要求解答 FIR 滤波器的系数是和截止频率强绑定的一套系数只能对应一组通带、阻带参数。题目发挥部分要求支持 20kHz~100kHz 多频率步进分离如果用 FIR 方案每一组频率都要重新设计系数、重新编译比特流无法现场动态切换而方案二 FFT 重构方案只需要修改频率查表就能支持不同频率自适应能力强更适合发挥部分的要求。2. 解释什么是栅栏效应针对方案二的 FFT 识别模块提出两种减小栅栏效应影响的方法。解答 栅栏效应FFT 只能分辨整数倍分辨率的频率点就像隔着栅栏看景物只能看到缝隙里的部分如果信号频率不在采样频点上能量会分散到相邻频点峰值位置产生偏差。减小影响的方法增加 FFT 点数点数越多频率分辨率越高栅栏效应越弱比如从 8192 点增加到 16384 点分辨率提高一倍频谱插值校正根据峰值和相邻两个频点的幅值用插值算法估算真实频率位置提升识别精度降低采样率相同点数下采样率越低频率分辨率越高栅栏效应越弱。3. 方案二锁相环输出的信号为什么要加延迟补偿模块延迟补偿为什么用 BRAM 而不是移位寄存器解答为什么要加延迟补偿 FFT 运算、FIR 滤波、DDS 流水线都会引入固定的时钟延迟导致输出波形比输入信号滞后示波器观测时两路信号有明显相位差影响 “稳定同相显示” 的测试效果延迟补偿可以抵消系统固有延迟让输入输出相位对齐。为什么用 BRAM 不用移位寄存器大延迟下更省资源需要延迟几千个时钟周期时用移位寄存器会消耗大量触发器资源而 BRAM 是整块存储单元只需要控制读写指针资源占用极少延迟值灵活可调BRAM 环形缓冲可以通过修改读地址偏移灵活调整延迟值适配不同频率下的相位补偿需求移位寄存器延迟固定修改不方便。