1. 引言
在无线通信系统中,尤其是以OFDM (Orthogonal Frequency Division Multiplexing)即正交频分复用技术为代表的具有固定帧结构的通信系统,基站和用户必须在空口上进行无线帧的时间同步,即用户(或者基站)确定基站(或用户者)所发送的无线帧的时域起点位置,从而接收端按照固有的帧结构可以区分出整个无线帧各个不同传输符号的位置,为后续的信号处理做准备。无线帧时域同步主要有基于CP和基于同步序列的两种方法 [1] ,前者易受噪声的干扰,后者的同步精度要高,且性能稳定。在基于同步序列的帧同步方法中,总体做法如下:把接收到的基带数据与本地存储的同步序列进行互相关,找到互相关器输出值的峰值位置,即对应着同步序列所对应的位置,再根据同步序列在整个无线帧中的位置,从而推出无线帧的起点 [1] 。
为了与无线帧的结构相匹配,同步序列所在OFDM符号在长度一般较大,LTE中规定的OFDM符号长度为2048点(不包括CP,Cyclic Prefix,即循环前缀),同时对于传输速率要求高的系统,采样率较高,基带数据吞吐量大。为了减少互相关算法的计算次数,降低复杂度,易于在硬件上实现,目前的帧同步算法多会对基带数据进行降采样,再进行互相关。这样降低了互相关器的数据输入速率,减小了互相关窗的大小,降低了复杂度,提高无线帧同步速度,能够在硬件上对同步序列进行实时检测,然而该同步算法损失了帧同步的精度,给系统造成了一定的误差,随着降采样的倍数越高,误差越大,帧同步效果越差。
为了解决上述降低采样率后做的帧同步(以下简称为粗同步)带来的同步位置不够精确的问题,同时避免冗余的计算带来极高的复杂度,本文提出了一种基于同步序列的无线通信低复杂高精度无线帧同步算法,相比于粗同步仅加入复杂度极低的模块即可在粗同步基础上,获得精确的帧同步位置。
本文算法基本按照LTE相关标准实现,LTE是非常成熟的OFDM系统,为人们所熟知,该系统的采样率为30.72 MHz,同步序列为PSS (Primary Synchronization Signal,主同步序列)序列,OFDM符号的大小为2048 (不包括CP的长度),每个无线帧为10 ms,包含10个子帧,每个子帧包含两个时隙,每个时隙中包含7个OFDM符号,每个无线帧包含一个同步符号,位于无线帧的起始位置 [2] [3] [4] 。
图1为无线帧格式,在LTE标准的帧格式中做了细节上的修改,在子帧0中两个时隙共14个OFDM符号,仅在第一个符号上添加了一个PSS符号,其余符号全部做补零操作。另外在其他子帧中,放置了上行导频、上行数据、补零、下行导频以及下行数据。
2. 低复杂高精度帧同步算法
本节介绍低复杂高精度帧同步算法的原理以及运行步骤,首先介绍PSS序列的生成过程,再介绍粗同步的原理,在此基础上提出低复杂高精度帧同步算法。
2.1. LTE中同步序列PSS
PSS序列是由长度为63点的ZC [3] 序列(Zadoff-Chu)组成,本身为频域信号,具有自相关性极高互相关性极低的特点,通过IFFT (Inverse Fast Fourier Transformation)转换到时域,所得时域信号也具有同样的特点,适用于加入到无线帧的头部,可用于无线帧同步使用。
(1)
公式(1)是ZC序列的生成函数,其中
为奇数,
是ZC序列的根指数,
,
可以是任何整数,一般为了简化,
。
ZC序列有以下特性:
1) ZC序列具有恒定振幅,经过IFFT也是恒定振幅的。这限制了峰均值比,降低了对数据信号的干扰。
2) 任何长度的ZC序列具有极好的循环自相关性。
实际中被选中作为PSS的ZC序列的根指数
为29、34、25,具体公式如下:
(2)
该63点频域复数信号对称地摆放在OFDM符号的中间,其中31号点舍弃,为OFDM信号的直流子载波。
图2为PSS符号的频域幅度图,横轴共2048个点,代表2048个子载波,图中只显示了部分点,纵坐标为PSS信号模值,为恒幅信号。图中可以清楚看到中间点的幅度为0,该点为直流子载波,舍弃不用,PSS频域信号只有62点模值为1,其余点全部为0。
图3取根指数为29的PSS序列经过2048点OFDM调制得到的时域波形的自相关图,图中可以看到在中间位置产生了一个极高的峰值,并且该峰值约为次高峰幅度的3倍,具有极好的自相关性质,完全可用作无线帧帧的搜索与定位。

Figure 2. Frequency domain signal of PSS
图2. PSS的频域信号

Figure 3. PSS sequence autocorrelation
图3. PSS序列自相关
2.2. 粗同步算法
本OFDM系统粗同步算法为基于PSS序列的帧定时算法,其中误差范围是(−8, +8)。该帧同步算法部署在FPGA上,为了降低复杂度,实际中2048点相关器实现过于复杂,而128点相关器可采用Fir滤波器(Finite Impulse Response,有限长单位冲激响应滤波器)较为方便地实现,对基带信号进行了16倍降采样,在同步精度上会产生一定的误差。算法流程见图4。
步骤一:由ADC采用获取速率为30.72 MHz的基带时域信号,通过低通滤波器,滤波器带宽为PSS信号带宽,从而获取纯净的PSS信号,有利于提高后续互相关器精度,对输出的基带信号进行1/16抽取,降低采样率;
步骤二:对降速后的基带信号输入Fir互相关器,与本地存储的固定PSS信号(已做过1/16抽取)互相关,并检测互相关器输出的峰值,确定峰值的位置,该位置代表同步位置;
步骤三:判断所获取的同步位置的有效性,即确定峰值的幅度是否足够大,峰值的位置是否与前一个无线帧的位置靠近,若通过检测即可得到粗同步位置;
以上是粗同步的算法流程,该算法对PSS信号的捕捉能力极高,同步速度快,采用128点相关器,极大降低了算法复杂度,减少硬件资源消耗,由于加了两个有效性判定的步骤,使该同步算法能达到极高的同步准确率。该算法的不足是同步位置有(−8, +8)的误差,会给系统带来一定的STO。
2.3. 高精度帧同步算法
本OFDM系统高精度帧同步算法基于2.2中的粗同步算法结果,再设计小范围内的2048点PSS序列相关器,找出(−8, +8)误差范围内无线帧的实际位置,即找出实际的无线帧同步位置与粗同步算法位置的偏差,该偏差加上粗同步位置即为实际无线帧同步位置。
图5为OFDM系统高精度帧同步算法的流程图,具体流程如下:
步骤一:对采样后的数据进行低通滤波,进行粗同步,得到粗同步位置;
步骤二:根据粗同步位置,存储PSS序列可能所在位置的全部基带数据,由于误差为(−N,+N),那么需要在粗同步位置向前N个点,粗同步确定的PSS序列结尾后N个点,以上两点范围内的数据全部存储进存储器,设PSS序列长度为L,则存储L + 2N + 1个点,如图6所示,这些点为基带数据经过低通滤波之后的数据点,但为进行降采样;
步骤三:用存储的序列与本地固定的PSS序列进行2N + 1次L点互相关,L取2048,并搜索峰值,得到峰值位置,相关器的输出序号是1~2N + 1,对应偏置为−N~N;

Figure 4. Block diagram of rough synchronization algorithm for OFDM system
图4. OFDM系统粗同步算法框图

Figure 5. The flow of high precision frame synchronization algorithm
图5. 高精度帧同步算法的流程
步骤四:把偏置与粗同步位置相加,即可得到精同步位置。
在以上精同步算法流程中,与粗同步相比,关键是引入了对部分数据进行2048点相关运算,该数据是根据粗同步得到的同步位置,在时域基带信号上截取的PSS可能存在的部分数据,其内部包含了整个的PSS信号,仅仅是PSS的具体位置不确定,需要进行2048点互相关进行更加精确的搜索,考虑到一个无线帧307,200个采样点中仅仅需要进行2N + 1 = 17次2048点相关,计算量较小,因而可以采用一个复数乘法器、两个累积起进行两层循环来实现,大大降低了硬件资源的消耗,同时能保证应有的精度。在理想环境下,本同步算法找到的同步位置即为实际的同步位置,不存在误差。
3. 高精度无线帧同步的LabVIEW FPGA实现
LabVIEW FPGA是美国国家仪器公司推出的一款图形化界面FPGA开发语言 [5] [6] ,具有开发简单、可读性强等特点,被广泛应用于该公司的FPGA系列芯片的开发中,本论文采用该语言进行帧同步算法的实现。粗同步模块是高精度无线帧同步算法的必须步骤,首先简要介绍粗同步模块的实现 [5] [6] [7] 。
图7为帧同步的低通降采样滤波器、128点互相关器、2048点相关器、数据存储流程,这里使用的低通降采样滤波器为Xilinx FIR IP核,低通滤波器的带宽为PSS信号的带宽,为0.5 MHz,目的是滤除

Figure 6. 2048 point correlator input data range
图6. 2048点相关器输入数据范围

Figure 7. Low pass sampling, cross correlation and other processes
图7. 低通降采样、互相关等流程
带外信号,降低干扰,降采样的实现为抽取器,每16个采样点,抽取一个点,输出到下一链路,同时该IP核可以实现滑动相乘相加运算,可以完美实现128点互相关器,实际发现若相关窗为512时,编译速度慢,且不能实现2048点互相关器,因为相关窗极大,FPGA资源本身已被耗尽。因而本论文同步算法不能直接使用2048点FIR互相关器实现,需要寻找复杂度低的实现方式。
图8主要采用Xilinx FIR IP核为实现基础的低通滤波器模块,其中输入数据为复数的基带时域信号,实部虚部分别为16 bits,打包成一个U32,把该数据输入Xilinx FIR低通滤波器,该滤波器的带宽为1 MHz,Xilinx FIR IP核的具体实现过程在文献 [8] 中有详细的步骤,滤除PSS信号之外的相对于同步过程无用的信号,由于滤波过程中会产生数据范围的增大,实部、虚部都变成了40 bits,因而需要对输出的数据进行数据类型转换,防止数据位数过大,在图8中的虚线框中,把输出的40 bits实部虚部分别取前16 bits,组成一个新的U32,输入到本地FIFO (First In First Out,先入先出缓冲器)中。之后从本地FIFO中读取滤波之后的数据,进行后续互相关等过程。这里采用本地FIFO起到缓冲数据的作用。
图9为Xilinx FIR IP核实现的128点互相关器。图中的输入信号为data_in,该信号是图8中滤波器的输出1/16降采样信号(由于1/16抽取器较为简单,虽然包含在流程中但是省略之),即为时域基带信号。图中位于上方的互相关器内部系数为1/16倍抽取后的本地PSS时域信号的实部,而对应的下方互相关器内部系数为1/16倍抽取后的本地PSS时域信号的虚部,二者同时对输入基带信号进行相关计算,这里两个实数相关器分别对输入信号的实部和虚部进行相关,合并这4个输出,得到一个复数相关器,如图中红色虚线框部分,具体128点互相关原理如下公式(3)所示:
(3)
公式(3)中
为互相关计算的最终相关数值,
表示本地PSS序列第
点的实部,
表示本地PSS序列第
点的虚部,
表示第
点的时域PSS信号的实部,
表示第
点的时域PSS信号的虚部,这些信号都是经过1/16倍降采样的,公式(3)中字体稍大的
为虚数单位,式中第三行有4个实数相关计算,需要采用4个实数相关器来实现,注意到前两个相关是用
,分别与基带时域信号进行的相关计算,因而可以把Xilinx FIR相关器配置成双路输入,把基带信号的实部和虚部同时输入到该相关器中,输出的数据只需要把虚部添加一个负号即可。同理,对于式中第三行后两个相关计算也可以集成到一个双路输入的实数相关器中,这样降低了硬件资源的开销。
图10为2048点互相关器的实现,互相关器的数据来源是两块memory,一块存储的数据是固定的2048点PSS时域信号,另一块存储的是实时输入的低通滤波之后的基带数据,来自于图7中的数据存储过程。在程序的开始,第一层循环的循环次数为50,含义为2048点互相关器的滑动窗共计移动50次(实际中不需要一定取上文中提到的17次,50次可以在更大范围内寻找PSS,健壮性更佳),第二层循环的循环次数为2048,代表滑动窗的大小为2048,即每一次互相关共有2048对复数进行相乘相加,同时,这两次循环中的计数器可用来生成两块memory的地址。可以看到,这里进行了2次循环,每一个数据点都需要读取多次,需要采用memory做存储器,可以重复读取数据,而不方便采用FIFO结构。从两块memory中取出的数据进行复数相乘,这里只需要使用一个复数乘法器即可完成,在乘法器之后连接两个

Figure 10. The realization of 2048 cross-correlation
图10. 2048点互相关器的实现
累加器,分别对乘法器输出复数的实部和虚部进行累加,每做完一次2048点累加需要把累加和存入FIFO中,后续步骤为峰值搜索。
现在计算2048点互相关的复杂度。一个10 ms的无线帧共计进行一次图10的过程,共计50 × 2048 = 102,400个时钟周期,在FPGA实现中,该循环使用200 MHz时钟,因而10 ms有2,000,000个时钟周期,所以工作周期占时钟总周期的5.12%,图10过程完全可以在一个无线帧的时间内执行完成,可以做到实时计算,因而精同步过程是实时进行的。
图11为对2048点互相关器的输出信号进行峰值检测过程。首先从FIFO中读取互相关后的数据,并对该数值进行求模运算,图中的求模计算模块是LabVIEW FPGA中集成的模块,输入复数的实部、虚部以及控制信号(标志输入信号是否有效),经过运算,延迟一定的周期,即可得到复数的幅值、相位以及控制信号(标志输出信号是否有效)。得到模值之后,对模值进行峰值搜索,搜索的过程为:比较当前输入的模值与前一次模值的大小,若当前输入值大,则保存当前值及其index (输入值的位置,范围是0到49,下同),若前一次模值大,则不做操作,此时寄存器中依然存储的是上一次模值和对应的index,该过程每执行50次为一次循环,输出峰值的index和控制信号(表示输出是否有效)。同时每进行完50次比较之后,对寄存器初始化:记录输入模值位置的index置0、保存模值的寄存器置0、保存模值index的寄存器置0,从而可以继续进行下一次循环。
本模块输出峰值的index,范围是0到49,表示图10中的50次2048点互相关器输出值的峰值的具体位置,转换偏置为−25到25,与粗同步位置相加即可得到精同步位置。
图12为峰值搜索与有效性判定模块,其中粗同步模块的峰值搜索与图11所示峰值搜索模块类似,有效性判定即判定粗同步结果的有效性,首先比较峰值的幅度是否足够大,再比较峰值的位置与前一个无线帧的位置是否接近,因为每一个无线帧的同步位置基本不会变化的(若基站与用户的时钟有偏差,则同步位置会缓慢变化)。流程首先寻找128点互相关后的峰值,并把得到的峰值和触发脉冲发送给有效性判定模块,启动对粗同步结果的有效性判定,若通过有效性判定模块,则对Sync Successful?信号置1,表明粗同步成功,同时输出粗同步位置。另一方面,对2048点互相关输出结果进行峰值搜索,得到PSS信号与粗同步位置精确的偏置,并把该偏置与粗同步位置相加,得到最终的精同步位置Start of sync accutate信号。至此,

Figure 12. Peak search and validity determination of synchronization results
图12. 峰值搜索与同步结果有效性判定

Figure 13. The successful operation of this algorithm in the MIMO-OFDM system
图13. 本算法在MIMO-OFDM系统中的成功运行
同步过程完成,输出Sync Successful?信号和Start of sync accutate信号。
4. 应用案例
本文所述低复杂高精度无线帧同步算法已在MIMO-OFDM系统 [9] 中成功应用,并展现出了优良的效果,系统同步稳定,精度高,为OFDM系统后续的信号处理提供了必要条件。
图13为本算法在MIMO-OFDM系统中的成功运行效果图,在图中用虚线框标注了各个模块,含义如下:模块1,为基站端的信号处理服务器,负责信道估计和信道均衡;模块2,为软件无线电USRP RIO模块组,负责基带数据的采样,本低复杂高精度算法即在该模块上运行,用于捕获天线接收信号中的无线帧同步信号,确定其精确位置;模块3,为基站端的天线阵列,包括16根接收天线;模块4,为用户端的发射天线,共计6根发射天线,代表6个单用户;模块5,为用户端的软件无线电USRP RIO [10] 模块组,负责产生用户基带信号,并发射到空口;模块6,为摄像头模块,用户获取视频信号,并打包发送到软件无线电模块,发送到基站端。
图13为6 × 16 MIMO-OFDM系统,用户端发射信号符合LTE帧格式(实际做了细节修改,参见图1),6个用户同步地发送包含PSS信号的OFDM信号,基站端每根天线都接收到基带数据,并进行本论文所述低复杂高精度帧同步算法的处理,找到精确的同步位置,从而基站端可以进行后续信号处理流程。从模块1中可以看到显示器中播放着视频,此视频即为用户端发送的视频,表明该系统能够稳定正确运行。
5. 结论
本文提出了一种低复杂度的高精度OFDM系统无线帧同步算法,并使用LabVIEW FPGA语言实现该算法,该算法在粗同步的基础上仅添加一个复数乘法器和两个累加器等逻辑模块,复杂度极低,精确度高,并在实际的MIMO-OFDM系统中部署了该算法,运行效果良好,可以扩展到更多的OFDM系统中。