LoRa 基于 Chirp Spectrum Spreading(CSS)技术对 Symbol 进行调制,其中 Chirp 是 LoRa 物理层的重要概念。
考虑我们有一段可用的带宽 BW, 以及设定的 Symbol Duration T T T ,即一个 Symbol 的传输时间。Chirp 可以看做一个在此带宽上的扫频,如下图所示。
其中红色直线表示 Chirp 信号瞬时频率与实践的关系,其值域是 [ − B W ω , B W ω ] [-\frac{BW}{\omega},\frac{BW}{\omega}] [−ωBW,ωBW] ,定义域在( 0 , T 0,T 0,T )上。绿色曲线则反映了其在时域上的部分表示,可以看到频率绝对值高的地方,两个波峰距离更短,这是从直观上对 Chirp 的理解。
我们可以写出 Chirp 信号瞬时频率与时间
t
t
t 的关系,即
f
c
h
i
r
p
(
t
)
=
−
B
W
2
+
B
W
T
t
f_{chirp}(t)=-\frac{BW}{2}+\frac{BW}{T}t
fchirp(t)=−2BW+TBWt
实际上,对于一个复函数
y
(
t
)
=
e
j
ϕ
(
t
)
y(t) = e^{j\phi(t)}
y(t)=ejϕ(t) 为虚数单位,即 -1 的平方根,其瞬时频率的表达式为
f
y
(
t
)
=
ϕ
′
(
t
)
2
π
f_y(t) = \frac{\phi'(t)}{2\pi}
fy(t)=2πϕ′(t)
因此了得到 Chirp 信号在时域上的表达式,我们可以求出
ϕ
(
t
)
\phi(t)
ϕ(t),即
ϕ
(
t
)
=
∫
f
c
h
i
r
p
(
t
)
d
t
=
2
π
t
(
−
B
W
2
+
B
W
2
T
t
)
\begin{aligned} \phi(t) & = \int f_{chirp}(t) dt \\ & = 2\pi t (-\frac{BW}{2} + \frac{BW}{2T} t) \end{aligned}
ϕ(t)=∫fchirp(t)dt=2πt(−2BW+2TBWt)
于是我们就得到了 Chirp 在时域上复信号
y
u
p
c
h
i
r
p
(
t
)
=
e
j
2
π
t
(
−
B
W
2
+
B
W
2
T
t
)
y_{upchirp}(t) = e^{j2\pi t (-\frac{BW}{2} + \frac{BW}{2T} t)}
yupchirp(t)=ej2πt(−2BW+2TBWt)
我们称上述 Chirp 信号为一个标准 upchirp,类似的我们可以构造标准 downchirp,写作
y
d
o
w
n
c
h
i
r
p
(
t
)
=
e
j
2
π
t
(
B
W
2
−
B
W
2
T
t
)
y_{downchirp}(t) = e^{j2\pi t (\frac{BW}{2} - \frac{BW}{2T} t)}
ydownchirp(t)=ej2πt(2BW−2TBWt)
如果我们将标准 upchirp 与标准 downchirp 做乘法,即
s
(
t
)
=
y
u
p
c
h
i
r
p
(
t
)
y
d
o
w
n
c
h
i
r
p
(
t
)
=
e
j
2
π
t
(
−
B
W
2
+
B
W
2
T
t
)
e
j
2
π
t
(
B
W
2
−
B
W
2
T
t
)
=
e
0
=
1
\begin{aligned} s(t) & = y_{upchirp}(t)y_{downchirp}(t) \\ & = e^{j2\pi t (-\frac{BW}{2} + \frac{BW}{2T} t)}e^{j2\pi t (\frac{BW}{2} - \frac{BW}{2T} t)} \\ & = e^0 \\ & = 1 \end{aligned}
s(t)=yupchirp(t)ydownchirp(t)=ej2πt(−2BW+2TBWt)ej2πt(2BW−2TBWt)=e0=1
有时我们将 upchirp 写作
C
=
e
j
2
π
t
(
−
B
W
2
+
B
W
2
T
t
)
C = e^{j2\pi t (-\frac{BW}{2} + \frac{BW}{2T} t)}
C=ej2πt(−2BW+2TBWt)
而 downchirp 写作
C
−
1
=
e
j
2
π
t
(
B
W
2
−
B
W
2
T
t
)
C^{-1} = e^{j2\pi t (\frac{BW}{2} - \frac{BW}{2T} t)}
C−1=ej2πt(2BW−2TBWt)
这符合大多数公理系统的逆运算,即满足
C
C
−
1
=
1
CC^{-1} = 1
CC−1=1。
LoRa 基于 upchirp 来进行 Symbol 调制,其方法是对一个标准 upchirp 进行循环移动,例如下图所示,右侧是一个标准 upchirp,左侧相当于是将标准 upchirp 从某处切开,并将切开的两部分交换得到的。
通过这个“切口”的位置,我们可以调制不同的 Symbol。例如我们要调制一个 Symbol
n
n
n, 满足
n
n
n 为整数且
n
∈
[
0
,
255
]
n \in [0,255]
n∈[0,255],则得到的 Chirp 表达式为
y
n
(
t
)
=
e
j
2
π
t
(
−
B
W
2
+
B
W
2
T
t
+
n
T
)
=
e
j
2
π
n
T
t
C
\begin{aligned} y_n(t) & = e^{j2\pi t (-\frac{BW}{2} + \frac{BW}{2T} t + \frac{n}{T})} \\ & = e^{j2\pi\frac{n}{T}t}C \end{aligned}
yn(t)=ej2πt(−2BW+2TBWt+Tn)=ej2πTntC
该信号由发送端调制并基于某个载波发送,接收端接收到这一信号,进行 dechirp,如下:
s
n
(
t
)
=
y
n
(
t
)
C
−
1
=
e
j
2
π
n
T
t
\begin{aligned} s_n(t) & = y_n(t)C^{-1} \\ & = e^{j2\pi\frac{n}{T}t} \end{aligned}
sn(t)=yn(t)C−1=ej2πTnt
不难发现,dechirp 后的信号仅包含一个恒定的频率,对于这个频率,傅里叶变换(FFT)可以帮助我们找到它。考虑采样率刚好为
B
W
BW
BW, 则一个Symbol 将包含
N
N
N个采样点,经过傅里叶变换得到
N
N
N个 FFT bins,满足
F
(
k
)
=
F
(
s
n
(
t
)
)
=
{
2
S
F
,
k
=
n
0
,
o
t
h
e
r
w
i
s
e
F(k) = \mathbf{F}(s_n(t))= \begin{cases}2^{SF}, k = n \\ 0, otherwise \end{cases}
F(k)=F(sn(t))={2SF,k=n0,otherwise
也就是说,傅里叶变换将会在第
n
n
n 个 bin 上得到峰值,其余为 0,且
n
n
n 恰好就是调制的Symbol。