本发明涉及通信领域,尤其涉及一种prach(physicalrandomaccesschannel,物理随机接入信道)基带信号的idft(inversediscretefouriertransform,离散傅里叶逆变换)实现结构及实现方法。
背景技术
lte协议中,prach信道上时间连续的随机接入信号s(t)由下式定义:
其中t表示时间,0≤t<tseq+tcp,tseq、tcp取值与前导格式有关,见表1。k0表示prach占用的rb起始位置,k表示占用带宽内的rb索引,k表示随机接入前导与上行数据之间的子载波间隔差别,βprach表示prach信号发射功率系数,n表示zc序列索引,tcp表示循环前缀长度,fra表示随机接入子载波间隔,
表1随机接入前导参数
表2随机接入参数
zc序列定义如下:
xu,v(n)=xu((n+cv)modnzc)(2)
cv是计算前导时的时域偏移量,为与v有关的一个变量,此处将其看做是一个独立的变量,取值范围为0≤cv≤nzc-1。
基带信号离散形式
在公式(1)中,省略βprach,并设采样时间为ts=1/30.72mhz,将t=its代入s(t)中,有
其中tcp=ncpts。
格式0--3
将δfra=1250代入公式(2)中并省去ts有
其中
公式(6)为一dft变换。
格式4
将δfra=7500代入公式(2)中并省去ts有,
其中
公式(8)为一dft变换。
由公式(5)和公式(7)可知,该离散信号基带信号分为dft变换、idft变换、载波搬移以及添加cp等过程,其生成流程如图1所示。图1中,对于格式0--3,m=839,n=24576,完成prach基带信号生成需要一个839点的dft变换和一个24576点的idft变换。对于格式4,m=139,n=4096,完成prach基带信号生成需要一个139点的dft变换和一个4096点的idft变换。
dft/idft变换是很复杂的运算,直接使用公式变换时复数乘法运算量与点数平方成正比,因此对于上述点数的dft/idft变换尤其是格式0--3时的dft/idft变换不宜直接计算,使用dft/idft变换快速算法库利图基(cooley-tukey)算法可以大大降低dft/idft变换的计算量,但库利图基(cooley-tukey)算法是一般信号dft/idft变换的快速算法,若在生成prach信道的基带信号时直接使用该算法,则没有充分利用zc序列的特殊性;而且dft运算是素数点dft运算(839点或139点),不宜使用库利图基(cooley-tukey)算法进行分解;idft在格式0--3时是24576点,在格式4时是4096点,尤其在格式0--3时是大点数idft运算,使用库利图基(cooley-tukey)算法仍有很大运算量。
技术实现要素:
本发明所要解决的技术问题是:针对现有技术存在的问题,本发明提供一种prach基带信号的idft实现结构及实现方法,充分利用其输入信号存在大量零值的特点,简化信号生成过程中idft的计算,进而简化整个信号生成过程。
本发明提供的一种prach基带信号的离散傅里叶逆变换idft实现结构,该结构为现场可编程门阵列fpga结构,包括使能模块、只读存储器rom1和rom2、相位一索引号计算模块、相位二索引号计算模块、乘法器一、ifft运算模块和乘法器二,使能模块包括计数器2和随机存储器ram,计数器2的输出端与ram的输入端连接,相位一索引号计算模块的输出端与rom1的输入端连接,相位二索引号计算模块的输出端与rom2的输入端连接,乘法器一的输入为使能模块的输出和rom1的输出,乘法器一的输出端与ifft运算模块的输入端连接,乘法器二的输入为ifft的输出和rom2的输出;ram、rom1和rom2的输入均为读地址;
使能模块中的计数器2表示0到nzc-1周期计数,ram用于存储zc序列经傅里叶变换dft后的数据,使能模块在输入信号为1时执行,输入信号为0时不执行且输出为0,其中,nzc为zc序列的长度;
rom1用于存储
相位一索引号计算模块用于计算复指数序列
ifft运算模块用于对乘法器一的输出yp(k)进行处理得到
进一步,当n=24576时,相位一索引号计算模块包括加法器、减法器、求模模块和s101模块,加法器的输出端与求摸模块的输入端连接,求模模块的输出端与s101模块的一个输入端连接,减法器的输出端与s101模块的另一输入端连接;求模模块用于对n求模,s101模块用于将两个无符号整数x和y的乘积对n求模,其中,
当n=4096时,相位一索引号计算模块包括加法器、减法器、子截位器一、子乘法器一和子截位器二,加法器的输出端与子截位器一的输入端连接,子乘法器一的输入为子截位器一的输出和减法器的输出,子乘法器一的输出端与子截位器二的输入端连接;子截位器一和子截位器二分别用于将加法器的输出数和子乘法器一的输出数的低12位截取并保持高低位顺序不变表示为一个无符号整数。
进一步,该结构还包括计数器1、截位器一、截位器二和判断器,相位二索引号计算模块包括子乘法器二和子截位器三,计数器1的输出端分别与截位器一和截位器二的输入端连接,截位器一的输出端分别与判断器、相位一索引号计算模块的加法器和相位二索引号计算模块的子乘法器二的输入端连接,判断器的输出为使能模块的输入,截位器二的输出端与相位一索引号计算模块的减法器的输入端连接,相位二索引号计算模块的子乘法器二的输出端与其子截位器三的输入端连接;
计数器1为0到n-1周期计数,用一个w位比特数表示;截位器一用于将计数器1的输出数的低c位截取并保持高低位顺序不变表示为一个无符号整数;截位器二用于将计数器1的输出数的高w-c位截取并保持高低位顺序不变表示为一个无符号整数;判断器用于判断截位器一的输出数是否小于等于nzc-1,是则输出为1,否则输出为0;其中,当n=24576时,w=16,当n=4096时,w=12;
相位一索引号计算模块的加法器用于将截位器一的输出与有符号整数
相位二索引号计算模块的子乘法器二用于将截位器一的输出与有符号整数
进一步,相位一索引号计算模块的求模模块包括子判断器、子加法器和选择器,该选择器具有三个输入端,加法器的输出端分别与子判断器和子加法器的输入端连接,且为选择器的第二个数输入,子判断器的输出端与选择器的顶端输入端连接,选择器的第一个数输入为子加法器的输出;
子判断器用于判断加法器的输出是否小于0,是则输出为1,否则输出为0;子加法器用于将加法器的输出与24576相加;选择器的顶端输入取值只能为1或0,为1时输出第一个数,为0时输出第二个数。
本发明另一方面提供的一种prach基带信号的离散傅里叶逆变换idft实现方法,该方法通过现场可编程门阵列fpga硬件平台实现,包括使能模块、只读存储器rom1和rom2,使能模块包括计数器2和随机存储器ram,计数器2的输出端与ram的输入端连接,使能模块在输入信号为1时执行,输入信号为0时不执行且输出为0,ram用于存储zc序列经傅里叶变换dft后的数据,rom1用于存储
当使能模块的输入信号为1时,使能模块中的计数器2从0到nzc-1周期计数并输出计数值,其中,nzc为zc序列的长度;
通过相位一索引号计算模块计算复指数序列
分别获取ram和rom1相应地址存储的值,并通过乘法器一将ram的输出和rom1的输出相乘;
通过ifft运算模块对乘法器一的输出yp(k)进行处理得到
通过相位二索引号计算模块计算
获取rom2中相应地址存储的值,并通过乘法器二将ifft运算模块的输出与rom2的输出相乘。
进一步,当n=24576时,相位一索引号计算模块计算复指数序列
当n=4096时,相位一索引号计算模块计算复指数序列
进一步,该方法还包括:
通过计数器1从0到n-1周期计数,用一个w位比特数表示;
通过截位器一将计数器1的输出数的低c位截取并保持高低位顺序不变表示为一个无符号整数;并通过截位器二将计数器1的输出数的高w-c位截取并保持高低位顺序不变表示为一个无符号整数;其中,当n=24576时,w=16,当n=4096时,w=12;
通过判断器判断截位器一的输出数是否小于等于nzc-1,是则输出为1,否则输出为0;并将判断器的输出输入到使能模块;
通过相位一索引号计算模块的加法器将截位器一的输出与有符号整数
通过相位二索引号计算模块的子乘法器二将截位器一的输出与有符号整数
与现有技术相比,本发明充分利用其输入信号存在大量零值的特点,整个idft运算只需要两个复数惩罚(不包括s101模块中的乘法)、一个1024点或256点ifft运算以及一些截位、加法(减法)、比较、选择等简单运算和3个rom/ram寄存器,结构简单,计算量小,易于在fpga上实现。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1为本发明背景技术中的基带信号生成流程图;
图2为本发明实施例给出的24576点idft实现结构图;
图3为本发明实施例给出的s101模块实现结构图;
图4为本发明实施例给出的s101模块中s201模块和s202模块实现结构图;
图5为本发明实施例给出的s101模块中s203模块和s204模块实现结构图;
图6为本发明实施例给出的s101模块中s205模块实现结构图;
图7为本发明实施例给出的s101模块中s206模块和s207模块实现结构图;
图8为本发明实施例给出的s101模块中s208模块实现结构图;
图9为本发明实施例给出的s101模块中s209模块实现结构图;
图10为本发明实施例给出的s101模块中s210模块实现结构图;
图11为本发明实施例给出的s208模块中s301模块和s302模块实现结构图;
图12为本发明实施例给出的4096点idft实现结构图。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
本发明的idft算法原理和实现结构具体如下。
为了便于说明,记公式
对于格式0--3,idft运算点数均为24576点。在公式(5)中,令
令
i=24m+p,m=0,1…1023,p=0,1…23
则
其中
令
则
p取值为0,1....23,由公式(20)知,格式0--3的idft变换算法可以分解成24个1024点idft运算。因此24576点idft可以由一个1024点idft串行运行24次,每次输入序列由dft输出的839点序列补零到1024点序列与一复指数序列
优选地,相位一索引号计算模块可通过一求模模块将一加法器的输出对n求模;通过s101模块将加法器的输出x和一减法器的输出y这两个无符号整数的乘积对n求模,两个数可均用15位比特数表示,进而得到复指数序列
fpga具体实现结构如图2所示,图2中,计数器1为0到24575周期计数,可用一个16位比特数表示,截位器一将该数的第0到第9位即低10位截取(高低位顺序不变,下同)并表示为一个无符号整数,截位器二将该数的第10到第15位即高6位截取并表示为一个无符号整数。计数器2表示0到838周期计数,ram中存放的数据为dft(discretefouriertransform,离散傅里叶变换)输出的数据,共839个数。rom1中存放的数值为
以下介绍s101模块(x*y)mod24576的fpga实现算法。
s101模块表示两个无符号整数相乘后对24576求模运算。本发明提供一种简单且适宜在fpga上实现的算法。设两个输入分别为x,y,输出为p,则
p=(x*y)mod24576(21)
在lte系统中,x,y,p均可用15比特位宽表示,通过截位,将x,y表示如下:
x=8192*x1+x2,y=8192*y1+y2(22)
x2=128*x21+x22,y2=128*y21+y22(23)
x21=8*x211+x212,y21=8*y211+y212(24)
x22=64*x221+x222,y22=64*y221+y222(25)
x222=8*x2221+x2222,y222=8*y2221+y2222(26)
其中
x1,x2,y1,y2,x21,x22,y21,y22,x211,x212,y211,y212,x221,x222,y221,y222,x2221,x2222,y2221,y2222均为无符号整数,其位宽及意义如表3所示
表3参数位宽
将公式(22)到公式(26)代入公式(21)中有:
p=(x*y)mod24576
=((8192*x1+x2)*(8192*y1+y2))mod24576
=((x1*y1*2+x1*y2+x2*y1)mod3*8192+x2*y2)mod24576
=(8192*p1+p2)mod24576(27)
其中
p1=(x1*y1*2+x1*y2+x2*y1)mod3
=(x1mod3*(y1+y2)mod3+y1mod3*(x1+x2)mod3)mod3(28)
p2=(x2*y2)mod24576
=(128*x21+x22)*(128*y21+y22)mod24576
=(8192*p21+128*p22+p23)mod24576(29)
其中p21=(2*x21*y21)mod3,p22=(x21*y22+y21*x22)mod192,p23=x22*y22
p22=(x21*y22+y21*x22)mod192
=(x21*(64*y221+y222)+y21*(64*x221+x222))mod192
=(64*p221+p222)mod192(30)
其中p221=(x21*y221+y21*x221)mod3,p222=(x21*y222+y21*x222)mod192
p222=(x21*y222+y21*x222)mod192
=((8*x211+x212)*(8*y2221+y2222)+(8*y211+y212)*(8*x2221+x2222))mod192
=(64*(x211*y2221+y211*x2221)mod3+
8*(x211*y2222+x212*y2221+y211*x2222+y212*x2221)+
x212*y2222+y212*x2222)mod192(31)
因此
p=(x*y)mod24576
=(p1*8192+p2)mod24576
=(p1*8192+8192*p21+128*p22+p23)mod24576
=(p1*8192+8192*p21+128*((64*p221+p222)mod192)+p23)mod24576
=(8192*(p1+p21)mod3+8192*p221mod3+128*p222mod192+p23)mod24576
=(8192*(p1+p21+p221+x211*y2221+y211*x2221)mod3+
1024*(x211*y2222+x212*y2221+y211*x2222+y212*x2221)mod24+
128*(x212*y2222+y212*x2222)mod192+
p23)mod24576(32)
令m=x211*y2222+x212*y2221+y211*x2222+y212*x2221=8*m1+m2,m为8比特无符号整数,m1为5比特无符号整数,m2为3比特无符号整数,则
mmod24=(8*m1+m2)mod24=8*m1mod3+m2(33)
综合有
p=(x*y)mod24576
=(p1*8192+p2)mod24576
=(p1*8192+8192*p21+128*p22+p23)mod24576
=(p1*8192+8192*p21+128*((64*p221+p222)mod192)+p23)mod24576
=(8192*(p1+p21)mod3+8192*p221mod3+128*p222mod192+p23)mod24576
=(8192*(p1+p21+p221+x211*y2221+y211*x2221+m1)mod3+
1024*m2+
128*(x212*y2222+y212*x2222)+
p23)mod24576
=qmod24576(34)
其中
q=(8192*(p1+p21+p221+x211*y2221+y211*x2221+m1)mod3+
1024*m2+128*(x212*y2222+y212*x2222)+p23(35)
由公式(35)易知q≤40065,故
因此只需要计算q值,便可以简单的计算出p值。而在q值计算过程中,除了mod3运算外,其他均为普通的加法和乘法运算。下面介绍mod3运算在fpga上实现的算法原理。
不失一般性,设w=(a*u+b*v)mod3,且a,u,b,v均为8比特无符号整数,a={a0,a1,a2,a3,a4,a5,a6,a7},a0,a1,a2,a3,a4,a5,a6,a7分别表示a的最低比特位、次低比特位...最高比特位。将a表示为
a=a1+4*a2+16*a3+64*a4(37)
则a1={a0,a1},a2={a2,a3},a3={a4,a5},a4={a6,a7}。
amod3=(a1+4*a2+16*a3+64*a4)mod3=(a1+a2+a3+a4)mod3,将a1+a2+a3+a4看做一个4比特无符号整数,反复使用公式(37)可最终计算出amod3。同理可计算出bmod3,umod3,vmod3,(amod3*umod3)mod3,(bmod3*vmod3)mod3的值。
则
其中k=(amod3*umod3)mod3+(bmod3*vmod3)mod3。
对于格式4,idft运算点数为4096点。
在公式(7)中,令
令
i=16m+p,m=0,1…255,p=0,1…15
则
其中
令
则
p取值为0,1....15,由公式(41)知,格式4的idft变换算法可以分解成16个256点idft。因此4096点idft可以由一个256点idft串行运行16次,每次输入序列由dft输出的139点序列补零到256点序列与一复指数序列
优选地,相位一索引号计算模块通过一子截位器一将一加法器的输出数的低12位截取并保持高低位顺序不变表示为一个无符号整数;通过一子乘法器一将子截位器一的输出和一减法器的输出相乘;通过一子截位器二将子乘法器一的输出数的低12位截取并保持高低位顺序不变表示为一个无符号整数,从而得到复指数序列
fpga具体实现结构如图12所示,图12中,计数器1为0到4095周期计数,可用一个12位比特数表示,截位器一将该数的第0到第7位即低8位截取(高低位顺序不变,下同)并表示为一个无符号整数,截位器二将该数的第8到第11位即高4位截取并表示为一个无符号整数,其余截位器类似。计数器2表示0到138周期计数,ram中存放的数据为dft输出的数据,139个数。rom1中存放的数值为
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。