目录
先做总结: s ( t ) = A ( t ) cos ( ω c t + ϕ ( t ) ) s(t) = A(t) \cos(\omega_c t + \phi(t)) s(t)=A(t)cos(ωct+ϕ(t)) s ( t ) = [ A ( t ) cos ( ϕ ( t ) ) ] ⏟ I ( t ) cos ( ω c t ) − [ A ( t ) sin ( ϕ ( t ) ) ] ⏟ Q ( t ) sin ( ω c t ) s(t) = \underbrace{[A(t)\cos(\phi(t))]}_{I(t)} \cos(\omega_c t) - \underbrace{[A(t)\sin(\phi(t))]}_{Q(t)} \sin(\omega_c t) s(t)=I(t) [A(t)cos(ϕ(t))]cos(ωct)−Q(t) [A(t)sin(ϕ(t))]sin(ωct) s ( t ) = I ( t ) cos ( ω c t ) − Q ( t ) sin ( ω c t ) s(t) = I(t)\cos(\omega_c t) - Q(t)\sin(\omega_c t) s(t)=I(t)cos(ωct)−Q(t)sin(ωct) A ( t ) = I ( t ) 2 + Q ( t ) 2 A(t) = \sqrt{I(t)^2 + Q(t)^2} A(t)=I(t)2+Q(t)2 ϕ ( t ) = atan2 ( Q ( t ) , I ( t ) ) \phi(t) = \text{atan2}(Q(t), I(t)) ϕ(t)=atan2(Q(t),I(t))
一、为什么必须使用IQ信号?
使用IQ信号是必要的,因为它以极其高效的方式解决了三个根本性问题:
1. 问题一:如何同时传输振幅和相位?
- 解决:现代通信(如QPSK, 16-QAM)不仅仅靠改变振幅(AM)或频率(FM)来传输数据,而是通过同时改变振幅和相位来在同一时刻打包更多的数据。
- IQ信号在二维平面(I为X轴,Q为Y轴)上的一个点 ( I , Q ) (I, Q) (I,Q),可以完美地用一个向量来表示。这个向量的长度就是信号的瞬时振幅,向量的角度就是信号的瞬时相位。
- 这就是“星座图(Constellation Diagram)”的来源。

2. 问题二:如何处理“镜像频率”?
- 在传统的“超外差”接收机中,当将信号(如2.0MHz)混频到中频(如0.5MHz)时,如果用1.5MHz本振,一个在“镜像”位置(如-1.0MHz,或说1.0MHz的另一个边带)的信号也会被同时混频到0.5MHz,造成干扰。
- 解决:IQ解调(也称“零中频”或“直接变频”)通过使用两个正交的混频器( cos \cos cos 和 sin \sin sin),创建了一个复数信号 I ( t ) + j Q ( t ) I(t) + jQ(t) I(t)+jQ(t)。
- 在数学上,复数信号的频谱是单边的(只存在正频率或负频率)。这从根本上消除了镜像频率问题。
3. 问题三:如何用“慢”的数字芯片处理“快”的射频信号?
- 解决:根据奈奎斯特定理,要直接用ADC采样一个2.4GHz的Wi-Fi信号,需要一个至少4.8 Gsps(每秒采样48亿次)的ADC,这非常昂贵且困难。
- 使用IQ解调,我们将2.4GHz的信号直接混频到基带(0 Hz)。信号的“信息”现在包含在两个慢速的I和Q信号中(例如,带宽仅为20MHz)。
- 这样只需要两个慢速的ADC(例如,每个40 Msps)来分别采样I和Q信号即可。这使得使用低成本的DSP和FPGA进行处理成为可能,这也是**软件定义无线电(SDR)**的核心原理。
二、 数学推导:IQ正交调制与解调
1. 信号的调制(调制:从IQ到RF)
从最通用的带通(射频)信号 s ( t ) s(t) s(t) 出发,它围绕载波频率 f c f_c fc(角频率 ω c = 2 π f c \omega_c = 2\pi f_c ωc=2πfc)振荡。其振幅 A ( t ) A(t) A(t) 和相位 ϕ ( t ) \phi(t) ϕ(t) 都可以随时间 t t t 变化:
s ( t ) = A ( t ) cos ( ω c t + ϕ ( t ) ) s(t) = A(t) \cos(\omega_c t + \phi(t)) s(t)=A(t)cos(ωct+ϕ(t))
步骤1:使用三角恒等式展开
把
s
(
t
)
s(t)
s(t)展开得到:
s ( t ) = A ( t ) [ cos ( ω c t ) cos ( ϕ ( t ) ) − sin ( ω c t ) sin ( ϕ ( t ) ) ] s(t) = A(t) \left[ \cos(\omega_c t)\cos(\phi(t)) - \sin(\omega_c t)\sin(\phi(t)) \right] s(t)=A(t)[cos(ωct)cos(ϕ(t))−sin(ωct)sin(ϕ(t))]
步骤2:重新组合
将随时间慢速变化的部分(信息)和高速振荡的载波分开:
s ( t ) = [ A ( t ) cos ( ϕ ( t ) ) ] ⏟ I ( t ) cos ( ω c t ) − [ A ( t ) sin ( ϕ ( t ) ) ] ⏟ Q ( t ) sin ( ω c t ) s(t) = \underbrace{[A(t)\cos(\phi(t))]}_{I(t)} \cos(\omega_c t) - \underbrace{[A(t)\sin(\phi(t))]}_{Q(t)} \sin(\omega_c t) s(t)=I(t) [A(t)cos(ϕ(t))]cos(ωct)−Q(t) [A(t)sin(ϕ(t))]sin(ωct)
步骤3:定义I和Q
定义这两个慢速变化的基带信号:
- I ( t ) = A ( t ) cos ( ϕ ( t ) ) I(t) = A(t)\cos(\phi(t)) I(t)=A(t)cos(ϕ(t)) (同相分量)
- Q ( t ) = A ( t ) sin ( ϕ ( t ) ) Q(t) = A(t)\sin(\phi(t)) Q(t)=A(t)sin(ϕ(t)) (正交分量)
最终的调制方程:
将
I
(
t
)
I(t)
I(t) 和
Q
(
t
)
Q(t)
Q(t) 这两个基带信号“搭载”到正交载波上,然后组合成一个射频信号:
s ( t ) = I ( t ) cos ( ω c t ) − Q ( t ) sin ( ω c t ) s(t) = I(t)\cos(\omega_c t) - Q(t)\sin(\omega_c t) s(t)=I(t)cos(ωct)−Q(t)sin(ωct)
2. 信号的解调(接收:从RF到IQ)
现在反过来,我们收到了 s ( t ) s(t) s(t),如何从中恢复出 I ( t ) I(t) I(t) 和 Q ( t ) Q(t) Q(t)?
目标:恢复
I
(
t
)
I(t)
I(t)
将收到的信号
s
(
t
)
s(t)
s(t) 乘以同相的本地载波
cos
(
ω
c
t
)
\cos(\omega_c t)
cos(ωct)。
v I ( t ) = s ( t ) ⋅ cos ( ω c t ) v_I(t) = s(t) \cdot \cos(\omega_c t) vI(t)=s(t)⋅cos(ωct)
v I ( t ) = [ I ( t ) cos ( ω c t ) − Q ( t ) sin ( ω c t ) ] ⋅ cos ( ω c t ) v_I(t) = \left[ I(t)\cos(\omega_c t) - Q(t)\sin(\omega_c t) \right] \cdot \cos(\omega_c t) vI(t)=[I(t)cos(ωct)−Q(t)sin(ωct)]⋅cos(ωct)
v I ( t ) = I ( t ) cos 2 ( ω c t ) − Q ( t ) sin ( ω c t ) cos ( ω c t ) v_I(t) = I(t)\cos^2(\omega_c t) - Q(t)\sin(\omega_c t)\cos(\omega_c t) vI(t)=I(t)cos2(ωct)−Q(t)sin(ωct)cos(ωct)
使用三角恒等式:
- 2 cos 2 ( A ) = 1 + cos ( 2 A ) 2\cos^2(A) = 1 + \cos(2A) 2cos2(A)=1+cos(2A)
- 2 sin ( A ) cos ( A ) = sin ( 2 A ) 2\sin(A)\cos(A) = \sin(2A) 2sin(A)cos(A)=sin(2A)
v I ( t ) = 1 2 I ( t ) [ 1 + cos ( 2 ω c t ) ] − 1 2 Q ( t ) [ sin ( 2 ω c t ) ] v_I(t) = \frac{1}{2}I(t) \left[ 1 + \cos(2\omega_c t) \right] - \frac{1}{2}Q(t) \left[ \sin(2\omega_c t) \right] vI(t)=21I(t)[1+cos(2ωct)]−21Q(t)[sin(2ωct)]
v I ( t ) = 1 2 I ( t ) ⏟ 基带信号 + 1 2 I ( t ) cos ( 2 ω c t ) − 1 2 Q ( t ) sin ( 2 ω c t ) ⏟ 高频信号 ( 2 f c ) v_I(t) = \underbrace{\frac{1}{2}I(t)}_{\text{基带信号}} + \underbrace{\frac{1}{2}I(t)\cos(2\omega_c t) - \frac{1}{2}Q(t)\sin(2\omega_c t)}_{\text{高频信号 ($2f_c$)}} vI(t)=基带信号 21I(t)+高频信号 (2fc) 21I(t)cos(2ωct)−21Q(t)sin(2ωct)
最后,通过一个低通滤波器(LPF)。LPF会滤除所有在两倍载波频率( 2 f c 2f_c 2fc)附近的高频分量,只留下基带信号 I ( t ) I(t) I(t)。
目标:恢复
Q
(
t
)
Q(t)
Q(t)
我们将收到的信号
s
(
t
)
s(t)
s(t) 乘以正交的本地载波
−
sin
(
ω
c
t
)
-\sin(\omega_c t)
−sin(ωct)。
v Q ( t ) = s ( t ) ⋅ [ − sin ( ω c t ) ] v_Q(t) = s(t) \cdot [-\sin(\omega_c t)] vQ(t)=s(t)⋅[−sin(ωct)]
v Q ( t ) = [ I ( t ) cos ( ω c t ) − Q ( t ) sin ( ω c t ) ] ⋅ [ − sin ( ω c t ) ] v_Q(t) = \left[ I(t)\cos(\omega_c t) - Q(t)\sin(\omega_c t) \right] \cdot [-\sin(\omega_c t)] vQ(t)=[I(t)cos(ωct)−Q(t)sin(ωct)]⋅[−sin(ωct)]
v Q ( t ) = − I ( t ) cos ( ω c t ) sin ( ω c t ) + Q ( t ) sin 2 ( ω c t ) v_Q(t) = -I(t)\cos(\omega_c t)\sin(\omega_c t) + Q(t)\sin^2(\omega_c t) vQ(t)=−I(t)cos(ωct)sin(ωct)+Q(t)sin2(ωct)
使用三角恒等式:
- 2 sin ( A ) cos ( A ) = sin ( 2 A ) 2\sin(A)\cos(A) = \sin(2A) 2sin(A)cos(A)=sin(2A)
- 2 sin 2 ( A ) = 1 − cos ( 2 A ) 2\sin^2(A) = 1 - \cos(2A) 2sin2(A)=1−cos(2A)
v Q ( t ) = − 1 2 I ( t ) [ sin ( 2 ω c t ) ] + 1 2 Q ( t ) [ 1 − cos ( 2 ω c t ) ] v_Q(t) = -\frac{1}{2}I(t) \left[ \sin(2\omega_c t) \right] + \frac{1}{2}Q(t) \left[ 1 - \cos(2\omega_c t) \right] vQ(t)=−21I(t)[sin(2ωct)]+21Q(t)[1−cos(2ωct)]
v Q ( t ) = 1 2 Q ( t ) ⏟ 基带信号 − 1 2 I ( t ) sin ( 2 ω c t ) − 1 2 Q ( t ) cos ( 2 ω c t ) ⏟ 高频信号 ( 2 f c ) v_Q(t) = \underbrace{\frac{1}{2}Q(t)}_{\text{基带信号}} - \underbrace{\frac{1}{2}I(t)\sin(2\omega_c t) - \frac{1}{2}Q(t)\cos(2\omega_c t)}_{\text{高频信号 ($2f_c$)}} vQ(t)=基带信号 21Q(t)−高频信号 (2fc) 21I(t)sin(2ωct)−21Q(t)cos(2ωct)
同样,通过一个低通滤波器(LPF),我们滤除了所有高频分量,只留下了基带信号 Q ( t ) Q(t) Q(t)。
结论:通过这个过程,将一个高速的RF信号 s ( t ) s(t) s(t),解调为了两个慢速的基带信号 I ( t ) I(t) I(t) 和 Q ( t ) Q(t) Q(t)。
三、 IQ信号的复数域理解
在数学上,IQ信号是描述一个真实射频(RF)信号的**“复包络”(Complex Envelope)**。
1. 欧拉公式
先回顾一下欧拉公式:
e
j
θ
=
cos
(
θ
)
+
j
sin
(
θ
)
e^{j\theta} = \cos(\theta) + j\sin(\theta)
ejθ=cos(θ)+jsin(θ)
这个公式告诉我们,一个复指数信号
e
j
θ
e^{j\theta}
ejθ,可以分解为一个同相(In-Phase)的余弦分量和一个正交(Quadrature)的正弦分量。一个高速振荡的复数载波可以写为:
c
(
t
)
=
e
j
ω
c
t
=
cos
(
ω
c
t
)
+
j
sin
(
ω
c
t
)
c(t) = e^{j\omega_c t} = \cos(\omega_c t) + j\sin(\omega_c t)
c(t)=ejωct=cos(ωct)+jsin(ωct)
2. 定义复包络(基带信号)
现在,把 I ( t ) I(t) I(t) 和 Q ( t ) Q(t) Q(t) 这两个慢速变化的基带信号组合成一个复数信号,称为“复包络”或“复基带信号”,我们称之为 b ( t ) b(t) b(t):
b ( t ) = I ( t ) + j Q ( t ) b(t) = I(t) + jQ(t) b(t)=I(t)+jQ(t)
- I ( t ) I(t) I(t) 是这个复数信号的实部。
- Q ( t ) Q(t) Q(t) 是这个复数信号的虚部。
3. 调制:复数乘法
在复数域中,“调制”这个操作被极大地简化了:它就是复包络信号 b ( t ) b(t) b(t) 与复数载波 c ( t ) c(t) c(t) 的乘法。
s
c
o
m
p
l
e
x
(
t
)
=
b
(
t
)
⋅
c
(
t
)
s_{complex}(t) = b(t) \cdot c(t)
scomplex(t)=b(t)⋅c(t)
s
c
o
m
p
l
e
x
(
t
)
=
(
I
(
t
)
+
j
Q
(
t
)
)
⋅
(
cos
(
ω
c
t
)
+
j
sin
(
ω
c
t
)
)
s_{complex}(t) = (I(t) + jQ(t)) \cdot (\cos(\omega_c t) + j\sin(\omega_c t))
scomplex(t)=(I(t)+jQ(t))⋅(cos(ωct)+jsin(ωct))
展开这个乘法:
s
c
o
m
p
l
e
x
(
t
)
=
[
I
(
t
)
cos
(
ω
c
t
)
−
Q
(
t
)
sin
(
ω
c
t
)
]
+
j
[
I
(
t
)
sin
(
ω
c
t
)
+
Q
(
t
)
cos
(
ω
c
t
)
]
s_{complex}(t) = \left[ I(t)\cos(\omega_c t) - Q(t)\sin(\omega_c t) \right] + j\left[ I(t)\sin(\omega_c t) + Q(t)\cos(\omega_c t) \right]
scomplex(t)=[I(t)cos(ωct)−Q(t)sin(ωct)]+j[I(t)sin(ωct)+Q(t)cos(ωct)]
4. 关键连接:回到真实世界
在真实世界中,我们无法生成或测量一个“复数”信号,我们所有的信号都是实信号。
真实世界的射频信号 s ( t ) s(t) s(t),就是这个 s c o m p l e x ( t ) s_{complex}(t) scomplex(t) 的实部
s
(
t
)
=
Re
{
s
c
o
m
p
l
e
x
(
t
)
}
s(t) = \text{Re}\{ s_{complex}(t) \}
s(t)=Re{scomplex(t)}
s
(
t
)
=
I
(
t
)
cos
(
ω
c
t
)
−
Q
(
t
)
sin
(
ω
c
t
)
s(t) = I(t)\cos(\omega_c t) - Q(t)\sin(\omega_c t)
s(t)=I(t)cos(ωct)−Q(t)sin(ωct)
这就回到了上一轮推导中对真实RF信号的定义。
总结:在复数域中理解,一个真实RF信号 s ( t ) s(t) s(t),是由一个复数基带信号 b ( t ) = I ( t ) + j Q ( t ) b(t) = I(t) + jQ(t) b(t)=I(t)+jQ(t) 调制到一个复数载波 e j ω c t e^{j\omega_c t} ejωct 上,然后取其“实部”所得到的。 I ( t ) I(t) I(t) 和 Q ( t ) Q(t) Q(t) 就是这个复数基带信号的实部和虚部。
四、 如何从IQ信号中读取幅度和相位
这部分在复数域中变得极其简单直观。我们的信息都包含在复包络 b ( t ) = I ( t ) + j Q ( t ) b(t) = I(t) + jQ(t) b(t)=I(t)+jQ(t) 中。在任何一个时间点 t t t,这个 b ( t ) b(t) b(t) 都是一个复数,我们可以在复平面(IQ平面)上将其表示为一个从原点 ( 0 , 0 ) (0,0) (0,0) 指向坐标点 ( I ( t ) , Q ( t ) ) (I(t), Q(t)) (I(t),Q(t)) 的向量。

我们所需要的瞬时振幅 A ( t ) A(t) A(t) 和瞬时相位 ϕ ( t ) \phi(t) ϕ(t),就是这个向量的极坐标表示。
1. 读取瞬时振幅 A ( t ) A(t) A(t)
瞬时振幅 A ( t ) A(t) A(t) 就是这个向量的长度(模)。根据勾股定理:
A ( t ) = ∣ b ( t ) ∣ = I ( t ) 2 + Q ( t ) 2 A(t) = |b(t)| = \sqrt{I(t)^2 + Q(t)^2} A(t)=∣b(t)∣=I(t)2+Q(t)2
验证:
根据之前的定义:
I
(
t
)
=
A
(
t
)
cos
(
ϕ
(
t
)
)
I(t) = A(t)\cos(\phi(t))
I(t)=A(t)cos(ϕ(t))
Q
(
t
)
=
A
(
t
)
sin
(
ϕ
(
t
)
)
Q(t) = A(t)\sin(\phi(t))
Q(t)=A(t)sin(ϕ(t))
那么
I
(
t
)
2
+
Q
(
t
)
2
=
A
(
t
)
2
(
cos
2
(
ϕ
(
t
)
)
+
sin
2
(
ϕ
(
t
)
)
)
I(t)^2 + Q(t)^2 = A(t)^2 \left( \cos^2(\phi(t)) + \sin^2(\phi(t)) \right)
I(t)2+Q(t)2=A(t)2(cos2(ϕ(t))+sin2(ϕ(t)))
=
A
(
t
)
2
= A(t)^2
=A(t)2
因此
A
(
t
)
=
I
(
t
)
2
+
Q
(
t
)
2
A(t) = \sqrt{I(t)^2 + Q(t)^2}
A(t)=I(t)2+Q(t)2。
2. 读取瞬时相位 ϕ ( t ) \phi(t) ϕ(t)
瞬时相位 ϕ ( t ) \phi(t) ϕ(t) 就是这个向量与I轴(实轴)的夹角(辐角)。
ϕ ( t ) = arg { b ( t ) } = atan2 ( Q ( t ) , I ( t ) ) \phi(t) = \arg\{b(t)\} = \text{atan2}(Q(t), I(t)) ϕ(t)=arg{b(t)}=atan2(Q(t),I(t))
为什么使用 atan2 ( Y , X ) \text{atan2}(Y, X) atan2(Y,X) 而不是 arctan ( Y / X ) \arctan(Y/X) arctan(Y/X)?
- arctan ( Q / I ) \arctan(Q/I) arctan(Q/I) 只能返回 ( − π / 2 , + π / 2 ) (-\pi/2, +\pi/2) (−π/2,+π/2)(即-90°到+90°)之间的角度,它无法区分第一象限和第三象限,也无法区分第二象限和第四象限。
- atan2 ( Q , I ) \text{atan2}(Q, I) atan2(Q,I) 是一个在编程和数学中更强大的函数,它通过同时考虑 Q ( t ) Q(t) Q(t) 和 I ( t ) I(t) I(t) 的符号,可以正确地返回 ( − π , + π ] (-\pi, +\pi] (−π,+π](即-180°到+180°)全四象限的角度,这对于相位解调至关重要。
总结:在FPGA或DSP中,在任何一个采样时刻 n n n,只需要从ADC(或其他模块)中获取当前的 I [ n ] I[n] I[n] 和 Q [ n ] Q[n] Q[n] 值,然后:
- 计算幅度: A [ n ] = I [ n ] 2 + Q [ n ] 2 A[n] = \sqrt{I[n]^2 + Q[n]^2} A[n]=I[n]2+Q[n]2 (在FPGA中通常使用CORDIC算法实现)
- 计算相位: ϕ [ n ] = atan2 ( Q [ n ] , I [ n ] ) \phi[n] = \text{atan2}(Q[n], I[n]) ϕ[n]=atan2(Q[n],I[n]) (同样使用CORDIC算法实现)
这样,就可以从两个基带信号中完美地重建出原始射频信号的全部信息。

4524

被折叠的 条评论
为什么被折叠?



