本发明涉及通信技术领域,具体涉及一种用于COFDM系统的消峰方法。
背景技术:
COFDM系统传输的一个主要的缺点是发射信号的功率峰均比较高,由于COFDM调制是将若干子载波信号在时域进行叠加,如果子载波上的符号相位相同,则时域功率将达到很高。再者为了保证信号的频谱不发生泄漏,发射机功率放大器必须工作在线性区,如果发射功率太大就会导致发射机功率放大器工作在非线性区域,从而导致信号会失真,所以需通过采取一定的消峰技术降低发射信号的峰均比。
技术实现要素:
针对现有技术中存在的问题,本发明的目的在于提出一种用于COFDM系统的消峰方法。
所述的一种用于COFDM系统的消峰方法,其特征在于:包括外部输入模块、幅值相位生成模块、峰值检测和峰值对齐模块、对消脉冲因子计算和改进型滤波成型模块以及求和模块,其消峰步骤为:
a. 外部输入模块获得原始输入数据的I/Q两路输入信号,然后分别把I/Q两路输入信号输送给幅值相位生成模块和求和模块;
b.幅值相位生成模块对I/Q两路输入信号进行判断处理,当I=0或Q=0,则直接把幅值和对应的正弦值与余弦值均输送给峰值检测和峰值对齐模块;否则采用cordic方法求出I/Q两路输入信号的幅值和相位,并求出对应的正弦值与余弦值,然后把幅值和对应的正弦值与余弦值均输送给峰值检测和峰值对齐模块;
c.峰值检测和峰值对齐模块把I/Q输入信号的幅值同门限值进行比较,获得超过门限值的峰值点和峰值位置指示,然后把峰值、正弦值和余弦值经对齐操作后均输送给对消脉冲因子计算和改进型滤波成型模块,同时把峰值位置指示也输送给对消脉冲因子计算和改进型滤波成型模块;
d.对消脉冲因子计算和改进型滤波成型模块根据步骤c获得的峰值、门限值、正弦值和余弦值分别求出对消脉冲因子的I路和对消脉冲因子的Q路,然后对对消脉冲因子的I路和对消脉冲因子的Q路进行滤波成型操作,再把滤波成型操作后的对消脉冲因子的I路和对消脉冲因子的Q路输送给求和模块;
e.求和模块把经延迟处理后的原始输入数据的I路减去对消脉冲因子的I路,获得消峰后的I路输出值;把经延迟处理后的原始输入数据的Q路减去对消脉冲因子的Q路,获得消峰后的Q路输出值。
所述的一种用于COFDM系统的消峰方法,其特征在于:所述外部输入模块获得的I/Q两路输入信号为COFDM系统通过调制输出的I/Q两路离散的时域信号。
所述的一种用于COFDM系统的消峰方法,其特征在于:所述步骤b中先将I/Q两路输入信号同时扩大64倍再采用cordic方法求出I/Q两路输入信号的幅值和相位。
所述的一种用于COFDM系统的消峰方法,其特征在于:所述滤波成型操作包括滤波器设计、滤波成型和幅值放大。
所述的一种用于COFDM系统的消峰方法,其特征在于:所述滤波器设计获得的滤波器的信道宽度与COFDM系统的信号带宽一致。
所述的一种用于COFDM系统的消峰方法,其特征在于:在所述幅值放大过程中,通过调节脉冲放大因子的值放大幅值,脉冲放大因子的位宽设为3比特,其值取0到4的整数。
所述的一种用于COFDM系统的消峰方法,其特征在于:所述脉冲放大因子的值设为3。
所述的一种用于COFDM系统的消峰方法,其特征在于:所述步骤c中峰值检测所用的时间通过计数器count从0到31 - delay_num个时间周期计时,delay_num的值不大于31;峰值对齐操作根据峰值检测输出的延迟数delay_num信号,使峰值位置指示信号延迟31-delay_num个时间周期,然后创建一个用于指示实际最大幅值的位置指示的一个高电平。
所述的一种用于COFDM系统的消峰方法,其特征在于:所述门限值根据外部数据的I/Q两路输入信号未消峰之前的峰均比、I/Q两路输入信号幅值的最大值和目标需要的峰均比三个数据计算得到。
本发明的有益效果是:通过峰值对消的方法实现消峰操作,通过cordic算法实现信号幅值和相位的计算;在误差可允许的情况下通过移位累加替代了平方操作和除法操作;在滤波器方面,用一个频谱与信号带宽一致的滤波器代替了原单载频谱波滤波器,大大降低滤波器设计复杂度,减少芯片资源的使用;通过对滤波器系数归一化原理和信号消峰过程的原理进行分析,添加了一个脉冲放大因子,可减少迭代的次数,进而也减少芯片资源的使用。
附图说明
图1为COFDM调制数据未消峰峰均比的matlab仿真的ccdf曲线图;
图2为1次迭代消峰后峰均比的matlab仿真的ccdf曲线图;
图3为2次迭代消峰后峰均比的matlab仿真的ccdf曲线图。
具体实施方式
下面对本发明作详细说明。
本发明包括外部输入模块、幅值相位生成模块、峰值检测和峰值对齐模块、对消脉冲因子计算和改进型滤波成型模块和求和模块,其步骤为:
a. 外部输入模块获得COFDM系统通过调制输出的I/Q两路离散的时域信号,然后分别把I/Q两路输入信号输送给幅值相位生成模块和求和模块;
b. 幅值相位生成模块对I/Q两路输入信号进行判断处理,当I=0或Q=0,则直接把幅值和对应的正弦值与余弦值均输送给峰值检测和峰值对齐模块;否则采用cordic方法求出I/Q两路输入信号的幅值和相位,并求出对应的正弦值与余弦值,然后把幅值和对应的正弦值与余弦值均输送给峰值检测和峰值对齐模块;对于第二种情况(I和 Q均不为0),由于I/Q输入值有正有负,为了减少设计的复杂度,将其所有I/Q输入值都映射到第一象限,即I/Q的值都为正;且在实现cordic算法中为了满足精度的要求,还需要将I/Q输入值同时扩大64倍,并将扩大64倍之后的数据通过6级cordic_stag,其中每一级都按照下列公式对其输入的I/Q输入值做同样的处理。
如果QK-1>0则
IK=IK-1+21-K * QK-1 , QK=QK-1-21-K * IK-1 ,
其中,K= 1,2,3,4,5,6;
如果QK-1<=0则
IK=IK-1-21-K * QK-1 ,
QK=QK-1+21-K * IK-1 ,
其中,K= 1,2,3,4,5,6。
I0和Q0分别表示I/Q两端输入值扩大后的值;假设初始输入值扩大64倍后,I0=64,Q0=64,则由于Q0>0,第一级输出I1=128,Q1=0;则第二级由于Q1=0,则I2=I1-0.5*Q1=128,Q2=Q1+0.5*I1=64,则第三级由于Q2>0,I3=I2+0.25*Q2=144,Q3=Q2-0.25*I2=32;之后的I4=148,Q4=14;I5=148,Q5=5;I6=148。
cordic_stag第6级的I路输出值乘以一个常数0.607(其中0.607=311/512)再除以64就是原始输入信号幅值的近似值,则此时输出的幅值I6*311/512/64=1.404,则定点化输出为1。
相位是按照Q0Q1Q2Q3Q4Q5组成的6比特作为查找表的输入,查找表是按照如下方式设计:输入的6比特即为对应的角度,且从第1级到第6级分别对应的角度为45o,26.56o ,14.03o ,7.12o ,3.57o,1.80o,输入的6比特中比特值为1,对应的角度为正,比特值为0对应的角度为负。若输入为110000则表示的角度值为45o+26.56o-14.03o-7.12o-3.57o-1.80o=45.04o,对应的输出为sin45o和45o。但是由于正弦函数和余弦函数的最大值只有1,对于实际操作中需要采用定点化处理,故在本次设计中将正余弦值放大2^N-1倍,N=8,即正弦值(正弦值)用9比特表示其有符号的定点化输出值。对于sin45o,cos45o查找表的输出值为sin45o*255=180,cos45o *255=180,其它角度的定点化值也是同样事先算好然后放入查找表中,查找表输出的正弦值和余弦值都是正值,故需要映射还原到各个象限,从而最终确定输出值的正负。
c.峰值检测和峰值对齐模块把I/Q输入的幅值同门限值进行比较,获得超过门限值的峰值点和峰值位置指示,然后把峰值、正弦值和余弦值经对齐操作后均输送给对消脉冲因子计算和改进型滤波成型模块,同时把峰值位置指示也输送给对消脉冲因子计算和改进型滤波成型模块。
门限值是根据外部数据的I/Q两路未消峰的峰均比(PAPR)、I/Q两路输入信号幅值的最大值max(x)和目标需要的峰均比(PAPR)三个数据计算得到。比如,假设未消峰的PAPR值等于A,设计目标需要的PAPR值等于B,根据PAPR的公式:
消峰前:,
消峰后:,
可以得到门限值:
。
在使用峰值检测和峰值对齐模块获得的幅值与设定好的门限值进行比较时,输入的幅值会有两种情况:第一种是每次只输入一个幅值大于门限值,其它都小于门限值;第二种是连续输入的幅值都大于门限值。
对于第一种情况的大于门限值的那个幅值就作为峰值输出,其它的幅值输出不变;对于第二中情况我们将这些连续大于门限值的幅值做比较,取最大幅值作为峰值输出,其它输出不变。在第二种情况中,假如连续大于门限值的幅值如果进来太多,会延迟太多,故我们设定连续比较的个数最多不超过最大检测数目,最大检测数目设为31,其中每个检测一个幅值的时间为1个时间周期,所以最大检测时间为31个时间周期。
在峰值检测中,当被检测的幅值大于门限值,则输出两个信号,分别为峰值位置指示和延迟数(delay_num)信号;当被检测的幅值小于门限值,则输出的峰值位置指示和延迟数(delay_num)信号均为0;其中延迟数(delay_num)表示输进峰值检测和峰值对齐模块的数据在峰值检测时所花费的时间,delay_num不大于31。
峰值检测之后输出的峰值的位置和输入的最大幅值的位置其实不是一一对应的,由于输出的峰值是根据比较之后得到的,故输出的峰值的位置相对实际峰值的位置肯定有一定的延迟,所以需要进行峰值对齐使其输出的峰值和实际峰值一一对应。
第一种情况中峰值需要和后面的一个幅值进行比较才得到,故延迟一个幅值;第二中情况中取的峰值是需要把所有这些大于门限值的幅值进行逐次比较,故输出的峰值与真正的峰值位置相比延迟若干个幅值(每延迟一个幅值代表延迟一个时间周期)。
峰值对齐操作实际上是一个延迟的过程,输入幅值与正弦值(余弦值)的延迟和输入幅值与峰值位置指示的延迟,由于输出峰值位置相比实际峰值的位置是滞后的,在实现中,信号是不能向前移动的,只能向后延迟。
峰值对齐操作根据峰值检测输出的延迟数(delay_num)信号使峰值位置指示信号延迟31-delay_num(31减delay_num)个时间周期,即实现了峰值位置指示和最大幅值的位置一一对应的目的。峰值位置指示信号的延迟操作可以通过一个计数器计数器count从0到31 - delay_num个时间周期计时,然后创建一个高电平,这个高电平就是延迟后的峰值位置指示,也是实际最大幅值的位置指示。
为了使相位信息与输出峰值也一一对应,故正弦值(余弦值)也需经过对齐操作后再输出。
d.对消脉冲因子计算和改进型滤波成型模块根据步骤c获得的峰值、门限值、正弦值和余弦值分别求出对消脉冲因子的I路和对消脉冲因子的Q路,然后对对消脉冲因子的I路和对消脉冲因子的Q路进行滤波成型操作,再把滤波成型操作后的对消脉冲因子的I路和对消脉冲因子的Q路输送给求和模块。
该模块主要用于生成与原信号频谱带宽一致的对消脉冲因子,对消脉冲因子的计算公式为:
对消脉冲因子 = (峰值-门限值)*余弦值+j* (峰值-门限值)*正弦值。
首先根据步骤c输出的峰值、门限值、正弦值和余弦值,计算出对消脉冲因子的I路和对消脉冲因子的Q路,
对消脉冲因子的I路=(峰值-门限值)*余弦值,
对消脉冲因子的Q路=(峰值-门限值)*正弦值。
对消脉冲因子计算完之后还需要对其进行滤波成型操作,因为对消脉冲因子需要和COFDM系统的原始数据进行消减峰值操作,所以需要使对消脉冲因子带宽与COFDM系统的原始数据的带宽一致。
滤波成型操作主要包括3个部分:第一个是设计滤波器,第二个是对对消脉冲因子进行滤波成型,第三个是对成型之后的I/Q两路进行放大处理。
滤波器设计:采用了改进型的滤波器用于滤波成型,对于传统的峰值对消方法中采用的是原单载频谱波滤波器,滤波器带宽等于子载波带宽;对于COFDM系统中,子载波个数为2048个,如果通过设计原单载频谱波滤波器加上频谱搬移和叠加的方式来实现多载波滤波,对于复杂度和资源的消耗是很大的,故将滤波器简化设计为与COFDM系统的信道带宽一致的滤波器。在性能满足的条件下,这样只需要设计一个滤波器就可以完成传统滤波器移位叠加操作,大大降低了设计的复杂度,减少了芯片资源的消耗。滤波器设计方法通过matlab中的fdatool工具设计带宽为8M,截止频率为4M,采样率为36.5M的64阶beta值为3.7的kaiser窗,其设计的滤波器ACPR大于40dbc,将其系数采用14比特定点化存入ROM表中,以便之后的成型操作。
滤波成型:对于一个点的滤波成型操作实质就是这个点与滤波器系数的相乘与累加的过程。对消脉冲计算之后,将I/Q两路与滤波器系数相乘,然后通过SUM模块进行累加操作,即完成了滤波成型操作。在成型过程中,设计4个ROM表,用于对消脉冲因子的成型操作。由于滤波器的系数为65个(系数个数=阶数+1),故当第一个对消脉冲因子在成型过程中如果又出现第二个对消脉冲因子进来,此时第一个还在工作,将采用第2个ROM表,4选1多路选择器优先级是ROM1、ROM2、ROM3、ROM4,即如果ROM1不工作则下一个对消脉冲因子进来时应该先采用ROM1对其进行相乘操作,如果4个ROM都在工作且在这之间又进来了对消脉冲因子,则此时这个对消脉冲因子将被舍弃。在理论上ROM表当然是越多越好,ROM表越多丢弃的对消脉冲因子就越少,但是在实际设计中由于每增加一路处理对消脉冲因子,则相应的硬件资源也需要更多,故在本次设计中我们采用了4张ROM表,即4路通道来处理对消脉冲因子。
幅值放大:为了能使每次峰值对消时都能将峰值砍到门限值附近和减少迭代次数,在设计中新添加了一个叫脉冲放大因子,把这个变量与成型之后对消脉冲因子的I/Q两路相乘,即同时扩大I/Q两路的幅值。这个变量由滤波器系数的归一化和系数最大值决定,设计中滤波器系数归一化为14比特,也即系数之和为2^13-1=8191,低通滤波器系数的最大值归一化后为1972,故对于对消脉冲因子通过滤波器再去归一化后,最大值也就等于峰值减去门限值的四分之一(1972/8191),故一次迭代后峰值还是大于门限值。基于这个原因,我们将脉冲放大因子的位宽设为3比特,其值取0到4的整数:
脉冲放大因子=0时,对应对消因子I和Q幅度不变;
脉冲放大因子=1时,对应对消因子I和Q幅度扩大1倍;
脉冲放大因子=2时,对应对消因子I和Q幅度扩大2倍;
脉冲放大因子=3时,对应对消因子I和Q幅度扩大3倍;
脉冲放大因子=4时,对应对消因子I和Q幅度扩大4倍。
常规的消峰都是通过增加迭代的次数来实现消峰的作用,幅值放大的作用就是将每一次消峰过程中将峰值都消到门限值附近,从而可以减少迭代的次数。
在进行一次迭代过程后将其脉冲放大因子的值分别取2、3和4, 获得的PAPR和EVM指标的影响见表1所示。
表1:不同脉冲放大因子的值对于PAPR和EVM指标的影响
从表1中可以看出虽然脉冲放大因子的值为4时消峰个数最多,消峰2.81dB,取值为3时消峰2.04dB,取值为2时消峰1.30dB,但是取值为4时的EVM在一次迭代就达到了5% 左右,使其表现信号恶化太严重,因为虽然脉冲放大因子取值为4时刚好对消脉冲因子和峰值之差在门限值附近,峰值是被消减了,但是峰值旁边的点会因为与对消脉冲因子的相位相同而出现峰值再生,再生峰值幅度也会变的很大。脉冲放大因子取值为2时虽然EVM才2.42%,但是消峰力度不够,故在实际测试中往往把脉冲放大因子的值设为3。
e.求和模块把经延迟处理后的原始输入数据的I路减去对消脉冲因子的I路,获得消峰后的I路输出值;把经延迟处理后的原始输入数据的Q路减去对消脉冲因子的Q路,获得消峰后的Q路输出值。
求和模块主要是用于将原始输入数据与对消脉冲因子进行相减,以达到消峰的目的。由于前面各个模块的输入输出都有一定的延迟,所以每个模块的延迟数之和就是最后求和模块中对原始I/Q两路输入数据的延迟拍数。经过延迟处理之后的I/Q两路原始数据减去对应的对消脉冲因子的I/Q两路得到的就是消峰后的多载波数据。
对消脉冲因子的带宽与延迟后的原始数据带宽一致,且对消脉冲因子的最大值与延迟后的输入数据的最大幅值都是一一对应的,故通过两者做差可以达到消峰的目的。
在实际测试中,未消峰的COFDM调制数据在误码率在1e-4条件下的PAPR为9.67dB, COFDM调制数据未消峰峰均比的ccdf曲线如图1所示。在设计要求中需要消峰后的PAPR能消减3dB左右,EVM指标小于8%,通过步骤a-e的操作,达到消峰的第一次迭代操作。对于一次迭代之后峰值虽然被消掉一部分,但是根据峰值检测中峰值比较取的只是最大值,还有其它一些大于门限值但小于最大峰值的幅值的;且对于对消脉冲因子滤波成型模块中,我们采用的只是同时对4个对消脉冲因子进行处理,如果输入的对消脉冲因子在小于滤波器系数的长度范围内大于4个,则我们也将多余4个的对消脉冲因子给丢弃。丢弃也就意味着没有对相应的原始数据的峰值进行消峰;故基于以上2个方面考虑,往往一次迭代之后消峰的效果还不是很明显,一次迭代之后峰均比的ccdf曲线如图2所示,EVM指标和消减的PAPR值如表1所示;从一次迭代之后峰均比的的ccdf曲线也看出消峰之后的PAPR值是7.63dB,相比未消峰之前的PAPR值9.67才消了2.04dB,从表1中看出EVM指标为3.62%,符合设计要求;但是峰均比(PAPR)才消减2.03dB,没有符合我们的设计要求。对此我们一般需要二次迭代(重复步骤a-e的操作),二次迭代之后峰均比的ccdf曲线如图3所示,EVM指标如表2所示。
表2:消峰次数对于PAPR和EVM指标的影响
多载波数据经过二次迭代后,PAPR值为6.81dB相比未消峰的9.67下降了2.86dB,EVM指标为4.85%,故符合设计要求。