背景技术
码分多址系统中,相关计算经常用到,以TD-SCDMA为例,在小区搜索阶段接收数据要与32组64位的SYNC_DL码分别进行相关计算,目前一般采用FFT进行一种快速相关计算。
FFT计算快速相关的方法如下:
设终端接收到的数据为{r}=(r0,r1,…),第l组SYNC_DL码为 r0为接收的第1个数据片,r1为接收的第2个数据片,s0 (l)为第l组SYNC_DL码第1个码片,s1 (l)为第l组SYNC_DL码第2个码片,s63 (l)为第l组SYNC_DL码第64个码片。
(1)计算接收数据的FFT序列
{R}N=(R0,R1,…,RN-1)=FFT[{r}Δ,N]
N为一段数据的长度,假设为128,{R}N为待相关计算的数据{r}=(r0,r1,…rN-1)的FFT序列。
(2)把接收数据的FFT序列与补零后的SYNC_DL码的FFT序列共轭相乘
{S(l)}N为第l组SYNC_DL码的N长FFT序列,即先把SYNC_DL码后面补零到N长,{S(*(l)}N为{S(l)}N的共轭。
(3)计算{C(l)}N的反FFT变换
由于FFT的快速算法,以128长的数据与32组SYNC_DL计算为例,一个128长度序列的FFT计算需要64×log2128=64×7次的复数乘法和128×log2128=128×7次复数加法,共需要计算1+32+32=65次FFT计算(数据一次,SYNC DL 32次,还有IFFT 32次),现有技术的缺点就是:在现有的软件实现过程中,这一部分的计算量较大。
具体实施方式
结合本发明实施例进行详细说明,实数序列的FFT计算虽然可以直接把实数当成复数序列计算,但这样比较浪费资源。为了后面对本发明实施例描述的方便,先介绍一种计算实数序列的FFT的基本原理:
一个N点FFT同时计算两个N点实序列的FFT的方法:
设x1(n),x2(n)是彼此独立的两个N点实序列,且X1(k)=FFT[x1(n)],X2(k)=FFT[x2(n)],X1(k)和X2(k)分别为x1(n),x2(n)的FFT序列。
可通过一次FFT运算同时获得X1(k),X2(k)。算法如下:
首先将x1(n),x2(n)分别当作一复数序列x(n)的实部及虚部,令
x(n)=x1(n)+jx2(n)
通过FFT运算可获得x(n)的FFT值
X(k)=FFT[x1(n)]+jFFT[x2(n)]=X1(k)+jX2(k),X(k)为x(n)的FFT序列。利用离散付里叶变换的共轭对称性
X*(N-k)为序列X(k)的第N-k个元素的共轭,k为FFT变换后序列的索引值。
因此有了x(n)的FFT运算结果X(k),由上式即可得到x1(n),x2(n)的FFT序列X1(k)、X2(k)的值。
上述原理是信号处理的基本原理,证明略去。
码分多址系统中需要计算相关的PN序列(如SYNC_DL码)一般都是由一个实数的PN序列经过一个调制变换成复数PN序列,现有算法都是对复数序列进行FFT计算。然而由实数序列到复数序列的调制变换关系比较简单,因此可以先计算实数序列的FFT,然后再经过简单变换得到复数序列的FFT。
本发明的方案就是对码分多址系统中复数PN序列,计算相关时,先不计算实数PN序列经调制之后的复数PN序列,而是直接采用上述实数序列的FFT计算方法计算其FFT,然后找出实数PN序列的FFT序列和复数PN序列(实数PN序列对应调制之后的复数PN序列)的FFT序列之间的对应关系,再根据该对应关系,经过一个简单的变换求得对应调制之后的复数PN序列的FFT序列,从而达到减少计算量的目的。类似地,对于PN码的变换序列,也先不计算其变换序列,而是找出PN码的变换序列的FFT序列和PN序列的FFT序列之间的关系,达到减少计算量的目的。
本发明提供的第一实施例是的方法,方法流程如图1所示,下面为阐述本发明的方法,仍以TD-SCDMA系统中小区搜索精同步过程中接收一段长128chips的数据要与32组64位的SYNC_DL计算相关为例。
步骤101:终端在小区搜索阶段接收数据,并计算接收数据的FFT序列。
{R}N=(R0,R1,…,RN-1)=FFT[{r}Δ,N],{R}N为接收数据的FFT序列。
步骤102:确定实数PN序列s(n)的FFT序列S(k)和s(n)经QPSK调制之后的复数PN序列s′(n)的FFT序列S′(k)的对应关系。
3GPP TS25.223中给出调制之前的SYNC_DL码为s=(s1,s2,…,s64),调制之后的复数SYNC_DL码为s i=(j)i·si si∈{1,-1},i=1,..,64。而在求相关时,SYNC_DL码后要补上64个零,然后求128点FFT值,为了后面表述的方便,这里重新假设补零之后的SYNC_DL码在调制之前为s(n),n=0,1,......,N-1,N=128.经QPSK调制之后的数据为s′(n),s′(n)=(j)n+1s(n)。设序列s(n)的FFT序列为S(k),s′(n)的FFT序列为S′(k)。
其中k为FFT变换后序列的索引值,n为为FFT变换前序列的索引值。
只是一个优选实施例,本领域技术人员可以根据不同的调制由s(n)得到不同的s′(n),进而得到S(k)和S′(k)不同的对应关系,如s′(n)=(j)n+2s(n),则 证明和公式(2)类似。
步骤103:将两组实数PN序列s1(n)和s2(n)分别作为一组复数PN序列x(n)的实部及虚部进行FFT变换,得到两组实数PN序列s1(n)和s2(n)的FFT序列。
s(n)是一个实数序列即一组SYNC_DL码,这里我们设第一组SYNC_DL码为s1(n),第二组(也可以是非第一组的其它组)SYNC_DL码为s2(n),用前面介绍的求实数序列FFT的方法,可以一次计算两组SYNC_DL码s1(n)、s2(n)(其中s1(n)、s2(n)相当于前面介绍的求实数序列FFT的方法中的x1(n)、x2(n))的FFT值,其中一组当成实部,另一组当成虚部。x(n)=s1(n)+js2(n),s1(n)和s2(n)分别为两组SYNC_DL码QPSK调制之前的数据,求得x(n)的FFT变换为X(k)则
S1(k)和S2(k)分别为s1(n)、s2(n)的FFT变换序列。
步骤104:根据公式(2)和公式(3)得到对应的两组复数PN序列s1′(n)、s2′(n)的FFT变换序列S1′(k)、S2′(k)
把(2)和(3)组合起来后得到:
注:以上所有数据的寻址都是循环的,这在目前DSP上很容易实现。
步骤105:对{R}N分别与S1′(k)和S2′(k)进行相关计算,进一步确定接收信号的相关性。
因此采用本发明32组SYNC_DL码只需要计算16次FFT,一次FFT计算之后需经过(4)式的变换,即可得到两组复数SYNC_DL码的FFT。变换需要带来一些额外的计算量,但这种方法不再需要对原始SYNC_DL码实数序列进行调制,可节省32组SYNC_DL码的调制过程,这两者的计算量基本可以抵消。因此本发明总的大约可以节省16次FFT计算的运算量,对目前DSP处理方法大约可以节省3万多个cycles。这只是在一帧中节省的计算量,小区搜索一般需要多帧计算;另外后面的midamble计算相关时可采用相同的方法进一步节省计算量。
另外如果终端要在初始大频偏下进行小区搜索,需要给SYNC_DL预加一个频偏,然后计算多组SYNC_DL码(每组32个)与接收数据的相关值,计算量将大大增加,但如果选取合适的预加频偏,则可以减少计算量。举例如下:
设原始的SYNC_DL序列补零后为s(n),其FFT变换之后的序列为S(k),s″(n)为对应的预加频偏之后的值,其FFT变换之后的序列为S″(k)。
设f=10000Hz,则
这里仅是以 为例进行说明,作为公知常识本领域技术人员可知不同系统的s″(n)和s(n)会有不同的对应关系。本领域技术人员可以此重新确定S″(k)和S(k)的对应关系。
这说明预加10kHz之后的SYNC_DL序列的FFT序列根本不需要计算,直接可以由原始SYNC_DL码的FFT序列得到,预加-10kHz之后SYNC_DL的FFT可以采用同样的方法,因此这种情况下每子帧可以节省32+32+16=80次FFT计算,对目前DSP运算每子帧大约可以节省17万个cycles。
本发明提供的第二实施例是一种CDMA系统中快速相关计算的装置,其结构如图2所示,包括:
接收计算模块201:用于终端接收待相关计算的数据并进行快速傅里叶变换;
第一确定模块202:用于确定多组实数PN序列s(n)的快速傅里叶变换序列S(k)和多组s(n)调制之后的复数PN序列s′(n)的快速傅里叶变换序列S′(k)的第一对应关系;
实数变换模块203:用于将多组s(n)中的两组实数PN序列s1(n)、s2(n)分别作为一组复数PN序列x(n)的实部及虚部进行快速傅里叶变换,得到两组实数PN序列快速傅里叶变换序列S1(k)、S2(k);
复数变换模块204:用于根据S1(k)、S2(k)和所述第一对应关系得到两组实数PN序列s1(n)、s2(n)调制后对应的两组复数PN序列s1′(n)、s2′(n)的快速傅里叶变换序列S1′(k)、S2′(k);
相关计算模块205:用于对接收数据的快速傅里叶变换序列分别与S1′(k)、S2′(k)进行相关计算。
进一步,根据
其中,N为PN序列长度,k为快速傅里叶变换后序列的索引值,n为快速傅里叶变换前序列的索引值。
确定多组实数PN序列s(n)的快速傅里叶变换序列S(k)和多组s(n)调制之后的复数PN序列s′(n)的快速傅里叶变换序列S′(k)的第一对应关系。
根据
x(n)=s1(n)+js2(n),求x(n)的快速傅里叶变换结果为X(k),则
,N为PN序列长度,k为快速傅里叶变换后序列的索引值,
将多组s(n)中的两组实数PN序列s1(n)、s2(n)分别作为一组复数PN序列x(n)的实部及虚部进行快速傅里叶变换,得到两组实数PN序列快速傅里叶变换序列S1(k)、S2(k)。
进一步,还包括:
第二确定模块206:用于确定所述复数PN序列的快速傅里叶变换序列与复数PN变换序列的快速傅里叶变换序列的第二对应关系;
变换序列模块207:用于根据复数PN序列的快速傅里叶变换序列与所述第二对应关系确定复数PN变换序列的快速傅里叶变换序列。
进一步,根据
f预加频偏
确定所述实数PN序列的快速傅里叶变换序列与实数PN变换序列的快速傅里叶变换序列的第二对应关系。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。