本文将详细介绍IQ Tool中的Frequency Switching模块的使用方法和实现原理,具体代码细节参考iqfsk.m。
1. 参数设置
该模块可配参数如下:
序号 | 名称 | 含义 |
---|---|---|
1 | Sample Rate(Hz) | 采样率 |
2 | # of samples | 样点数,目前不支持设置 |
3 | List of frequencies | 频率序列 |
4 | Duration(per tone) | 每种频率信号的持续时间 |
除了上述参数外,还有一些和其他模块相似的参数,如是否进行预失真处理、通道选择等,这边不再赘述。
2. 波形生成原理
该模块生成的信号表达式为
s
(
t
)
=
∑
i
g
(
t
−
i
T
)
e
j
2
π
f
i
t
(1)
s(t)=\sum_i g(t-iT)e^{j2\pi f_i t} \tag{1}
s(t)=i∑g(t−iT)ej2πfit(1)
在上面的表达式中,
T
T
T为每个频率信号的持续时间(即设置参数中的Duration),
g
(
t
)
g(t)
g(t)仅在
t
∈
[
0
,
T
]
t\in [0, T]
t∈[0,T]的时段内为1,其他时段为0的矩形脉冲。设系统采样率为
f
s
f_s
fs,则将上式离散化为
s
[
n
/
f
s
]
=
∑
i
g
[
n
/
f
s
−
i
M
]
e
j
2
π
f
i
n
/
f
s
(2)
s[n/f_s]=\sum_i g[n/f_s-iM]e^{j2\pi f_i n /f_s}\tag{2}
s[n/fs]=i∑g[n/fs−iM]ej2πfin/fs(2)
为生成上面的信号,最直观的做法是分段处理,每种频率的信号分别生成,然后再拼成一个整体的信号。为了保证相位连续性,需结合前段信号的相位情况对当前段信号的相位进行调整,整体过程会比较麻烦。为此,IQ tool采用了另一种实现方法,本质上实现了下面的信号
s
(
t
)
=
e
j
2
π
∫
f
i
t
d
t
s(t) = e^{j2\pi \int f_i tdt}
s(t)=ej2π∫fitdt
该方法实现的逻辑是,要求生成的信号本质上是多个不同频率信号的拼接,可以将不同频率转化为不同的相位变化情况。由于这样做,当前时刻的相位是在之前相位的基础上计算的(积分运算的原理),所以可以保证相位的连续性。(注:有些人可能不理解,为什么相位是频率和时间乘积的积分。这是因为在
Δ
t
\Delta t
Δt时间内,频率为
f
0
f_0
f0的信号的相位变化量是
Δ
θ
=
f
0
Δ
t
\Delta \theta =f_0 \Delta t
Δθ=f0Δt,只有考虑上初相
θ
0
\theta_0
θ0,才能计算得到当前的瞬时相位为
θ
0
+
f
0
Δ
t
\theta_0 + f_0\Delta t
θ0+f0Δt)
3. 结果示意图
按图1所示参数配置,得到如下波形结果