具体实施方式
下面结合附图对本发明的方法做进一步的说明。
本发明产生LTE PRACH基带信号的方法的流程如图2所示。
步骤S100,依据LTE协议规定计算出LTE PRACH基带信号产生所需的参数。
参数计算部分,参数计算部分按照3GPP TS 36.211进行。
根据高层提供的参数(3GPP TS36.211协议规定高层包括MAC和RRC层)计算LTE PRACH基带信号产生所需的参数如下所述。
根据prach_config_index(prach配置索引)查3GPP TS36.211表5.7.1-2和表5.7.1-3得到前导格式;根据前导格式查表1得到序列长度和循环前缀长度;根据RA_RNTI值计算t
RA=(RA_RNTI-1)%10 f
RA=(RA_RNTI-t
RA-1)/10,再进一步计算频域位置
对于前导格式0-3按照以下公式计算。
对于前导格式4,按照以下公式计算。
根据高层指示的preamble_index(前导序列)和RACH_ROOT_SEQUENCE(起始根序列号)计算preamble_index指示的前导序列所属的根序列索引,表示为logic_u,查表得到前导根序列号u以及计算在该根序列组内的前导偏移值v。计算方法分为限制集和非限制集两种情况,high_speed_flag值为0时是非限制集,为1时为限制集。Ncs是一个高层配置的参数。
非限制集情况下计算如下所述。
如果NCS=0,
如果NCS≠0,
根据根序列索引logic_u查表得到前导序列根序列号u。
限制集情况下计算如下所述。
从RACH_ROOT_SEQUENCE开始,计算每一个逻辑根序列号能够产生的所有前导个数,并对这些个数进行累加,直到总和大于等于preamble_index,如果logic_u超过NZC,logic_u=logic_u%NZC,计算每一个logic_u能够产生的所有前导个数的方法如下所述。
根据根序列索引logic_u查表得到前导根序列号u,计算根序列号的乘法逆因子p,计算变量
计算logic_u能够产生的所有前导个数
其中的参数按照以下方法计算。N
ZC为LTE协议中采用的前导格式中进行DFT的质数点数。
如果du满足NCS≤du<NZC/3,
如果du满足NZC/3≤du≤(NZC-NCS)/2,
对于其他du取值每个logic_u只能产生1个前导。当能够产生的前导个数总和大于等于preamble_index时停止累加,preamble_index对应的前导在其所在逻辑根序列号为u,preamble_index对应的前导在其所在逻辑根序列号产生的前导序列中的偏移即为v。
进一步计算前导序列的循环移位值,
步骤S200,计算前导序列的DFT序列的相位值,依次写入频域信号相位缓存中,写入NZC个相位值后执行步骤S300,NZC为LTE协议中采用的前导格式中进行DFT的质数点数。
依据参数中的前导序列根序列号查找乘法逆因子表和旋转因子表获得对应的乘法逆因子和旋转因子。依据乘法逆因子、旋转因子、和参数中的循环移位值计算得到前导序列的DFT序列的相位值。
具体实施方式一
按如下公式进行前导序列的DFT序列的相位值,
(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)/NZC
其中,k=0,...,NZC-1,2-1表示2的乘法逆因子;u为前导序列根序列号,u-1为u的乘法逆因子,α为旋转因子,Cv为循环移位值。
实施例如下所述。
通过步骤S100参数计算得到前导序列根序列号u。
查乘法逆因子表得到u的乘法逆因子u-1。根据前导格式0-3或前导格式4有两张乘法逆因子表。
以u为索引查旋转因子表,得到旋转因子α。根据前导格式0-3或前导格式4有两张不同的旋转因子表。
将u-1和α以及步骤S100中参数计算得出的循环移位值Cv按(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)/NZC进行相位计算,k=0,...,NZC-1,2-1表示2的乘法逆因子,得到前导序列的DFT序列的相位值,依次写入频域信号相位缓存中,写入NZC个数后执行步骤S300。
具体实施方式二
按如下公式进行前导序列的DFT序列的相位值,
(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)*NIDFT/NZC
其中,k=0,...,NZC-1,2-1表示2的乘法逆因子;u为前导序列根序列号,u-1为u的乘法逆因子,α为旋转因子,Cv为循环移位值,NZC为LTE协议中采用的前导格式中进行DFT的质数点数,NIDFT为LTE协议中采用的前导格式中进行IDFT的高点数。
实施例同具体实施方式一的实施例相同,仅是计算相位值时按公式
(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)*NIDFT/NZC进行计算。
步骤S300,依据前导格式配置不包含倒序的IFFT运算的长度为NIFFT,组数为a,进行a次不包含倒序的NIFFT点的IFFT运算。
每次运算时,从频域信号相位缓存中读NZC个相位值,将相位值作对应数值变换,并将本次运算所用相位值转换为复数,不包含倒序的IFFT的输入序列的长度为NIFFT,输入序列的前NZC点为所述的NZC个相位值转换后的复数,后面剩余的点置零,对所述输入序列进行不包含倒序的NIFFT点的IFFT运算;对于每一个不包含倒序的IFFT运算输出数据,依据数据未倒序前的序号k′查倒序及地址偏移表得到所述数据对应于NIDFT点基带信号的序号n′以及基带信号缓存写地址,依据序号n′和参数计算所述数据对应的旋转因子,将旋转因子与所述数据相乘,相乘结果按照基带信号缓存写地址写入基带信号缓存中,NIDFT为LTE协议中采用的前导格式中进行IDFT的高点数,k是频域信号相位缓存中数的索引,k=0,1,...,NZC-1。
具体实施方式一
初始时,频域信号相位缓存中相位值为按公式(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)/NZC计算得到的相位值。
每次读相位值时,将相位值与2k/NIDFT相加的和对2取模,所得结果写回到频域信号相位缓存中所述相位值所在的位置,并按ejπθ将相位值转换为复数。
实施例中,将相位值与2k/NIDFT相加的和同2比较,如果大于等于2则将加和同2相减后差值写回频域信号相位缓存,否则直接将加和写回频域信号相位缓存;对于读取的相位值,按ejπθ将相位值转换为复数。
不包含倒序的IFFT的输入序列的长度为NIFFT,输入序列的前NZC点为所述读取的NZC个相位值转换后的复数,后面剩余的点置零。
对输入序列进行不包含倒序的NIFFT点的IFFT运算,对于每一个不包含倒序的IFFT运算输出数据进行如下操作。
依据数据未倒序前的序号k′查倒序及地址偏移表得到所述数据对应于NIDFT点基带信号的序号n′以及基带信号缓存写地址。依据序号n′和参数计算按如下公式计算所述数据对应的旋转因子
K,k0这三个值为按照协议3GPP TS 36.2115.7.3节生成。
将旋转因子与所述数据相乘,相乘结果按照基带信号缓存写地址写入基带信号缓存中。
实施例如下所述。
依据前导格式配置不包含倒序的IFFT运算的长度为NIFFT,组数为a,进行a次不包含倒序的NIFFT点的IFFT运算。
对于不同的前导格式IFFT*(不包含倒序的IFFT,IFFT为快速逆傅立叶变换)的长度和组数有多种可用配置。前导格式0-3,NIFFT以及对应a的取值可以取4种配置,分别为
NIFFT=1024a=24;NIFFT=2048a=12;NIFFT=4096a=6;NIFFT=8192a=3;
前导格式4NIFFT以及对应a的取值可以取5种配置,分别为
NIFFT=256a=16;NIFFT=512a=8;NIFFT=1024a=4;NIFFT=2048a=2;NIFFT=4096a=1
其中前导格式4的最后一种可选配置如果选择做4096点IFFT,从而相当于没有进行分组。共需完成a=NIDFT/NIFFT次NIFFT点IFFT*运算,待IFFT*完成a次IFFT*运算,此时基带信号缓存写满NIDFT数据,进入步骤S400。
每次进行不包含倒序的NIFFT点的IFFT运算时,从频域信号相位缓存中读数NZC个,每次读数都送出一份拷贝,将该拷贝的相位数据与2k/NIDFT相加后对2取模,结果写回频域信号相位缓存,该相加结果的写地址与该相位数据在频域信号相位缓存中的地址相同,即相加结果覆盖写在读取的相位数据在频域信号相位缓存相应位置。因此,第一次不包含倒序的NIFFT点的IFFT运算中使用步骤S200中写入的相位值,第一次之后的不包含倒序的NIFFT点的IFFT运算使用上次不包含倒序的NIFFT点的IFFT运算中更新的相加结果值。
从频域信号相位缓存中每读取一个相位θ都经过相位到复数转化,转化为ejπθ。将相位转化为复数输入进行IFFT*运算的模块进行计算。模块输入NZC复数后,向模块输入0,输入0的个数为NIFFT-NZC。模块完成不包含倒序的NIFFT点IFFT。
对于每一个输出数据进行如下操作。以输出数据的未倒序前的序号k′作为为索引,在设置的以未倒序前的序号k′为索引的对应基带信号缓存内序号及地址的一张表格中查找,查得到该数据对应于NIDFT点基带信号的序号n′以及基带信号缓存的地址。
依据序号n′和参数按如下公式计算所述数据对应的旋转因子
其中除序号n′外其他参数均按协议计算得出。用计算出的旋转因子与该输出数据相乘,相乘结果按照倒序与地址偏移模块查表输出的基带信号缓存写地址写入基带信号缓存当中。
具体实施方式二
初始时,频域信号相位缓存中相位值为按公式(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)/NZC计算得到的相位值。
每次读相位值时,将相位值与2kb/NIDFT相加的和对2取模,所得结果按ejπθ将相位值转换为复数。b为进行本次运算前已经完成的不包含倒序的NIFFT点的IFFT的次数,b的取值范围为b=0,1,...,a-1,k是相位值在频域信号相位缓存中的索引,k=0,1,…,NZC-1。
实施例中,将相位值与2kb/NIDFT相加的和同2比较,如果大于等于2则将加和同2相减后差值按ejπθ将相位值转换为复数,否则直接将加和按ejπθ将相位值转换为复数。
不包含倒序的IFFT的输入序列的长度为NIFFT,输入序列的前NZC点为所述的NZC个相位值转换后的复数,后面剩余的点置零。
对输入序列进行不包含倒序的NIFFT点的IFFT运算,对于每一个不包含倒序的IFFT运算输出数据进行如下操作。
依据数据未倒序前的序号k′查倒序及地址偏移表得到所述数据对应于NIDFT点基带信号的序号n′以及基带信号缓存写地址。依据序号n′和参数计算按如下公式计算所述数据对应的旋转因子
K,k
0这三个值为按照协议3GPP TS 36.2115.7.3节生成。
将旋转因子与所述数据相乘,相乘结果按照基带信号缓存写地址写入基带信号缓存中。
实施例如下所述。
依据前导格式配置不包含倒序的IFFT运算的长度为NIFFT,组数为a,进行a次不包含倒序的NIFFT点的IFFT运算。
对于不同的前导格式IFFT*(不包含倒序的IFFT,IFFT为快速逆傅立叶变换)的长度和组数有多种可用配置。前导格式0-3,NIFFT以及对应a的取值可以取4种配置,分别为
NIFFT=1024a=24;NIFFT=2048a=12;NIFFT=4096a=6;NIFFT=8192a=3;
前导格式4NIFFT以及对应a的取值可以取5种配置,分别为
NIFFT=256a=16;NIFFT=512a=8;NIFFT=1024a=4;NIFFT=2048a=2;NIFFT=4096a=1
对于每一种配置,b的取值范围为b=0,1,...,a-1。
其中前导格式4的最后一种可选配置如果选择做4096点IFFT,从而相当于没有进行分组。共需完成α=NIDFT/NIFFT次NIFFT点IFFT*运算,待IFFT*完成a次IFFT*运算,此时基带信号缓存写满NIDFT数据,进入步骤S400。
每次进行不包含倒序的NIFFT点的IFFT运算时,从频域信号相位缓存中读数NZC个,将该数据与2kb/NIDFT相加后对2取模,同一次IFFT*运算读取的所有数对应的b的取值均相同。b为已经完成的IFFT*运算的次数,即如果当前正在进行第1次IFFT*运算,则b的取值为0,如果当前正在进行第2次IFFT*运算,则b的取值为1,当前正在进行第i次IFFT*运算,则b的取值为i-1。
取模后的每一个相位θ都经过相位到复数转化,转化为ejπθ。将相位转化为复数输入进行IFFT*运算的模块进行计算。模块输入NZC复数后,向模块输入0,输入0的个数为NIFFT-NZC。模块完成不包含倒序的NIFFT点IFFT。
对于每一个输出数据进行如下操作。以输出数据的未倒序前的序号k′作为为索引,在设置的以未倒序前的序号k′为索引的对应基带信号缓存内序号及地址的一张表格中查找,查得到该数据对应于NIDFT点基带信号的序号n′以及基带信号缓存的地址。
依据序号n′和参数按如下公式计算所述数据对应的旋转因子
其中除序号n′外其他参数均按协议计算得出。用计算出的旋转因子与该输出数据相乘,相乘结果按照倒序与地址偏移模块查表输出的基带信号缓存写地址写入基带信号缓存当中。
具体实施方式三
初始时,频域信号相位缓存中相位值为按公式(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)*NIDFT/NZC计算得到的相位值。
每次读相位值时,将相位值与2k相加的和对2N
IDFT取模,所得结果写回到频域信号相位缓存中所述相位值所在的位置,并按
将相位值转换为复数。
实施例中,将相位值与2k相加的和同2N
IDFT比较,如果大于等于2N
IDFT则将加和同2N
IDFT相减后差值写回频域信号相位缓存,否则直接将加和写回频域信号相位缓存;对于读取的相位值,按
将相位值转换为复数。
不包含倒序的IFFT的输入序列的长度为NIFFT,输入序列的前NZC点为所述读取的NZC个相位值转换后的复数,后面剩余的点置零。
对输入序列进行不包含倒序的NIFFT点的IFFT运算,对于每一个不包含倒序的IFFT运算输出数据进行如下操作。
依据数据未倒序前的序号k′查倒序及地址偏移表得到所述数据对应于NIDFT点基带信号的序号n′以及基带信号缓存写地址。依据序号n′和参数计算按如下公式计算所述数据对应的旋转因子
K,k
0这三个值为按照协议3GPP TS 36.211 5.7.3节生成。
将旋转因子与所述数据相乘,相乘结果按照基带信号缓存写地址写入基带信号缓存中。
具体实施方式四
初始时,频域信号相位缓存中相位值为按公式(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)*NIDFT/NZC计算得到的相位值。
每次读相位值时,将相位值与2kb相加的和对2NIDFT取模,所得结果按将相位值转换为复数。b为进行本次运算前已经完成的不包含倒序的NIFFT点的IFFT的次数,b的取值范围为b=0,1,...,a-1,k是相位值在频域信号相位缓存中的索引,k=0,1,…,NZC-1。
实施例中,将相位值与2kb相加的和同2N
IDFT比较,如果大于等于2N
IDFT则将加和同2N
IDFT相减后差值按
将相位值转换为复数,否则直接将加和按
将相位值转换为复数。
不包含倒序的IFFT的输入序列的长度为NIFFT,输入序列的前NZC点为所述的NZC个相位值转换后的复数,后面剩余的点置零。
对输入序列进行不包含倒序的NIFFT点的IFFT运算,对于每一个不包含倒序的IFFT运算输出数据进行如下操作。
依据数据未倒序前的序号k′查倒序及地址偏移表得到所述数据对应于NIDFT点基带信号的序号n′以及基带信号缓存写地址。依据序号n′和参数计算按如下公式计算所述数据对应的旋转因子
K,k0这三个值为按照协议3GPP TS 36.211 5.7.3节生成。
将旋转因子与所述数据相乘,相乘结果按照基带信号缓存写地址写入基带信号缓存中。
步骤S400,查LTE协议的列表得到循环前缀部分数据在基带信号缓存的起始地址和循环前缀长度,依据起始地址和循环前缀长度从基带信号缓存中读取数据发送循环前缀和全部的序列部分,完成后将频域信号相位缓存和基带信号缓存清零。
进一步的,步骤S400中依据起始地址和循环前缀长度发送读取数据的循环前缀和全部的序列部分如下所述。
步骤S410,按照循环前缀的长度自循环前缀起始地址开始,从基带信号缓存中顺序读取数据发送循环前缀。
步骤S420,回到基带信号缓存中序列起始地址,开始顺序读取数据发送全部的序列部分,如果前导格式为前导格式2和3,在发送一次全部的序列部分后,再次回到基带信号缓存中序列起始地址完全重复的再发送一次全部的序列部分。
实施例如下所述。
进行序列重复及填加循环前缀,方法是根据表1的序列和循环前缀长度,查表得到循环前缀部分数据在基带信号缓存的起始地址和循环前缀长度,按照循环前缀的长度自循环前缀起始地址开始,从基带信号缓存中顺序读取数据发送循环前缀,然后回到基带信号缓存序列起始地址,开始顺序读取数据发送全部的序列部分,如果前导格式2和3,在发送一次序列部分之后,再次回到序列起始地址完全重复的再发送一次序列部分,对于其他前导格式不用进行序列重复。序列重复及添加循环前缀完成后将整个装置的所有缓存清零。
本发明产生LTE PRACH基带信号的系统如图3所示。
系统包括:参数生成模块100、相位值计算模块200、具有频域信号相位缓存的相位缓存模块300、相加取模模块400、IFFT*模块500、倒序和地址偏移模块600、旋转因子计算模块700、乘法模块800、具有基带信号缓存的基带信号缓存模块900、序列重复及填加循环前缀模块1000。
参数生成模块100,用于计算出LTE PRACH基带信号产生所需的参数。
相位值计算模块200,用于依据参数和LTE协议的列表计算得到前导序列的DFT序列的相位值,依次通过相位缓存模块300写入频域信号相位缓存中,写入NZC个相位值后启动相位值计算模块400,NZC为LTE协议中采用的前导格式中进行DFT的质数点数。
进一步的,相位值计算模块200在依据参数和LTE协议的列表计算得到前导序列的DFT序列的相位值时进一步用于依据参数中的前导序列根序列号查找乘法逆因子表和旋转因子表获得对应的乘法逆因子和旋转因子;依据乘法逆因子、旋转因子、和参数中的循环移位值计算得到前导序列的DFT序列的相位值。
具体实施方式一相位值计算模块200在依据乘法逆因子、旋转因子、和循环移位值计算得到前导序列的DFT序列的相位值时进一步用于按如下公式进行前导序列的DFT序列的相位值,
(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)/NZC
其中,k=0,...,NZC-1,2-1表示2的乘法逆因子;u为前导序列根序列号,u-1为u的乘法逆因子,α为旋转因子,Cv为循环移位值。
具体实施方式二,相位值计算模块200在依据乘法逆因子、旋转因子、和循环移位值计算得到前导序列的DFT序列的相位值时进一步用于按如下公式进行前导序列的DFT序列的相位值,
(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)*NIDFT/NZC
其中,k=0,...,NZC-1,2-1表示2的乘法逆因子;u为前导序列根序列号,u-1为u的乘法逆因子,α为旋转因子,Cv为循环移位值。
相加取模模块400,用于依据配置的不包含倒序的IFFT运算的长度NIFFT和组数a,进行a次不包含倒序的NIFFT点运算的对应数值变换,每次运算前从频域信号相位缓存中读NZC个相位值,将相位值作对应数值变换,并将本次运算所用相位值传给IFFT*模块500。
IFFT*模块500,用于在每次运算时,将相加取模模块400传送的相位值转换为复数,不包含倒序的IFFT的输入序列的长度为NIFFT,输入序列的前NZC点为所述的NZC个相位值转换后的复数,后面剩余的点置零,对所述输入序列进行不包含倒序的NIFFT点的IFFT运算,对于每一个不包含倒序的IFFT运算输出数据,将数据未倒序前的序号k′输给倒序和地址偏移模块,NIDFT为LTE协议中采用的前导格式中进行IDFT的高点数。
对应具体实施方式一的一种实现方式如下。
相加取模模块400在每次运算前从频域信号相位缓存中读NZC个相位值,将相位值作对应数值变换,并将本次运算所用相位值传给IFFT*模块500时进一步用于每次运算前从频域信号相位缓存中读NZC个相位值,每次读相位值时,将相位值与2k/NIDFT相加的和对2取模,结果写回频域信号相位缓存中所述读取的相位值所在的位置,并将读取的相位值传给IFFT*模块500,k是相位值在频域信号相位缓存中的索引,k=0,1,...,NZC-1。
IFFT*模块500在将相加取模模块400传送的相位值转换为复数时进一步用于对于相加取模模块400传送的相位值,按ejπθ将相位值转换为复数。
对应具体实施方式一的另一种实现方式如下。
相加取模模块400在每次运算前从频域信号相位缓存中读NZC个相位值,将相位值作对应数值变换,并将本次运算所用相位值传给IFFT*模块500时进一步用于每次运算前从频域信号相位缓存中读NZC个相位值,每次读相位值时,将相位值与2kb/NIDFT相加的和对2取模,并将取模后的相位值传给IFFT*模块500,b为进行本次运算前已经完成的不包含倒序的NIFFT点的IFFT的次数,b的取值范围为b=0,1,...,a-1,k是相位值在频域信号相位缓存中的索引,k=0,1,...,NZC-1。
IFFT*模块500在将相加取模模块400传送的相位值转换为复数时进一步用于对于相加取模模块400传送的相位值,按ejπθ将相位值转换为复数。
对应具体实施方式二的一种实现方式如下。
相加取模模块400在每次运算前从频域信号相位缓存中读NZC个相位值,将相位值作对应数值变换,并将本次运算所用相位值传给IFFT*模块500时进一步用于每次运算前从频域信号相位缓存中读NZC个相位值,每次读相位值时,将相位值与2k相加的和对2NIDFT取模,结果写回频域信号相位缓存中所述读取的相位值所在的位置,并将读取的相位值传给IFFT*模块500,k是相位值在频域信号相位缓存中的索引,k=0,1,...,NZC-1。
IFFT*模块500在将相加取模模块400传送的相位值转换为复数时进一步用于对于相加取模模块400传送的相位值,按将相位值转换为复数。
对应具体实施方式二的另一种实现方式如下。
相加取模模块400在每次运算前从频域信号相位缓存中读NZC个相位值,将相位值作对应数值变换,并将本次运算所用相位值传给IFFT*模块500时进一步用于每次运算前从频域信号相位缓存中读NZC个相位值,每次读相位值时,将相位值与2kb相加的和对2NIDFT取模,并将取模后的相位值传给IFFT*模块500,b为进行本次运算前已经完成的不包含倒序的NIFFT点的IFFT的次数,b的取值范围为b=0,1,...,a-1,k是相位值在频域信号相位缓存中的索引,k=0,1,…,NZC-1。
IFFT*模块500在将相加取模模块400传送的相位值转换为复数时进一步用于对于相加取模模块400传送的相位值,按
将相位值转换为复数。
倒序和地址偏移模块600,依据数据未倒序前的序号k′查设置的列表得到所述数据对应于NIDFT点基带信号的序号n′以及基带信号缓存地址,将序号n′输给旋转因子计算模块700,基带信号缓存地址输给基带信号缓存模块900。
旋转因子计算模块700,用于依据序号n′和参数计算IFFT运算输出数据对应的旋转因子。
进一步的,旋转因子计算模块700按如下公式计算所述数据对应的旋转因子
乘法模块800,用于对于IFFT*模块500每个IFFT运算输出数据,将旋转因子与所述数据相乘,结果输给基带信号缓存模块900。
基带信号缓存模块900,用于将相乘结果按照倒序与基带信号缓存写地址写入基带信号缓存中。
序列重复及填加循环前缀模块900,用于查LTE协议的列表得到循环前缀部分数据在基带信号缓存的起始地址和循环前缀长度,依据起始地址和循环前缀长度从基带信号缓存中读取数据发送循环前缀和全部的序列部分,完成后将频域信号相位缓存和基带信号缓存清零。
进一步的,序列重复及填加循环前缀模块900在依据起始地址和循环前缀长度发送读取数据的循环前缀和全部的序列部分时用于
按照循环前缀的长度自循环前缀起始地址开始,从基带信号缓存中顺序读取数据发送循环前缀;回到基带信号缓存中序列起始地址,开始顺序读取数据发送全部的序列部分,如果前导格式为前导格式2和3,在发送一次全部的序列部分后,再次回到基带信号缓存中序列起始地址完全重复的再发送一次全部的序列部分。
本发明的系统一具体实施例一如图4所示。
参数生成模块100,用于依据LTE协议规定计算出LTE PRACH基带信号产生所需的参数。
根据高层提供的参数(3GPP TS36.211协议规定高层包括MAC和RRC层)计算LTE PRACH基带信号产生所需的参数如下所述。
根据prach_config_index(prach配置索引)查3GPP TS36.211表5.7.1-2和表5.7.1-3得到前导格式;根据前导格式查表1得到序列长度和循环前缀长度;根据RA_RNTI值计算t
RA=(RA_RNTI-1)%10 f
RA=(RA_RNTI-t
RA-1)/10,再进一步计算频域位置
对于前导格式0-3按照以下公式计算。
对于前导格式4,按照以下公式计算。
根据高层指示的preamble_index(前导序列)和RACH_ROOT_SEQUENCE(起始根序列号)计算preamble_index指示的前导序列所属的根序列索引,表示为logic_u,查表得到前导根序列号u以及计算在该根序列组内的前导偏移值v。计算方法分为限制集和非限制集两种情况,high_speed_flag值为0时是非限制集,为1时为限制集。Ncs是一个高层配置的参数。
非限制集情况下计算如下所述。
如果NCS=0,
如果NCS≠0,
根据根序列索引logic_u查表得到前导序列根序列号u。
限制集情况下计算如下所述。
从RACH_ROOT_SEQUENCE开始,计算每一个逻辑根序列号能够产生的所有前导个数,并对这些个数进行累加,直到总和大于等于preamble_index,如果logic_u超过NZC,logic_u=logic_u%NZC,计算每一个logic_u能够产生的所有前导个数的方法如下所述。
根据根序列索引logic_u查表得到前导根序列号u,计算根序列号的乘法逆因子p,计算变量
计算logic_u能够产生的所有前导个数
其中的参数按照以下方法计算。N
ZC为LTE协议中采用的前导格式中进行DFT的质数点数。
如果du满足NCS≤du<NZC/3,
如果du满足NZC/3≤du≤(NZC-NCS)/2,
对于其他du取值每个logic_u只能产生1个前导。当能够产生的前导个数总和大于等于preamble_index时停止累加,preamble_index对应的前导在其所在逻辑根序列号为u,preamble_index对应的前导在其所在逻辑根序列号产生的前导序列中的偏移即为v。
进一步计算前导序列的循环移位值,
相位缓存模块300包括第一选择器,选通信号为S0,相位值计算模块200和相加取模模块400连接第一选择器的输入,频域信号相位缓存连接第一选择器输出。
把选通信号S0初始状态置为0,第一选择器选择相位值计算模块200的输出输入到频域信号相位缓存。
相位值计算模块200通过参数生成模块100得到前导序列根序列号u,查乘法逆因子表得到u的乘法逆因子u-1,根据前导格式0-3或前导格式4有两张乘法逆因子表,以u为索引查旋转因子表,得到旋转因子α,根据前导格式0-3或前导格式4有两张不同的旋转因子表。将u-1和α以及参数计算得出的循环移位值Cv,按公式
(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)/NZC
进行相位计算,k=0,...,NZC-1,2-1表示2的乘法逆因子,得到前导序列的DFT序列的相位值,依次写入频域信号相位缓存中,写入NZC个数后选通信号S0置为1。
IFFT*模块500进一步包括复数转换模块和IFFT*执行模块。复数转换模块和IFFT*执行模块之间通过第二选择器连接。第二选择器输出连接IFFT*执行模块,一个输入连接复数转换模块输出,一个输入连接0输入。
对于不同的前导格式IFFT*的长度和组数有多种可用配置:前导格式0-3NIFFT以及对应a的取值可以取4种配置,分别为
NIFFT=1024a=24;NIFFT=2048a=12;NIFFT=4096a=6;NIFFT=8192a=3;
前导格式4,NIFFT以及对应a的取值可以取5种配置,分别为
NIFFT=256a=16;NIFFT=512a=8;NIFFT=1024a=4;NIFFT=2048a=2;NIFFT=4096a=1
其中前导格式4的最后一种可选配置如果选择做4096点IFFT,相当于没有进行分组。
IFFT*模块500共需完成a=NIDFT/NIFFT次NIFFT点IFFT*运算,待IFFT*模块500完成a次IFFT*,基带信号缓存写满NIDFT数据后,停止基带信号缓存之前的所有运算模块。
把选通信号S1初始状态置为1,则第二选择器选择复数转换模块输出输入IFFT*执行模块。
相加取模模块400从频域信号相位缓存中读数NZC个,复数转换模块获得所述读数。相加取模模块400将输入相位数据与2k/NIDFT相加对2取模后,将结果写回频域信号相位缓存,输出数据写地址与输入数据在频域信号相位缓存中的地址相同,即输出数据覆盖写在输入数据在频域信号相位缓存相应位置。
复数转换模块每一个相位θ都经过相位到复数转化模块ejπθ将相位转化为复数输入IFFT*执行模块进行计算。复数转化模块获得NZC个后,选通信号S1置为0,则IFFT*执行模块的输入为复数0。
IFFT*执行模块完成不包含倒序的NIFFT点IFFT,将每一个输出数据的未倒序前的序号k′作为参数送至倒序和地址偏移模块600。
倒序和地址偏移模块600内部已存有以未倒序前的序号k′为索引的对应基带信号缓存内序号及地址的一张表格,查该表得到该数据对应于NIDFT点基带信号的序号n′以及基带信号缓存的地址,将序号n′输入至旋转因子计算模块700。旋转因子计算模块700按如下公式计算该输出数据对应的旋转因子
其中除序号n′外其他参数均按协议规定生成,与前导格式有关。
乘法模块800用计算出的旋转因子与IFFT*执行模块的输出数据相乘。
基带信号缓存模块900将相乘结果按照倒序与地址偏移模块查表输出的基带信号缓存写地址写入基带信号缓存当中。
IFFT*执行模块进行完本次IFFT*运算后,将第二选择器的选通信号S1置为1,并启动相加取模模块400从频域信号相位缓存中读取相位值。
IFFT*执行模块完成a次IFFT*运算,基带信号缓存写满NIDFT数据后,停止基带信号缓存之前的所有运算模块。
序列重复及填加循环前缀模块1000根据表1的序列和循环前缀长度,查表得到循环前缀部分数据在基带信号缓存的起始地址和循环前缀长度,按照循环前缀的长度自循环前缀起始地址开始,从基带信号缓存中顺序读取数据发送循环前缀,然后回到基带信号缓存序列起始地址,开始顺序读取数据发送全部的序列部分,如果前导格式2和3,在发送一次序列部分之后,再次回到序列起始地址完全重复的再发送一次序列部分,对于其他前导格式不用进行序列重复。序列重复及添加循环前缀完成后将整个装置的所有缓存清零,选通信号S0置为初始状态0,S1置为初始状态1。
本发明的系统具体实施例二如图5所示。
其中,仅相位值计算模块200、相加取模模块400、IFFT*模块500的复数转换模块有变化。
把选通信号S0初始状态置为0,通过参数计算得到前导序列根序列号u,查乘法逆因子表得到u的乘法逆因子u-1,根据前导格式0-3或前导格式4有两张乘法逆因子表,以u为索引查旋转因子表,得到旋转因子α,根据前导格式0-3或前导格式4有两张不同的旋转因子表。将u-1和α以及参数计算得出的循环移位值Cv按如下公式
(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)*NIDFT/NZC
进行相位计算,k=0,...,NZC-1,2-1表示2的乘法逆因子,得到前导序列的DFT序列的相位值,依次写入频域信号相位缓存中,写入NZC个数后选通信号S0置为1。
把选通信号S1初始状态置为1,IFFT*模块500的复数转换模块开始接收到相加取模模块400从频域信号相位缓存中读的NZC个相位值。相加取模模块400每次读数都送一份拷贝至IFFT*模块500的复数转换模块,相加取模模块400将输入的相位数据与2k相加后结果对2NIDFT取模,由于相加后的结果最大值不会超过2NIDFT写回频域信号相位缓存,输出数据写地址与输入数据在频域信号相位缓存中的地址相同,即输出数据覆盖写在输入数据在频域信号相位缓存相应位置。
IFFT*模块500的复数转换模块将接收的每一个相位θ按将相位转化为复数,输入IFFT*模块500的IFFT*执行模块进行不包含倒序的IFFT计算。
本发明的系统具体实施例三如图6所示。
参数生成模块100,用于依据LTE协议规定计算出LTE PRACH基带信号产生所需的参数。
根据高层提供的参数(3GPP TS36.211协议规定高层包括MAC和RRC层)计算LTE PRACH基带信号产生所需的参数如下所述。
根据prach_config_index(prach配置索引)查3GPP TS36.211表5.7.1-2和表5.7.1-3得到前导格式;根据前导格式查表1得到序列长度和循环前缀长度;根据RA_RNTI值计算t
RA=(RA_RNTI-1)%10 f
RA=(RA_RNTI-t
RA-1)/10,再进一步计算频域位置
对于前导格式0-3按照以下公式计算。
对于前导格式4,按照以下公式计算。
根据高层指示的preamble_index(前导序列)和RACH_ROOT_SEQUENCE(起始根序列号)计算preamble_index指示的前导序列所属的根序列索引,表示为logic_u,查表得到前导根序列号u以及计算在该根序列组内的前导偏移值v。计算方法分为限制集和非限制集两种情况,high_speed_flag值为0时是非限制集,为1时为限制集。Ncs是一个高层配置的参数。
非限制集情况下计算如下所述。
如果NCS=0,
如果NCS≠0,
根据根序列索引logic_u查表得到前导序列根序列号u。
限制集情况下计算如下所述。
从RACH_ROOT_SEQUENCE开始,计算每一个逻辑根序列号能够产生的所有前导个数,并对这些个数进行累加,直到总和大于等于preamble_index,如果logic_u超过NZC,logic_u=logic_u%NZC,计算每一个logic_u能够产生的所有前导个数的方法如下所述。
根据根序列索引logic_u查表得到前导根序列号u,计算根序列号的乘法逆因子p,计算变量
计算logic_u能够产生的所有前导个数
其中的参数按照以下方法计算。N
ZC为LTE协议中采用的前导格式中进行DFT的质数点数。
如果du满足NCS≤du<NZC/3,
如果du满足NZC/3≤du≤(NZC-NCS)/2,
对于其他du取值每个logic_u只能产生1个前导。当能够产生的前导个数总和大于等于preamble_index时停止累加,preamble_index对应的前导在其所在逻辑根序列号为u,preamble_index对应的前导在其所在逻辑根序列号产生的前导序列中的偏移即为v。
进一步计算前导序列的循环移位值,
相位缓存模块300包括连接相位值计算模块200的输入,频域信号相位缓存连接输出。相位值计算模块200的输出输入到频域信号相位缓存。
相位值计算模块200通过参数生成模块100得到前导序列根序列号u,查乘法逆因子表得到u的乘法逆因子u-1,根据前导格式0-3或前导格式4有两张乘法逆因子表,以u为索引查旋转因子表,得到旋转因子α,根据前导格式0-3或前导格式4有两张不同的旋转因子表。将u-1和α以及参数计算得出的循环移位值Cv,按公式
(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)/NZC
进行相位计算,k=0,...,NZC-1,2-1表示2的乘法逆因子,得到前导序列的DFT序列的相位值,依次写入频域信号相位缓存中。
IFFT*模块500进一步包括复数转换模块和IFFT*执行模块。复数转换模块和IFFT*执行模块之间通过选择器连接。选择器输出连接IFFT*执行模块,一个输入连接复数转换模块输出,一个输入连接复数0输入。
对于不同的前导格式IFFT*的长度和组数有多种可用配置:前导格式0-3NIFFT以及对应a的取值可以取4种配置,分别为
NIFFT=1024a=24;NIFFT=2048a=12;NIFFT=4096a=6;NIFFT=8192a=3;
前导格式4,NIFFT以及对应a的取值可以取5种配置,分别为
NIFFT=256a=16;NIFFT=512a=8;NIFFT=1024a=4;NIFFT=2048a=2;NIFFT=4096a=1
其中前导格式4的最后一种可选配置如果选择做4096点IFFT,相当于没有进行分组。
IFFT*模块500共需完成a=NIDFT/NIFFT次NIFFT点IFFT*运算,待IFFT*模块500完成a次IFFT*,基带信号缓存写满NIDFT数据后,停止基带信号缓存之前的所有运算模块。
把选通信号S初始状态置为1,则选择器选择复数转换模块输出输入IFFT*执行模块。
相加取模模块400从频域信号相位缓存中读数NZC个,相加取模模块400将输入相位数据与2kb/NIDFT相加对2取模,将取模后的值输入复数转换模块。
复数转换模块将取模后的每一个相位θ都经过相位到复数转化模块ejπθ将相位转化为复数输入IFFT*执行模块进行计算。复数转化模块接收NZC个后,选通信号S置为0,则IFFT*执行模块的输入为复数0。
IFFT*执行模块完成不包含倒序的NIFFT点IFFT,将每一个输出数据的未倒序前的序号k′作为参数送至倒序和地址偏移模块600。
倒序和地址偏移模块600内部已存有以未倒序前的序号k′为索引的对应基带信号缓存内序号及地址的一张表格,查该表得到该数据对应于NIDFT点基带信号的序号n′以及基带信号缓存的地址,将序号n′输入至旋转因子计算模块700。旋转因子计算模块700按如下公式计算该输出数据对应的旋转因子
其中除序号n′外其他参数均按协议规定生成,与前导格式有关。
乘法模块800用计算出的旋转因子与IFFT*执行模块的输出数据相乘。
基带信号缓存模块900将相乘结果按照倒序与地址偏移模块查表输出的基带信号缓存写地址写入基带信号缓存当中。
IFFT*执行模块进行完本次IFFT*运算后,将选择器的选通信号S置为1,并启动相加取模模块400从频域信号相位缓存中读取相位值。
IFFT*执行模块完成a次IFFT*运算,基带信号缓存写满NIDFT数据后,停止基带信号缓存之前的所有运算模块。
序列重复及填加循环前缀模块1000根据表1的序列和循环前缀长度,查表得到循环前缀部分数据在基带信号缓存的起始地址和循环前缀长度,按照循环前缀的长度自循环前缀起始地址开始,从基带信号缓存中顺序读取数据发送循环前缀,然后回到基带信号缓存序列起始地址,开始顺序读取数据发送全部的序列部分,如果前导格式2和3,在发送一次序列部分之后,再次回到序列起始地址完全重复的再发送一次序列部分,对于其他前导格式不用进行序列重复。序列重复及添加循环前缀完成后将整个装置的所有缓存清零,选通信号S置为初始状态1。
本发明的系统具体实施例四如图7所示。
其中,仅相位值计算模块200、相加取模模块400、IFFT*模块500的复数转换模块有变化。
通过参数计算得到前导序列根序列号u,查乘法逆因子表得到u的乘法逆因子u-1,根据前导格式0-3或前导格式4有两张乘法逆因子表,以u为索引查旋转因子表,得到旋转因子α,根据前导格式0-3或前导格式4有两张不同的旋转因子表。将u-1和α以及参数计算得出的循环移位值Cv按如下公式
(u-1k(k+1)+(1-u-1)k*2*2-1+α+2kCv)%(2NZC)*NIDFT/NZC
进行相位计算,k=0,...,NZC-1,2-1表示2的乘法逆因子,得到前导序列的DFT序列的相位值,依次写入频域信号相位缓存中。
相加取模模块400开始从频域信号相位缓存中读数NZC个。相加取模模块400将输入的相位数据与2kb相加后结果对2NIDFT取模,将取模后的值输入复数转换模块。
IFFT*模块500的复数转换模块将取模后的每一个相位θ按
将相位转化为复数,输入IFFT*模块500的IFFT*执行模块进行不包含倒序的IFFT计算。
本发明的有益效果详细说明如下所述。
1.本发明结合ZC DFT与分组IFFT产生LTE PRACH基带信号,减少运算量。
现有技术中,在发送前导格式0-3时,DFT长度为839,IDFT长度为24576,在发送前导格式4时,DFT长度为139,IDFT长度为4096。完成139点DFT需要进行19,321次复数乘法,19,182次复数加法,完成4096点IDFT如果不使用快速运算,需要进行16,777,216次复数乘法,16,773,120次复数加法;完成839点DFT需要进行703,921次复数乘法,703,082次复数加法,完成24,576点IDFT需要进行603,979,776次复数乘法,603,955,200次复数加法,这两个步骤的算法复杂度都较高而且运算效率较低,对于质数点DFT无法使用快速算法。
本发明中的LTE PRACH基带信号产生方法结合ZC DFT和分组IFFT*(不包含倒序的IFFT),无需进行质数点DFT。分组IFFT*部分根据IFFT的长度与分组的组数有关,共需进行
次复数乘法,
次复数加法,对于前导格式0-3分组IFFT*(以1024点IFFT*为例)共需要进行110,592次复数乘法,245,760次复数加法,对于前导格式4分组IFFT*(以1024点IFFT*为例)共需要进行18,432次复数乘法,40,960次复数加法并且每一组相位相加、转化为复数与IFFT*或循环卷积的实施装置可以重用;
2.本发明在IFFT*之前均使用相位计算,与直接用复数计算相比,在同样精度条件下,节省频域缓存大小。
3.本发明用分组IFFT*代替24576/4096点IDFT,减少运算量分组IFFT*部分根据IFFT的长度与分组的组数有关,共需进行
次复数乘法,
次复数加法。
对于前导格式0-3分组IFFT*(以1024点IFFT*为例)共需要进行110,592次复数乘法,245,760次复数加法,对于前导格式4分组IFFT*(以1024点IFFT*为例)共需要进行18,432次复数乘法,40,960次复数加法并且每一组相位相加、转化为复数与IFFT*或循环卷积的实施装置可以重用。
4.本发明利用提前生成预置的倒序和地址偏移表,通过查表一次完成IFFT倒序和基带信号缓存地址偏移的运算,无需分别进行IFFT倒序,对倒序后数据进行缓存再进行基带信号缓存地址偏移生成,写入基带信号缓存的过程,节省IFFT倒序后缓存。
对比现有技术中的方法与本发明,计算复杂度如表3所示,其中分组IFFT*的运算复杂度按照1024点IFFT*为例,不同IFFT*实现装置的计算复杂度有所不同,但按照本发明中的整体方法均远小于协议中IDFT的计算复杂度。缓存大小方面,本发明在频域信号相位缓存中使用相位存储,较复数存储节省一半空间;将IFFT倒序和基带信号缓存地址偏移合并计算,IFFT*数据直接写入基带信号缓存,节省IFFT最后一级倒序缓存。
表3
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。