前两年调试一套 SDR 收发链路,遇到一个非常“邪门”的现象:发射端基带星座图明明正常,接收端解调出来的 QPSK 信号却永远报错,无论怎么调载波同步、符号同步都没用。后来把接收基带数据拉下来一分析,发现收到的根本不是发射的星座,而是它的“镜像”——I 路没毛病,Q 路正好反号。原因不复杂:发射端本振按照正方向做了一次变频,接收端解调本振也按同一个方向旋转,两个“正号”叠在一起,频谱被折叠回来了。当时改了一行 DSP 代码,把 Q 路取反,问题立刻消失。
这个问题的本质,就是通信系统里收发变频使用不同正负频率带来的影响。很多工程师在配套频率规划时只关注“频率值”,容易忽略“方向”。这篇文章我会把正负频率的概念、发射和接收两条链路里的变频方向、不同符号组合带来的系统级后果,以及实际排查和规避方法一次讲清楚,希望对做射频前端、FPGA/DSP 通信算法和系统联调的朋友都有帮助。
1. 正负频率不是“数学符号”:先从复数基带说起
1.1 负频率到底能不能“摸到”
上学时学傅里叶变换,教材上说实信号的频谱是共轭对称的,正频率和负频率各有一半,很多人就把负频率当成纯数学产物。但一旦进入复数基带和 I/Q 信号处理,负频率就是实实在在的物理量,它对应着一种可观测、可测量、可携带信息的信号状态。
一个复数基带信号可以写成:
[ x(t)=I(t)+jQ(t) ]
它的频谱 (X(f)) 在正频率和负频率上相互独立。也就是说,你能在 +1MHz 放一个信号,同时在 -1MHz 放另一个完全不同的信号,两者互不干扰。这就是复数信号“多出来”的自由度。接收端只要用正交下变频,就能把这两个频率分开;而如果只用单路实信号处理,这两个位置会互相折叠,分不干净。
所以,做通信系统设计,尤其是调制解调、上下变频、镜像抑制这些环节时,负频率不是一个可有可无的符号,它就是一个独立的“车道”。
1.2 复指数与本振的旋转方向
在变频里我们经常用复指数 (\exp(j2\pi f_{LO} t)) 表示本振。用欧拉公式展开:
[ e^{+j\omega t}=\cos(\omega t)+j\sin(\omega t) ] [ e^{-j\omega t}=\cos(\omega t)-j\sin(\omega t) ]
这两个指数的差别,就是 Q 路本振的符号。工程上常说的“本振正频率变频”,本质上是把基带频谱向正频率方向搬移;换成负指数,就是向负频率方向搬移。一旦在某个混频级里少加了一个负号、多接了一根反相线,整个频谱方向就会翻转。
理解这件事以后,再看收发链路里的每一个混频器、每一个 DDC 里的 NCO,都不只是“乘一个本振”那么简单,而是要问清楚:我乘的是 (e^{+j\omega t}) 还是 (e^{-j\omega t})?这个方向决定了信号最终落在正频率还是负频率上。
2. 发射路径里的“正负方向”是怎么定的
2.1 理想 I/Q 调制器:一次变频可以只出一个边带
先看发射端。一个理想正交调制器的输出可以写成:
[ s_{RF}(t)=\mathrm{Re}{[I(t)+jQ(t)]e^{+j2\pi f_{LO}t}} ]
展开后就是:
[ s_{RF}(t)=I(t)\cos(2\pi f_{LO}t)-Q(t)\sin(2\pi f_{LO}t) ]
射频输出只在 (+f_{LO}) 位置出现基带频谱,(-f_{LO}) 位置虽然没有射频能量,但由于实信号必须满足共轭对称,实际观测到的射频负频分量是把基带信号共轭后放在那里的。
假如本振的 Q 路相位接反,输出变成:
[ s'{RF}(t)=I(t)\cos(2\pi f{LO}t)+Q(t)\sin(2\pi f_{LO}t) ]
这就等价于:
[ s'{RF}(t)=\mathrm{Re}{[I(t)-jQ(t)]e^{+j2\pi f{LO}t}} ]
也就是说,基带信号在进入变频前已经被“共轭”了一次。发射链路频谱看着还是在上边带,但携带的信息已经变成 (I-jQ),不是原来的 (I+jQ)。
2.2 单混频器与边带选择
如果发射机不是用正交调制器,而是用一个普通实混频器,情况更明显。实混频器输出有和频也有差频,相当于同时使用了正方向和负方向两个边带。想在某个边带工作,就必须在混频器后面加滤波器,把不需要的边带滤掉。
决定用上边带还是下边带,就成了系统设计里的一个显式选择。选上边带,等效于基带频谱向正方向搬移;选下边带,等效于向负方向搬移。射频滤波器放在通带哪一侧、中频滤波器放在镜像频率哪一侧,全都由这个方向决定。
很多人问我:既然可以滤波,那为什么还要关心正负号?因为滤波器只解决了“不要的边带被滤掉”的问题,并没有解决“信号本身有没有被镜像”的问题。如果发射机的 I/Q 极性和边带期望不一致,信号频谱在发射端就已经倒了,后面滤波再怎么选也救不回来。
2.3 OFDM 里“负频率”可不是装饰
实际系统里负频率在基带中直接承载数据。比如 OFDM,IFFT 之后,频率轴上 -N/2 到 N/2 的所有子载波都带着调制信息,负频率子载波和正频率子载波通常都有导频和数据。设计时会刻意在某些位置留空,比如直流子载波附近,或者为镜像抑制留保护间隔。
这也意味着,一旦收发变频方向不一致,接收端解调出的 OFDM 数据会“躲”到相反符号的子载波上。如果发射端在 -k 子载波放了一个导频,接收端可能在 +k 子载波上解到这个导频。原本按标准排列的正负子载波映射关系被打乱,轻则误码率升高,重则完全无法同步。
3. 接收路径的变频方向:谁在决定“要正还是负”
3.1 实混频接收机的镜频烦恼
接收端同样存在方向问题。一个单路实混频器做下变频,输出是:
[ r_{IF}(t)=s_{RF}(t)\cdot 2\cos(2\pi f_{LO}t) ]
它同时把 (+f_{LO}) 附近的信号和 (-f_{LO}) 附近的信号搬到中频,两个分量在中频处重叠。这就是经典镜频问题。要抑制镜频,通常在中频之前用射频预选滤波器或者镜频抑制混频器把另一个方向的信号先干掉。
实混频器本身是分不清“正频率边带”和“负频率边带”的。也就是说,对于接收机来说,如果不做正交处理,仅仅知道“本振频率是多少”是不够的,必须同时知道“信号是高于本振还是低于本振”。这个信息在工程上对应“高本振注入”还是“低本振注入”。
3.2 高本振与低本振:中频方向的开关
超外差接收机里常用高本振和低本振来区分两种注入方式。假设希望接收 900MHz 信号,中频选 70MHz:
- 如果本振用 830MHz,属于低本振注入。射频信号频率 = 本振 + 中频,本振在信号下方,中频输出频谱方向与射频输入频谱方向一致。
- 如果本振用 970MHz,属于高本振注入。射频信号频率 = 本振 - 中频,本振在信号上方,中频输出频谱方向会发生翻转。
高本振注入在镜像抑制上有时候有优势,因为镜频落在 1040MHz,可能更容易用滤波器滤掉。但代价就是中频频谱方向反了。如果后端的中频链路没注意到这一点,后面的 AGC、解调器、信道滤波器就全都按反方向处理,星座图自然就倒了。
3.3 复数下变频与 DDC 里的符号选择
现代数字接收机通常用正交下变频,也就是用两个本振信号分别乘 I 路和 Q 路,再做搬移。理想情况下,接收端的数字下变频可以表达为:
[ \hat{x}(t)=\mathrm{LPF}{s_{RF}(t)\cdot e^{-j2\pi f_{LO}t}} ]
这里选了负指数,等效于把信号向负方向旋转。至于选正指数还是负指数,完全取决于你希望把 RF 信号的哪一侧搬到基带。
在软件无线电里,这套操作通常在 DDC 中通过 NCO 实现。很多 SDR 平台的接收频率设置让你输入中心频率,但内部实现里,有的平台把信号带通搬到正频率,有的搬到负频率。如果只看界面上的“接收频率”,看不到内部正负方向,等接上发射机联调时才会发现信号倒了。
4. 收发正负不同组合的系统性影响
4.1 四种组合的等效基带结果
现在把发射和接收的变频方向放在一起来看。设发射端使用 (\exp(+j2\pi f_{LO}t)) 做上变频,接收端使用 (\exp(-j2\pi f_{LO}t)) 做下变频,这是最常见的“一正一负”组合。经过推导,接收端低通滤波后得到:
[ \hat{x}(t)=\frac{1}{2}x(t) ]
信号被完整恢复,只是幅度减半。这是正常情况。
但如果发射端和接收端都用了正指数,即收发同方向,结果变成:
[ \hat{x}(t)=\frac{1}{2}x^*(t)=\frac{1}{2}(I(t)-jQ(t)) ]
信号在基带被共轭,表现为 Q 路取反。发射端和接收端都用负指数时,结果同样是 (x^*(t))。完整组合见下表:
| 发射变频方向 | 接收变频方向 | 基带等效结果 | 典型现象 |
|---|---|---|---|
| (+e^{j\omega t}) | (-e^{j\omega t}) | (x(t)) | 正常解调 |
| (-e^{j\omega t}) | (+e^{j\omega t}) | (x(t)) | 正常解调 |
| (+e^{j\omega t}) | (+e^{j\omega t}) | (x^*(t)) | 频谱倒置、星座镜像 |
| (-e^{j\omega t}) | (-e^{j\omega t}) | (x^*(t)) | 频谱倒置、星座镜像 |
这个表非常关键。它说明“正负不一致”反而能正确恢复信号,“正负一致”却会出错。很多联调现场出现怪问题时,第一反应是怀疑天线、增益、滤波器,很少有人会去核对收发两端的变频方向符号,结果绕了一大圈。
4.2 星座图:看起来像“转了一下”
收发方向一致造成的影响,在星座图上非常典型。QPSK 信号本来是四个点分布在右半平面,如果 Q 路取反,星座点会沿 I 轴镜像,四条限图还是四条,但每个点都跑到对侧去了。如果你的解调器按照标准映射表硬判,得出来的全是错码。
更迷惑的是,BPSK 这类一维调制信号对 Q 路取反没有感知,因为它的信息只写在 I 路上。这就造成一个现象:用 BPSK 测试时一切都正常,一换 QPSK 或者 16QAM 就全错。很多人在这个坑里浪费了大量时间,其实原因早就在那里,只是测试信号没有暴露它。
对于高阶 QAM,星座不仅发生镜像,还会因为差分编码方式不同表现出不同的错误图案。如果系统里用了旋转不变的差分编码,可能部分码字还能解对,另一部分又不对,看星座图就像“拧着劲儿”,很难一次看出规律。
4.3 OFDM 和扩频系统:频域位置整体对调
在 OFDM 里,收发方向一致造成的不是单纯的 Q 路取反,而是所有频率分量在 f 和 -f 之间对调。因为时域取共轭,在频域等价于:
[ X'(k)=X^*(-k) ]
也就是说,+k 子载波上的导频可能跑到 -k 子载波上。如果发射端在正负子载波放了不同的导频图案,接收端可能误以为自己收到了错误位置上的导频,从而影响信道估计和均衡。严重时,小区搜索、帧同步这些依赖固定导频位置的模块直接失效。
扩频系统也有类似问题。如果扩频序列在频域上不对称,收发方向取反后,相关峰位置会明显异常。直扩系统里会看到主峰跑到镜频延时位置,工程上很容易误判为多径。
4.4 级联变频时的符号累加
实际设备往往不止一级混频。发射端可能从基带先变到中频,再从中频变到射频;接收端同样有多级下变频和数字下变频。每一级都可能是正方向,也可能是负方向,最终方向取决于每一级符号的乘积。
我习惯用“频谱倒置奇偶性”来判断整个链路:每一级混频如果发生了边带选择翻转,就计一次倒置;整条链路倒置次数为奇数,接收基带必然镜像;为偶数,则恢复正常。这个方法在系统联调时非常好用,能快速从多级变频中定位是哪一级出了问题。
5. 工程案例:同号镜像的完整排查过程
5.1 第一次复现:一根单音就把问题暴露了
现在说说文章开头那个 SDR 项目。当时我们在调试一个点对点数据链路,发射端持续发 QPSK 信号,接收端解调误码率一直在 50% 左右。我先用频谱仪看接收天线口的射频信号,载波位置、功率都正常,完全看不出问题。接着我把发射模式改成单音,在基带发一个 +150kHz 的复指数,然后看接收端基带 FFT,发现峰值出现在 -150kHz。
这一个测试就直接锁定了方向。如果只是单纯的噪声或者干扰,不可能这么规则地出现在镜像频率位置。于是我把链路图打开,逐个变频级核对符号,最后发现发射端基带 DSP 里 I/Q 映射的 Q 路取反了。也就是说,发射链路在基带就把信号共轭了一次,接收端再按标准负方向变频,结果收发方向一致,形成了镜像。
5.2 坐标系排查:模拟端和数字端都要看
排查这类问题,必须把模拟电路和数字基带当成同一个坐标系来看待。常见的出问题点有三个:
- 正交调制器的 Q 路本振相位写反,模拟端少了一个负号。
- ADC 采样后 I/Q 两路接反,或者 DDC 里的 NCO 旋转方向设置错误。
- 基带算法里把 (I+jQ) 误写成 (I-jQ),在数字域人为引入共轭。
这三个点都发生在“看不见”的地方,单独测任何一级都可能正常。我建议调试时先做一次基带本振方向验证:在发射端打一个正频率单音,接收端看频谱;再打一个负频率单音,接收端再看频谱。如果两个单音的位置对调了,立刻能判断收发方向不一致。
5.3 修复:优先改接收端还是发射端?
解决频谱倒置,理论上改哪一端都行,但实际工程里有讲究。如果发射端已经和其他系统对齐过,或者发射设备不便改动,那就改接收端。数字接收机里通常只需要对基带做共轭操作,或者把 DDC 的 NCO 旋转方向反转,改起来成本最低。
如果发射端有多个项目复用,而接收端是专用设备,那可以考虑在发射端修正。但要注意,发射端修正前必须确认其它接收端对边带方向的依赖,不能只顾当前一个接收机。
我在那次项目里选择了在接收端基带做共轭,因为发射端已经量产,接收端还是原型样机。改完后,用同一个 +150kHz 单音复测,峰值回到 +150kHz,QPSK 星座恢复正常,误码率直接降到接近 0。
6. 设计阶段如何避免正负频率混乱:规划、测量、预案
6.1 用频谱方向图替代“本振频率值”
很多频率规划文档只写本振频率和信号频率,不写信号是位于本振上边还是下边,也不写每个混频级选的是上边带还是下边带。这在单级变频里问题不大,级数一多就非常容易出乱子。
我建议每个项目都画一张从基带到天线的频谱方向图,每一级搬移处明确标注“本振在上”还是“本振在下”,“取上边带”还是“取下边带”。配合前面说的倒置奇偶性判断,每一级是否翻转一目了然。
6.2 收发联调前先跑一次“正负单音测试”
在联调测试项里,把“正负单音测试”作为必测项。具体操作是:
- 发射端发一个 +f 基带单音。
- 接收端在基带 FFT 里确认峰值出现在 +f 还是 -f。
- 发射端再发一个 -f 基带单音。
- 接收端确认峰值位置是否对应。
如果两次都对应正确,说明收发链路方向一致或符号组合正确。如果相反,说明频谱倒置。这个测试成本极低,却能在第一时间暴露方向问题。
6.3 对 I/Q 不平衡校准的影响
正负频率对镜像抑制校准也有影响。I/Q 不平衡校准通常会让信号在正频率或者负频率出现镜像分量,校准算法根据正负频率上的目标信号和镜像信号相位关系来估计不平衡参数。如果收发方向已经乱了,镜像信号的位置和相位关系就会反掉,校准结果要么不收敛,要么把链路校准得更歪。
做收发校准时,一定要先确认链路方向正确,再做校准。顺序反过来,通常会把问题搞得越来越复杂。
6.4 多天线与全双工系统要格外小心
在多天线系统里,每一路收发链路的 I/Q 极性如果不能保持一致,天线通道间的相位一致性测量就会失败。波束成形算法对通道间相位非常敏感,如果某一路的变频方向反了,其他几路统一校准也没用,最终会导致波束指向错误。
全双工或者同频同时收发的系统里,发射信号会泄漏到接收链路,接收链路经常利用自身的频谱方向来区分泄漏信号和目标信号。这时候收发正负频率的处理不当,会把自干扰信号误认为有用信号,或者反过来把有用信号当成干扰抵消掉。这类系统从设计一开始就要把正负频率作为一等公民摆进系统模型,而不能只靠后期打补丁。
写在最后
正负频率这个坑,我见过太多人踩过。有的人在联调现场花了三天找问题,最后只改了一个负号;有的人因为用了 BPSK 测试信号,一直没发现方向问题,等到 QAM 上线才炸锅。其实只要在设计阶段就把变频方向记清楚,在联调前跑一次正负单音测试,这些问题都能在几分钟内定位。
我自己的习惯是在每一个混频器旁边用记号笔标注“+”或者“-”,在代码里凡是涉及 I/Q 符号的地方都写清楚注释,标注方向和参考基准。启动一个新项目时,第一件事就是做一次正负单音链路自检。这些习惯看起来不起眼,但能在关键时刻省下一天甚至几天的排障时间。
如果你也正在被“星座图不对”“OFDM 导频错位”“校准不收敛”这类问题困扰,不妨先停下来问问自己:发射端和接收端,到底用的是同一个方向的变频,还是相反方向的变频?