第一章 数字信号处理基础:采样定理、混叠与抗混叠滤波、定点数与浮点数、IQ信号基础

各位同学,欢迎来到《FPGA雷达信号处理加速实战教程》。我是你们的老朋友,一个在FPGA和雷达信号处理领域摸爬滚打了十几年的工程师。

今天咱们开始第一讲,聊聊数字信号处理里最基础、也最绕不开的几个概念。你别看它们基础,我在项目里见过太多人在这上面栽跟头。说白了,这些就是地基,地基不稳,楼盖得再高也得塌。

1.1 采样定理:数字世界的“入场券”

咱们做雷达信号处理,第一步就是把天线接收到的模拟信号变成数字信号。这个过程叫采样。那问题来了:采样率得设多高才够?

奈奎斯特采样定理给出了答案:采样频率必须大于信号最高频率的两倍。也就是 fs > 2 * fmax

为什么会这样?你想想看,一个正弦波,一个周期内你至少得采两个点,才能把它的频率信息还原出来。采一个点?那只能知道电压,频率信息全丢了。

核心公式:

fs > 2 * fmax

其中 fs 是采样率,fmax 是信号最高频率。

我在项目中遇到过一件事。有个同事做中频采样,信号中心频率70MHz,带宽20MHz。他图省事,直接用了150MHz的采样率。按说150 > 2*70=140,满足定理了吧?结果出来的频谱乱七八糟。为什么?因为他忘了信号最高频率其实是70+10=80MHz,2*80=160MHz,150MHz根本不够。嗯,这就是典型的“只知其一,不知其二”。

个人经验: 实际工程中,我一般会留20%~30%的余量。比如理论需要100MHz采样率,我会选120MHz甚至更高。FPGA资源够用的话,采样率高一点没坏处。

1.2 混叠:看不见的“幽灵”

采样率不够,会发生什么?混叠。

混叠说白了,就是高频信号“伪装”成了低频信号,混进你的数字信号里。你明明采的是100MHz的信号,结果频谱里却出现了一个20MHz的假信号。这玩意儿在雷达里特别要命——你可能会把假目标当成真目标。

我给你们画个图(嗯,用文字描述一下):一个10kHz的正弦波,你用9kHz的采样率去采。采出来的点,连起来一看,嘿,变成了1kHz的信号。这就是混叠。

避坑指南: 我曾经在一个项目中,ADC采样率设得刚刚好,结果频谱里总有一个莫名其妙的尖峰。排查了三天,最后发现是板子上一个开关电源的噪声,频率刚好落在采样率附近,混叠进来了。从那以后,我每次做板子,都会先拿频谱仪看看电源噪声。

1.3 抗混叠滤波器:你的“守门员”

怎么解决混叠问题?加抗混叠滤波器。

抗混叠滤波器是一个低通滤波器,放在ADC之前。它的作用就是把高于 fs/2 的频率成分统统滤掉。这样,即使信号里有高频噪声,也不会混叠进来。

设计抗混叠滤波器时,有几点要注意:

  • 截止频率: 一般设在 fs/2 附近,但要比 fs/2 低一点,留出过渡带。
  • 阶数: 阶数越高,滤波越陡,但电路也越复杂。我一般用二阶或三阶巴特沃斯,性价比高。
  • 相位: 滤波器会引入相位延迟。在雷达信号处理中,相位信息很重要,所以得考虑相位补偿。

实战建议: 如果你用FPGA做数字下变频,可以在数字域再加一级滤波。模拟滤波器+数字滤波器,双重保险,效果更好。

1.4 定点数与浮点数:FPGA里的“数字游戏”

FPGA不像CPU,它没有现成的浮点运算单元。所以,咱们在FPGA里做信号处理,大部分时候用的是定点数。

定点数和浮点数有什么区别?

类型 优点 缺点 FPGA资源消耗
定点数 速度快、资源少 动态范围小、精度固定
浮点数 动态范围大、精度高 速度慢、资源消耗大

我个人习惯是:在算法仿真阶段用浮点数,验证正确性。然后转到FPGA实现时,再转成定点数。转定点数时,要特别注意位宽和量化误差。

小技巧: 我一般会用MATLAB的 fi 对象先做定点仿真,看看量化误差能不能接受。如果误差太大,就增加位宽。通常16位定点数对于雷达信号处理来说够用了。

举个例子,一个16位定点数,如果整数部分占4位,小数部分占12位,那它能表示的范围是 -8 到 7.999,精度是 1/4096 ≈ 0.000244。够用吗?看你的信号动态范围。如果信号幅度在 ±1 之间,那整数部分其实只需要2位(符号位+1位整数),剩下的14位都给小数,精度更高。

// 定点数示例:16位,Q4.12格式
// 整数4位(含符号位),小数12位
// 表示数值:-8.0 到 7.999755859375
// 精度:1/4096 ≈ 0.000244

// 将浮点数 3.14159 转为 Q4.12 定点数
// 3.14159 * 4096 = 12868.0... → 取整 12868
// 12868 的二进制:0011 0010 0100 0100
// 解释:0011(整数部分3) . 001001000100(小数部分0.1416)

1.5 IQ信号基础:雷达的“左右眼”

IQ信号,也叫正交信号。I是In-phase(同相),Q是Quadrature(正交)。

为什么要用IQ信号?因为一个实信号只能表示幅度,不能表示相位。而雷达信号处理,恰恰需要相位信息。IQ信号相当于给信号装上了“左右眼”,既能看幅度,又能看相位。

IQ信号的数学表达:

s(t) = I(t) * cos(2πf0t) - Q(t) * sin(2πf0t)

其中:
I(t) = A(t) * cos(φ(t))
Q(t) = A(t) * sin(φ(t))
A(t) 是幅度,φ(t) 是相位

在FPGA里,生成IQ信号通常有两种方法:

  1. 模拟正交混频: 用两个混频器,一个用cos本振,一个用sin本振。然后分别低通滤波。这种方法对模拟器件要求高,I/Q两路容易不平衡。
  2. 数字正交下变频: 先用ADC采集中频信号,然后在FPGA里用数字混频器生成I/Q。这种方法更灵活,I/Q平衡性也更好。我现在做的项目基本都是用这种方法。

重点: IQ信号是雷达信号处理的基石。脉冲压缩、MTI、MTD、CFAR,所有这些算法都建立在IQ信号的基础上。所以,一定要把IQ信号的概念吃透。

我记得刚入行时,带我的老工程师跟我说:“小伙子,搞雷达信号处理,不懂IQ信号,就像开车不看路。” 当时觉得夸张,现在想想,真是一点没错。

小结

这一章咱们聊了采样定理、混叠与抗混叠滤波、定点数与浮点数、IQ信号基础。这些都是数字信号处理的基本功。下一章,咱们会深入聊聊FPGA里的数字滤波器设计,包括FIR和IIR,以及如何在FPGA里高效实现它们。

好,今天就到这里。有什么问题,咱们课后交流。


公众号:蓝海资料掘金营,微信deep3321