一、前言
在《利用DFT/FFT对序列位移—非整数时的陷阱》中,我们得出结论:当存在频谱泄露或频谱折叠时,无法利用FFT实现“非整数采样点”的时域序列位移。
幸运的是,对于OFDM信号,利用“其有效符号部分的子载波正交性”和“循环前缀”能够实现“精准”的非整数点时移,本文将阐述具体的方法。
二、OFDM信号模型
不妨将基带OFDM信号中第
l
l
l个符号记为
x
l
(
t
)
x_l(t)
xl(t),则有,
x
l
(
t
)
=
∑
k
=
0
K
−
1
s
l
,
k
e
j
2
π
k
t
T
u
,
0
≤
t
≤
T
g
+
T
u
x_l(t)=\sum_{k=0}^{K-1} s_{l,k}e^{\frac{j2\pi kt}{T_u}}, 0 \leq t \leq T_g+T_u
xl(t)=k=0∑K−1sl,keTuj2πkt,0≤t≤Tg+Tu
其中,
l
l
l为符号索引,
K
K
K为子载波总数,
k
k
k为子载波索引;
s
l
,
k
s_{l,k}
sl,k为第
l
l
l个符号中第
k
k
k个子载波所携带的通信数据;
T
g
T_g
Tg为循环前缀持续时间,
T
u
T_u
Tu为有效符号部分的持续时间。显然,
0
≤
t
≤
T
g
0 \leq t \leq T_g
0≤t≤Tg与
T
u
≤
t
≤
T
u
+
T
g
T_u \leq t \leq T_u + T_g
Tu≤t≤Tu+Tg对应的时域波形相同,故将
0
≤
t
≤
T
g
0 \leq t \leq T_g
0≤t≤Tg对应的时域波形称之为“循环前缀”。
值得注意的是,由于循环前缀的存在,从
x
l
(
t
)
x_l(t)
xl(t)中任取长度为
T
u
T_u
Tu的时域波形
x
^
l
(
t
)
\hat{x}_l(t)
x^l(t),则
x
^
l
(
t
)
\hat{x}_l(t)
x^l(t)中各个子载波仍然满足“正交性”,即不会产生频谱泄露。
三、OFDM信号的非整数点时移
以采样率
f
s
f_s
fs对
x
l
(
t
)
x_l(t)
xl(t)进行采样,满足
n
=
t
f
s
∈
Z
n = tf_s \in \mathbb{Z}
n=tfs∈Z,则有,
x
l
[
n
]
=
x
l
(
n
/
f
s
)
=
∑
k
=
0
K
−
1
s
l
,
k
e
j
2
π
k
n
N
u
,
0
≤
t
≤
N
g
+
N
u
−
1
\begin{aligned} x_l[n] &= x_l(n/f_s) \\ &= \sum_{k=0}^{K-1} s_{l,k}e^{\frac{j2\pi kn}{N_u}}, 0 \leq t \leq N_g+N_u-1 \end{aligned}
xl[n]=xl(n/fs)=k=0∑K−1sl,keNuj2πkn,0≤t≤Ng+Nu−1
其中,
N
u
=
T
u
f
s
,
N
g
=
T
g
f
s
N_u = T_u f_s,N_g=T_g f_s
Nu=Tufs,Ng=Tgfs。假设我们需要对
x
l
[
n
]
x_l[n]
xl[n]进行
n
0
n_0
n0点的位移,满足
n
0
=
n
i
n
t
+
n
d
e
c
n_0 = n_{int} + n_{dec}
n0=nint+ndec;其中,
n
i
n
t
∈
Z
,
n
d
e
c
∈
(
−
0.5
,
0.5
]
n_{int} \in \mathbb{Z},n_{dec} \in (-0.5,0.5]
nint∈Z,ndec∈(−0.5,0.5];则OFDM信号的非整数点时移可以划分为3个步骤:
(1) 利用FFT对OFDM符号的有效符号部分进行
n
d
e
c
n_{dec}
ndec点的位移:
不妨令第
l
l
l个OFDM符号的“循环前缀”和“有效符号部分”分别为
x
l
,
g
[
n
]
x_{l,g}[n]
xl,g[n]和
x
l
,
u
[
n
]
x_{l,u}[n]
xl,u[n],则有,
x
l
,
g
[
n
]
=
x
l
[
n
]
,
0
≤
n
≤
N
g
−
1
x
l
,
u
[
n
]
=
x
l
[
n
]
,
N
g
≤
n
≤
N
g
+
N
u
−
1
\begin{aligned} x_{l,g}[n] &= x_l[n], 0 \leq n \leq N_g - 1 \\ x_{l,u}[n] &= x_l[n], N_g \leq n \leq N_g + N_u - 1 \end{aligned}
xl,g[n]xl,u[n]=xl[n],0≤n≤Ng−1=xl[n],Ng≤n≤Ng+Nu−1
显然,易得,
x
l
,
u
[
n
−
n
d
e
c
]
=
∑
k
=
0
K
−
1
s
l
,
k
e
j
2
π
k
(
n
−
n
d
e
c
)
N
u
,
0
≤
n
≤
N
u
−
1
x_{l,u}\left[n-n_{dec}\right] = \sum_{k=0}^{K-1} s_{l,k}e^{\frac{j2\pi k (n-n_{dec}) }{N_u}}, 0 \leq n \leq N_u - 1
xl,u[n−ndec]=k=0∑K−1sl,keNuj2πk(n−ndec),0≤n≤Nu−1
综上,因为在
N
u
N_u
Nu点的FFT中,子载波的正交性没有破坏,因此可以直接利用FFT完成非整数点时移,即对
x
l
,
u
[
n
]
x_{l,u}[n]
xl,u[n]进行
n
d
e
c
n_{dec}
ndec点的位移。
(2) 计算进行
n
d
e
c
n_{dec}
ndec点位移后的循环前缀时域波形:
不妨令
y
l
[
n
]
=
x
l
[
n
−
n
d
e
c
]
y_l[n]=x_l[n-n_{dec}]
yl[n]=xl[n−ndec],则有,
y
l
[
n
]
=
y
l
(
n
f
s
)
=
x
l
[
n
−
n
d
e
c
]
=
x
l
(
n
−
n
d
e
c
f
s
)
y_l[n]=y_l\left(\frac{n}{f_s}\right)=x_l[n-n_{dec}]=x_l\left( \frac{n-n_{dec}}{f_s} \right)
yl[n]=yl(fsn)=xl[n−ndec]=xl(fsn−ndec)
a
)
a)
a):当
1
≤
n
≤
N
g
−
1
1 \leq n \leq N_g - 1
1≤n≤Ng−1时,
y
l
[
n
]
=
y
l
(
n
f
s
)
=
x
l
(
n
−
n
d
e
c
f
s
)
=
x
l
(
n
+
N
u
−
n
d
e
c
f
s
)
=
x
l
,
u
[
n
−
n
d
e
c
]
y_l[n] =y_l\left(\frac{n}{f_s}\right)=x_l\left( \frac{n-n_{dec}}{f_s} \right)=x_l\left( \frac{n+N_u-n_{dec}}{f_s} \right) = x_{l,u}\left[n-n_{dec}\right]
yl[n]=yl(fsn)=xl(fsn−ndec)=xl(fsn+Nu−ndec)=xl,u[n−ndec]
b
)
b)
b):当
n
=
0
n = 0
n=0时,
y
l
[
n
]
=
x
l
(
−
n
d
e
c
f
s
)
=
x
l
−
1
(
N
u
+
N
g
−
n
d
e
c
f
s
)
=
x
l
−
1
(
N
g
−
n
d
e
c
f
s
)
=
y
l
−
1
[
N
g
]
y_l[n] = x_l\left( \frac{-n_{dec}}{f_s} \right) = x_{l-1}\left( \frac{N_u+N_g-n_{dec}}{f_s} \right) = x_{l-1}\left( \frac{N_g-n_{dec}}{f_s} \right) = y_{l-1}[N_g]
yl[n]=xl(fs−ndec)=xl−1(fsNu+Ng−ndec)=xl−1(fsNg−ndec)=yl−1[Ng]
(3) 对整体信号波形进行
n
i
n
t
n_{int}
nint点的位移:
对于整数点的位移,可以通过时域平移的方式直接实现,在此不再赘述;最终,
z
l
[
n
]
=
y
l
[
n
−
n
i
n
t
]
z_l[n] = y_l\left[n-n_{int}\right]
zl[n]=yl[n−nint]为输出结果。