发明内容
本发明所要解决的技术问题是现有旁瓣抑制方法会降低频谱利用率和增加系统复杂度的不足,提供一种基于预编码实现OFDM旁瓣抑制的方法与装置。
为解决上述问题,本发明是通过以下技术方案实现的:
基于预编码实现OFDM旁瓣抑制的方法,包括如下步骤:
步骤1、根据上位机模块送来的目标频段[fD,fU],确定该目标频段对应的反傅里叶变换采样点下标向量L及向量L的长度len;
步骤2、根据目标频段对应的反傅里叶变换采样点下标向量L确定目标频段对应的OFDM子载波向量flen;
步骤3、根据目标频段对应的OFDM子载波向量flen确定目标频段对应的傅里叶变换矩阵E;
步骤4、根据确定的目标频段对应的傅里叶变换矩阵E确定干扰矩阵A;即
A=EFHD
式中:A为干扰矩阵;F为N×len的蝶形矩阵,该蝶形矩阵中的各元素为e-j2pnk/N,n为行数,n=1,2,…,N,k为列数,k=1,2,…,len;FH表示对蝶形矩阵F求共轭转置;D为N×N的对角矩阵,D=diag(1,e-j2pv/N,...e-j2pv(N-1)/N);上述N为反傅里叶变换采样的点数,len为向量L的长度;
步骤5、先对所得的干扰矩阵A进行奇异值分解后获得一个N×N的分解酉矩阵V,再从N×N的分解酉矩阵V中抽取当中的最后M列构成一个N×M的分解子矩阵VG;上述N为反傅里叶变换采样的点数,M为信源输出的信源向量c的长度,N>M;
步骤6、将长为M的信源向量c复制M行,得到M×M的信源酉矩阵Q;
步骤7、将所得分解子矩阵VG与所得信源酉矩阵Q相乘,得到预编码矩阵G;
步骤8、先将预编码矩阵G与信源数据c相乘,得到预编码数据d,再并对预编码数据d进行反傅里叶变换;
步骤9,将反傅里叶变换后的预编码数据d进行数字上变频,并最终实现旁瓣抑制。
所述步骤1具体为:设上位机模块送来的目标频段为[fD,fU],fD与fU分别为目标频段的下限截止频率和上限截止频率,则目标频段对应的反傅里叶变换采样点下标的下限值lmin和上限值lmax分别为:
①
②
式①和②中:lmin为目标频段对应的反傅里叶变换采样点下标的下限值;lmax为目标频段对应的反傅里叶变换采样点下标的上限值;f0为OFDM子载波的基频;Δf为OFDM子载波的频率间隔;则目标频段对应的反傅里叶变换采样点下标向量L为:
L=[lmin,lmin+1,…lmax] ③
向量L的长度为len,len=lmax-lmin+1。
所述步骤2中,求解OFDM子载波向量flen的公式为:
flen=f0+ΔfLT ④
式中,符号T表示向量的转置,向量flen为长度为len的列向量。
所述步骤3中,确定目标频段对应的傅里叶变换矩阵E的公式为:
⑤
式中,Ts为反傅里叶变换采样时间间隔,E为len×len的矩阵。
基于上述旁瓣抑制方法而设计的一种基于预编码实现OFDM旁瓣抑制的方法与装置;其主要由数据源模块、基带信号处理模块和主用户上位机组成;数据源模块的输入端连接基带信号处理模块的输入端,基带信号处理模块连接基带信号处理模块的控制端;上述基带信号处理模块至少包括调制映射模块和数字上变频模块;其特征在于:上述基带信号处理模块进一步包括一预编码模块,且该预编码模块增设在调制映射模块和数字上变频模块之间;即调制映射模块的输出端与预编码模块的输入端相连,预编码模块的输出端连接数字上变频模块的输入端,主用户上位机连接数字上变频模块的输入控制端,数字上变频模块的输出控制端连接预编码模块的控制端。
上述装置中,预编码模块主要由乘法器模块、IFFT模块、奇异值分解模块、地址计数器模块和2个随机存取存储器(RAM)组成;乘法器模块的一个输入端连接数据源模块,乘法器模块的输出端经IFFT模块与第一RAM的输入端相连,第一RAM的输出端连接奇异值分解模块的输入端,奇异值分解模块的一个输出端连接数字上变频模块的输入端,奇异值分解模块的另一个输出端经第二RAM连接乘法器模块的另一个输入端,第一RAM的控制端连数字上变频模块的输出控制端,第二RAM的控制端连接地址计数器模块的输出端。
上述装置中,奇异值分解模块是一个由16个SVD处理器组成的阵列。
与现有技术相比,本发明根据用户设定的目标频段对应的傅里叶变换矩阵,确定目标频段对应的干扰矩阵,后将干扰矩阵进行奇异值分解后确定预编码矩阵,再根据预编码矩阵对信源数据进行预编码,以实现旁瓣抑制。本发明能在不降低频谱利用率和不增加硬件实现复杂度的情况下,在目标频段上产生足够深的频谱凹槽,从而最大限度地抑制认知用户对主用户的干扰。
具体实施方式
将信源数据进行QPSK/16QAM映射,并进行反傅里叶变换。设信源产生了M个相互独立且无记忆的信源向量,记为c,即:
c=[c0,...,cM-1]T
将经过预编码模块后的信源向量记为d,即:
d=Gc
式中,G为N×M的预编码矩阵。本发明所要解决的问题就是求出预编码矩阵G。
经过反傅里叶变换及插入循环前缀后,一个OFDM符号可表示为:
s=[s0,...,sK-1]T
式中,K表示一个OFDM符号所包含的OFDM子载波个数,从而s中的任意一个元素可表示为:
式中,v为循环前缀的长度,N为反傅里叶变换的采样点数,K=N+v。对向量s进行傅里叶变换,可以得到一个OFDM符号的频域表示形式为:
式中,Ts为反傅里叶变换采样时间间隔;f为OFDM符号占据的频率范围,它根据具体的通信协议确定;S为OFDM符号的频谱函数。
根据目标频段的频率值确定目标频段对应的反傅里叶变换采样点下标向量L,从而确定目标频段对应的傅里叶变换矩阵。
设[fD,fU]为上位机模块送来的需要抑制的目标频段,则根据公式可以很容易地确定目标频段对应的反傅里叶变换采样点下标向量L,进而确定目标频段对应的OFDM子载波向量flen及目标频段对应的傅里叶变换矩阵E。fD和fU分别为目标频段的下限频率和上限频率。则目标频段对应的反傅里叶变换采样点下标的下限值lmin和上限值lmax分别为:
lmin为目标频段对应的反傅里叶变换采样点下标的下限值;lmax为目标频段对应的反傅里叶变换采样点下标的上限值;f0为OFDM子载波的基频;Δf为OFDM子载波的频率间隔;则目标频段对应的反傅里叶变换采样点下标向量L为:
L=[lmin,lmin+1,...lmax]
向量L的长度为len,len=lmax-lmin+1。
根据向量L可确定目标频段对应的OFDM子载波向量flen为:
flen=f0+ΔfLT
式中,符号T表示向量的转置,向量flen为长度为len的列向量。
根据向量flen可以确定目标频段对应的傅里叶变换矩阵E为:
式中,Ts为反傅里叶变换采样时间间隔。E为len×len的矩阵。根据矩阵E可以确定目标频段对应的频谱函数为:
式中,N为反傅里叶变换采样点数。E为目标频段对应的傅里叶变换矩阵,F为一个N×len的蝶形矩阵。蝶形矩阵F中的元素为e-j2pnk/N,其中n=1,2,…,N,k=1,2,...,len。FH表示对蝶形矩阵F求共轭转置。D为循环前缀矩阵,且为N′N的对角矩阵,D=diag(1,e-j2pv/N,...e-j2pv(N-1)/N)。G为N×M的预编码矩阵。c为信源向量。上述K表示一个OFDM符号所包含的OFDM子载波个数,K=N+v,N为反傅里叶变换采样的点数,v为循环前缀的长度。
要抑制认知用户对主用户的旁瓣干扰,需要使认知用户的发送频谱在目标频段的发射端形成频谱凹槽,即需要使发送频谱在目标频段对应的反傅里叶变换采样点处的值为零,即:
S(flen)=0
从式中可以看出,EFHD决定了发送频谱在目标频段处的干扰大小。令A=EFHD,将A称为干扰矩阵,则问题转化为求预编码矩阵G,使得S(flen)=0成立,即:
AGc=0
将干扰矩阵进行奇异值分解,最终确定预编码矩阵G。
为了求解上式,并将矩阵A进行奇异值分解,得:
A=U∑V
式中,U和V分别是L×L和N×N的酉矩阵,∑是一个L×N的对角矩阵,其主对角线上的元素为矩阵A的奇异值。因此,预编码矩阵G可以被当成是矩阵A的零空间的正交基,即:
G=VGQ
式(15)中,VG为矩阵V的一个N×M的子矩阵,它由矩阵V的最后M列组成。Q为由信源向量c组成的M×M的酉矩阵。
基于以上分析,本发明所设计的一种基于预编码实现OFDM旁瓣抑制的方法,如图1所示,其包括如下步骤:
步骤1、根据上位机模块送来的、需要抑制的目标频段确定目标频段对应的反傅里叶变换(IFFT)采样点下标向量L。假设上位机模块送来的目标频段为[fD,fU],fD与fU分别为目标频段的下限截止频率和上限截止频率,则目标频段对应的反傅里叶变换采样点下标的下限值和上限值分别为:
①
②
式①,②中:lmin为目标频段对应的反傅里叶变换采样点下标的下限值;lmax为目标频段对应的反傅里叶变换采样点下标的上限值;f0为OFDM子载波的基频;Δf为OFDM子载波的频率间隔;则目标频段对应的反傅里叶变换采样点下标向量L为:
L=[lmin,lmin+1,...lmax] ③
向量L的长度为len,len=lmax-lmin+1。
该步骤在数字上变频模块中实现。
步骤2、根据目标频段对应的反傅里叶变换采样点下标向量L确定目标频段对应的OFDM子载波向量flen。即
flen=f0+ΔfLT ④
式中,符号T表示向量的转置,向量flen为长度为len的列向量。
步骤3、根据目标频段对应的OFDM子载波向量flen确定目标频段对应的傅里叶变换矩阵,即:
⑤
式中,Ts为反傅里叶变换采样时间间隔,E为len×len的矩阵。
该步骤在预编码模块的IFFT模块中实施,矩阵E中的元素存在RAM中。
步骤4、根据确定的目标频段对应的傅里叶变换矩阵E确定干扰矩阵A。即
A=EFHD ⑥
式中:A为干扰矩阵。F为N×len的蝶形矩阵,该蝶形矩阵中的各元素为e-j2pnk/N,n=1,2,…,N,k=1,2,…,len。FH表示对蝶形矩阵F求共轭转置。D为循环前缀矩阵,且为N×N的对角矩阵,D=diag(1,e-j2pv/N,...e-j2pv(N-1)/N),上述N为反傅里叶变换采样的点数,v为循环前缀的长度。
该步骤在预编码模块的IFFT模块中实施,矩阵F中的元素存在第一RAM中。
步骤5、对干扰矩阵A进行奇异值分解后获得一个N×N的分解酉矩阵V,然后从N×N的分解酉矩阵V中抽取当中的最后M列构成一个N×M的分解子矩阵VG。其中N为反傅里叶变换采样的点数,M为信源输出的信源向量c的长度,N>M。
该步骤在预编码模块的奇异值分解模块中实施。
步骤6、将调制映射前的长为M的信源向量c复制M行,得到M×M的信源酉矩阵Q。
步骤7、根据所得的分解子矩阵VG和信源酉矩阵Q求解出预编码矩阵G,即
G=VGQ ⑦
式中:VG为分解子矩阵。Q为信源向量c组成的M×M的信源酉矩阵,M为信源输出的信源向量c的长度。
该步骤在预编码模块的乘法器模块中实施。
步骤8、先根据所得的将预编码矩阵G与信源向量c求解预编码数据d,即
d=Gc ⑧
式中:d为预编码数据。G为预编码矩阵。c为信源向量。
再并对预编码数据d进行反傅里叶变换。
该步骤在预编码模块的乘法器模块中实施。
步骤9,将反傅里叶变换后的预编码数据d进行数字上变频,并最终实现旁瓣抑制。
该步骤在IFFT模块和数字上变频模块中实现。
本旁瓣抑制方法在matlab环境中对该方法的性能和插入干扰抵消子载波的方法(AIC)进行了仿真对比。仿真参数设置如下:系统子载波数为128,主用户占用的频段(认知用户需要关闭的目标频段)对应的子载波序号为18-23,子载波调制方式为BPSK。信道为AWGN信道。仿真结果如图7所示,从仿真结果可以看出,直接关闭目标频段子载波大约能产生-10dB的陷波深度,而使用传统方法插入5个主动干扰抵消(AIC)子载波可以产生大约-30dB的陷波深度,而本专利提出的方法与插入10个AIC子载波的方法性能相仿,大约能产生-40dB的陷波深度。显然,本专利提出的方法在取得与传统的AIC方法相仿的性能的同时,提高了频带利用率,提高了传输的有效性。
本旁瓣抑制方法在相同的参数下对该方法的误码率性能与传统的AIC方法进行了仿真对比。仿真结果如图8所示,从图中可以看出,本专利所提出的方法误码性能与传统方法相比略有下降,但也足以保证认知用户的正常通信。
基于上述方法所设计的一种基于预编码实现OFDM旁瓣抑制的装置,如图2所示,主要由数据源模块、基带信号处理模块和主用户上位机组成,数据源模块的输入端连接基带信号处理模块的输入端,基带信号处理模块连接基带信号处理模块的控制端。其中基带信号处理模块包括依次相连的调制映射模块、数字上变频模块、D/A变换模块、射频模块、功率放大模块和天线,以及增设在调制映射模块和数字上变频模块之间的预编码模块。数据源模块的输出端连接调制映射模块的输入端,调制映射模块的输出端与预编码模块的输入端相连,预编码模块的输出端连接数字上变频模块的输入端,数字上变频模块的输出端经D/A变换模块连接射频模块的输入端,射频模块的输入端与功率放大模块的输入端相连,天线连接在功率放大模块的输出端上。主用户上位机连接数字上变频模块的输入控制端,数字上变频模块的输出控制端连接预编码模块的控制端。上述认知OFDM系统中旁瓣抑制装置的关键模块。
数据源模块用来产生独立无记忆的基带数据送到调制映射模块。调制映射模块用来将数据源模块送来的基带数据进行16QAM调制映射。预编码模块用来对经过16QAM调制映射后的数据进行滤波处理,使得基带数据经过上变频后的频谱在目标频段范围内形成频谱凹槽。主用户上位机用来将主用户占用频谱情况作为指示信号发送给数字上变频模块。数字上变频模块将预编码后基带信号搬移到中频频段,并将主用户上位机送来的指示信号进行解析后转化为IFFT采样点的下标信号Index,Index信号经过反馈支路与预编码模块相连。D/A变换模块用来将数字上变频模块输出的数字中频信号变换成模拟中频信号。射频模块用来将D/A变换模块输出的模拟中频信号变换到射频频段。功率放大模块将射频模块输出的射频信号进行功率放大后经天线发射出去。调制映射模块和预编码模块均在FPGA芯片上实现。FPGA芯片采用ISE公司的virtexIV系列xc4v55芯片,该芯片内部集成了大量分布式RAM用于实现逻辑设计、块RAM用于数据高速存储、PLL用于时钟的管理、嵌入式乘法器用于数字信号的处理、高速收发器用于数据通信等等,具有并行处理能力强﹑运算速度快、成本低﹑可靠性高、编程灵活等优点。
预编码模块的结构如图3所示,其主要由乘法器模块、IFFT模块、奇异值分解模块、地址计数器模块和2个随机存取存储器(RAM)组成。乘法器模块的一个输入端连接数据源模块,乘法器模块的输出端经IFFT模块与第一RAM的输入端相连,第一RAM的输出端连接奇异值分解模块的输入端,奇异值分解模块的一个输出端连接数字上变频模块的输入端,奇异值分解模块的另一个输出端经第二RAM连接乘法器模块的另一个输入端,第一RAM的控制端连数字上变频模块的输出控制端,第二RAM的控制端连接地址计数器模块的输出端。调制映射后的基带数据c经过乘法器模块后与IFFT模块相连。IFFT模块的运算结果存入第一RAM中,由数字上变频模块发来的下标信号Index对第一RAM的读地址进行控制,将需要进行预编码处理的IFFT采样值读取出来。从第一RAM中读取出的IFFT采样值与奇异值分解模块相连。奇异值分解模块的结果存入第二RAM中,第二RAM在地址计数器的控制下输出奇异值分解的结果到乘法器模块,完成预编码过程。IFFT模块、乘法器模块和RAM均调用FPGA芯片的IP核实现。
奇异值分解模块的结构如图4所示,其是一种由16个SVD处理器组成的阵列,用来实现一个8×8的矩阵A的奇异值分解。SVD处理器由旋转角度计算模块和双边旋转模块两大功能模块组成。其中每一个SVD处理器用来实现矩阵A的2×2子矩阵的对角化。在如图4所示阵列结构中:旋转角度计算模块位于阵列的对角线上,并行地计算每次迭代旋转的左右旋转角度,计算完成后将旋转角度传递给各个双边旋转模块;双边旋转模块接收到旋转角度计算模块传来的左右旋转角度以后,并行地进行双边旋转运算,以求得用于下一次迭代所需的矩阵数据。
用SVD处理器实现2×2矩阵对角化的过程如下:
式中,a,b,c,d代表SVD处理器中所包含的2×2子矩阵的四个元素。θl和θr分别代表左、右旋转角度与相乘的过程称为左旋转;相乘得到的新矩阵再与相乘的过程成为右旋转。在进行双边旋转之前,需要先确定旋转角度θl和θr。由矩阵理论可知,θl和θr可由下式确定:
根据式(18),确定出旋转角度计算模块和双边旋转角度计算模块的过程如下:
旋转角度计算模块的结构如图5所示,具体工作过程如下:
(1)输入对角线上2×2基本矩阵元素a,b,c,d,利用加减法器计算出d+a,c-b,c+b,d-a。
(2)加减法器输出的计算结果d+a,c-b,c+b,d-a送到反正切模块。反正切模块采用ISE的反正切IP核实现。两个反正切模块分别输出运算结果arctan[(c+b)/(d-a)]和arctan[(c-b)/(d+a)],即θr+θl和θr-θl。
(3)反正切模块的运算结果分别送到加法器和减法器,求得2θr和2θl。
(4)将2θr和2θl送到移位寄存器模块,执行右移一位操作,得到θl和θr。
双边旋转角度计算模块的结构如图6所示,具体工作过程如下:
(1)利用两个Cordic模块对分别对矩阵的两个列向量进行旋转:将(a,c)、(b,d)和左旋转角度θl送入Cordic模块。运算完成后,得到新矩阵Cordic模块采用ISE的CordicIP核实现。
(2)利用两个Cordic模块分别对新矩阵的两个行向量进行旋转运算,旋转角度为θr。得到新矩阵
(3)Cordic算法中,执行一次Cordic旋转的扩展因子为Kn,在双边旋转过程中执行了两次Cordic旋转运算。扩展因子为因此,第(2)步得到的新矩阵需要通过一个乘法器乘以才能得到对角矩阵