技术领域
[0001] 本发明涉及信号处理技术领域,特别是一种快速精确的反正切估计方法及电路。
相关背景技术
[0002] 快速而准确的计算复数x=I+jQ反正切的方法正在被各个领域广泛的研究,因为在信号处理中复数角度θ的值有许多应用,计算公式为θ=arctan(Q/I)。目前主流的计算反正切函数的方法有查表法和坐标旋转计算数字计算法(CORDIC,Coordinate Rotation Digital Computer)。其中查表法将Q/I的值指定一个ROM的存储地址,输出为一个对应角度θ的近似值。但是为了得到更高的精确度,这个方法需要建立更大的ROM表,消耗更多的存储资源。CORDIC算法可以计算精确的反正切函数,但是往往需要花费更多的处理时间。以上两种方法无法很好的兼顾反正切计算的精确度和处理速度。
具体实施方式
[0036] 结合附图和实施例对本发明作进一步说明,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
[0037] 本发明提供了一种快速精确的反正切估计方法的实施例,其包括:
[0038] 获取复数X的实部I和虚部Q;基于实部I和虚部Q,分别得到实部I的平方I2,虚部Q2
的平方Q,以及实部I和虚部Q的乘积IQ;
[0039] 基于得到的I2、Q2、IQ,估算反正切函数的计算值。
[0040] 本实施例中,将两个实部I同时输入第一乘法器,输出I2;将两个实部Q同时输入第2
二乘法器,输出Q;将实部I和虚部Q同时输入第三乘法器,输出IQ。
[0041] 本实施例中,将Q2的系数K和Q2同时输入第四乘法器,输出KQ2;
[0042] 将I2和KQ2输入加法器,输出I2+KQ2;将IQ和I2+KQ2输入除法器,输出反正切函数的计算值:
[0043]
[0044] 其中,θ为反正切函数的计算值,K=0.28125。
[0045] 本实施例中,通过二进制右移,消除第四乘法器的使用,即分别对Q2右移2位和右2 2
移5位并对其求和,得到KQ=(1/4+1/32)Q。
[0046] 本实施例中,除法器支持长位宽输入,采用基2算法实现除法运算。
[0047] 本实施例中,根据公式(1)计算得到的θ的范围是‑45°到+45°,对应的约束为‑1≤Q/I≤1;
[0048] 将单位圆分解为8个45°的象限,以将θ的计算范围扩展到‑180°到+180°,解除对输入I、Q值的约束,第一个象限为0~45°,第二个象限为45°~90°,以此类推;
[0049] 同时利用反正切函数的轴对称特性,计算任意一个象限内的反正切函数:
[0050] arctan(‑Q/I)=‑arctan(Q/I) (2)
[0051] arctan(Q/I)=π/2‑arctan(I/Q) (3)
[0052] 根据I、Q的符号和绝对值对象限进行判断,得到象限扩展后的反正切修正值。
[0053] 本实施例中,根据I、Q的符号和绝对值对象限进行判断,得到象限扩展后的反正切修正值,包括:
[0054] 当处于第一或第八象限,I>0,|I|>|Q|,反正切修正值
[0055] 当处于第二或第三象限,Q>0,|Q|>|I|,反正切修正值
[0056] 当处于第四或第五象限,I<0,|I|>|Q|,反正切修正值
[0057] 当处于第六或第七象限,Q<0,|Q|>|I|,反正切修正值
[0058] 本实施例中,I2和Q2可提前被AM调幅或解调器处理计算,或者被自动增益控制包络检波计算,从而节省两个乘法器。
[0059] 由于乘法器输出后运算位数产生了较大的扩展,比如I、Q输入位宽为16bit,则乘法器输出的位宽达到了32bit,为了保持运算精度,除法器需要支持长位宽输入。因此除法器采用基2算法实现除法运算。基2算法不消耗除法器资源,只消耗逻辑资源。
[0060] 参见图1,本发明还提供了一种快速精确的反正切估计电路的实施例,用于实现上述实施例的快速精确的反正切估计方法,其包括第一乘法器、第二乘法器、第三乘法器、第四乘法器、加法器和除法器;第一乘法器、第二乘法器、第三乘法器、第四乘法器均用于对输入的数据进行乘法运算,加法器用于对输入的数据进行加法运算,除法器用于对输入的数据进行除法运算;
[0061] 第一乘法器的输入端用于输入复数X的实部I,其输出端连接加法器的输入端;第二乘法器的输入端用于输入复数X的虚部Q,其输出端连接第四乘法器的输入端;第四乘法器的另一个输入端用于输入系数K,其输出端连接加法器的输入端;第三乘法器的输入端用于输入实部I和虚部Q,其输出端连接除法器的输入端;加法器的输出端连接除法器的输入端;除法器的输出端用于输出反正切函数的计算值。
[0062] 为提高实时处理速度,对输入I、Q值的乘积和平方运算可以使用硬件乘法器资源,每一个时钟周期即可输出一个运算值,因此需要消耗三个硬件乘法器资源。
[0063] 本发明还提供了一种快速精确的反正切估计电路的实施例,用于实现上述实施例的快速精确的反正切估计方法,其包括第三乘法器、加法器和除法器;第三乘法器用于对输入的数据进行乘法运算,加法器用于对输入的数据进行加法运算,除法器用于对输入的数据进行除法运算;
[0064] 第三乘法器的输入端用于输入实部I和虚部Q,其输出端连接除法器的输入端;加2 2 2
法器的输入端用于输入实部I的平方I以及系数K和Q的乘积KQ,其输出端连接除法器的输入端;除法器的输出端用于输出反正切函数的计算值。
[0065] 为提高实时处理速度,对输入I、Q值的乘积和平方运算可以使用硬件乘法器资源,每一个时钟周期即可输出一个运算值,因此需要消耗三个硬件乘法器资源。但是在大部分数字接收机的应用上,和将会提前被AM(调幅)解调器处理计算或被自动增益控制(AGC)包络检波计算,这里可以借用其计算结果,从而节省两个硬件乘法器。
[0066] 由于乘法器输出后运算位数产生了较大的扩展,比如I、Q输入位宽为16bit,则乘法器输出的位宽达到了32bit,为了保持运算精度,除法器需要支持长位宽输入。因此除法器采用基2算法实现除法运算。基2算法不消耗除法器资源,只消耗逻辑资源。
[0067] 本发明与matlab的atan2函数的计算结果相比,最大误差为±0.28°,出现在±45°处,如图2所示。
[0068] 最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。