查字典论文网 >> 多天线信号合并中相位加权值的修正查表算法及FPGA实现

多天线信号合并中相位加权值的修正查表算法及FPGA实现

小编:

摘要:针对白码查表法的储存器利用效率不高问题,给出了一种改进的基于非线性编码的算法和流水线结构,并通过VHDL语言编程,在FPGA上加以实现。仿真结果表明,与白码查表法的计算结果进行比较,非线性编码查表法提高了查表精确度,降低了查找表的大小,便于FPGA实现。

关键词:多天线;信号合并;相位加权值;非线性查表法;VHDL

中图分类号:TN92文献标识码:A文章编号:10053824(2014)04-0019-06

0引言

对多天线信号进行合并后可以有效提高接收信号信噪比[12],这使得多天线系统受到了高度的重视。相位加权是多天线合并的重要组成部分,特别是在信号合并的计算中,如果参与合并的信号之间没有进行相位加权使信号之间相位对齐,则会严重影响信号合并的质量[3]。

现考虑2路信号进行信号合并,设经过时延处理的2路信号分别为x1(t)和x2(t),第1路信号的幅度加权系数为w1,第2路信号的幅度加权系数为w2,2路信号之间的相位差为Δθ,则理论上2路信号加权合并的公式为

用FPGA进行工程实现时,通常采用3类方法计算三角函数值:泰勒展开式算法[4]、Cordic算法[5]和查表算法。泰勒展开式算法需要构造大量的乘法器来实现,而乘法器需要占用大量的硬件资源,因此,此方法不太适用于FPGA。Cordic算法不需要乘法器,其复杂度较泰勒展开式算法有一定的下降,但是它需要大量加法器和移位寄存器,资源消耗也较大。查表法通常预先将满足精度的三角函数值计算出来,储存在ROM表中,计算时只需要提供对应角度值对应的地址,即可通过查表得到相应的三角函数值,查表法的计算精度较前2种方案低,本文对该方法进行讨论。

由于三角函数是非线性函数,通常要增加其计算精度,就需要增加相应储存量。本文给出了一种修正的查表算法:非线性编码查表法。通过非线性编码,有效地解决了查表法在应对非线性函数造表时的精度问题,并且通过VHDL语言编程,在FPGA上加以实现。仿真结果表明,非线性编码查表法的实现效果准确可靠。

1非线性编码查表法

查表法一般只在函数定义域的部分区间造表,将选取的这个区间称为造表区间(记为R),用分段点r0,r1,…,rn-1,rn将造表区间划分成若干份,查找表中记录的只是点r0,r1,…,rn-1,rn对应的函数值[6]。通常的白码查表法采取的划分方法是等距划分,由此定义造表间距D=ri+1-ri。

为解决线性表中储存器利用效率不高的问题,本文在查表时,对于反正切函数进行非线性变换,其目的是使函数区以非均匀方式划分区间,从而提高高斜率区间的查表精度,并且有效地遏止传统白码查表法在低斜率区间上的精度浪费。

非线性编码查表法结构如图1所示。查表时,首先通过输入互相关值确定当前角度的查表地址,通过查表得到反正切函数值(角度),而后通过角度的具体大小确定正余弦函数储存地址进行第2级查表,得到角度对应的正余弦值。

其次,将(4)式中的各个分段点对应的反正切值计算出来作为反正切查找表的样值点。并利用(3)式将各个分段点对应的正余弦函数值计算出来,分别储存到正余弦值查找表中,作为第2级查表的样值点。这就构成了非线性编码查表法的2级查找表。

最后,对(4)式中的分段点进行非线性编码生成查表的地址,地址编码格式为:段落码+段内码;地址编码的位长l根据造表区间样值点数m确定,其中l=lbm。具体编码方式如下。

设某正切值对应的二进制数为a,对这个二进制数进行位数截取,截取得到的s位的值为a1,其中s=lbN;若a大于造表区间最大值N,此时a1=N。若将其编为10位的非线性码,再将这些码字作为地址查表得到反正切值。取10位非线性码中高4位为段落码,低6位为段内码。如果该正切值的最高位d(20)=1,则段落码编为“1111”,段内码为d(19)d(14);否则,若d(19)=1,则段落码编为“1110”,段内码为d(18)d(13);如此,直到d(6)=1,则段落码为“0001”,段内码为d(5)d(0);否则,段落码为“0000”,段内码为d(5)d(0)。

具体编码流程可以总结为图2。

2算法精度分析

由于查表法是用靠近样值点的数据值来近似当前查表函数值,而对于反正切函数来说,最大斜率出现在坐标原点处,最大斜率为:k=11+x2x=0=1,所以越是靠近原点处,查表得到的反正切函数值误差越大;查表结果的最大误差为arctan(Δx/2)。图3是普通查表法和非线性编码查表法的最大误差曲线。白码查表法和非线性编码查表法均使用1 024样值点的查找表。可以看出,非线性编码查表法有效地提高了查表法计算反正切的计算精度。白码查表法要达到同样的精度需要增加样值点数量,占用的储存空间要大得多。

计算反正切函数最大误差曲线图4和图5分别是查表法最终得到的正余弦函数值误差曲线图,2种查表法均采用1 024个样值点的数据表。可以看出,在数据表大小相同的情况下,非线性编码查表法得到的正余弦值相对于白码线性查表法的值具有更好的误差性能,特别是在角度较小时,非线性编码查表法的性能优势更大。

设2信号互相关值的实部和虚部的位宽均为32位,为了得到相位差正切值,需进行2者间的除法运算。在FPGA实现时,采用定点运算,若在计算中虚部小于实部,则会出现商为0的情况。为了解决这一问题,在进行定点除法运算前,先对虚部数据进行放大,放大的倍数视需求相位精度而定。

由于最终的相位加权值是相位差对应的正、余弦值,所以上述反正切查找表中储存的并不是真实的反正切函数值,而是存储去查找正、余弦值查找表的地址。由于反正切表中只储存了[090°]的相位值,因此通过查表得到的对应的相位差正、余弦值之后,还要根据相关值中实部和虚部的极性确定正、余弦值得符号。正、余弦值的符号与相关值虚部、实部极性的关系见表1。

热点推荐

上一篇:异构网络切换判决算法的研究

下一篇:如何对幼儿进行德育教育论文 幼儿园关于德育教育之类的论文

2023年小学二年级雾 二年级美术娃娃家教案(实用19篇) 小学校园景色作文400字 小学校园风景作文(5篇)