首页> 中国专利> 可重构星载计算机的正余弦函数IP核及其控制方法

可重构星载计算机的正余弦函数IP核及其控制方法

摘要

可重构星载计算机的正余弦函数IP核及其控制方法。它涉及航天航空的电子技术领域。它解决了初始赋值存在舍入误差对结果影响很大问题;角度越大需要迭代次数越多的缺陷。初始化模块连右移N位模块和1模块,1模块连余弦值存储器,右移N位模块连正弦值存储器,余正弦值存储器连减加法器和第一乘法器,减加法器连第二乘法器再连余弦值存储器,第一乘法器连左移1位模块再连正弦值存储器,控制器连正余弦值存储器。将η映射到[0,π/2]内成为θ;判断θ≤β,是直接赋值到最后一步,否迭代运算,近似准则得到初始赋值,利用二倍角公式计算,判断n<N,是再次计算,否完成运算;最终根据符号位判断所得到的结果的正负,赋予正余弦函数值。本发明应用于进行姿态控制。

著录项

  • 公开/公告号CN102156626A

    专利类型发明专利

  • 公开/公告日2011-08-17

    原文格式PDF

  • 申请/专利权人 哈尔滨工业大学;

    申请/专利号CN201110107337.9

  • 申请日2011-04-27

  • 分类号G06F7/548(20060101);

  • 代理机构23109 哈尔滨市松花江专利商标事务所;

  • 代理人岳泉清

  • 地址 150001 黑龙江省哈尔滨市南岗区西大直街92号

  • 入库时间 2023-12-18 02:56:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-06-18

    未缴年费专利权终止 IPC(主分类):G06F7/548 授权公告日:20121010 终止日期:20130427 申请日:20110427

    专利权的终止

  • 2012-10-10

    授权

    授权

  • 2011-09-28

    实质审查的生效 IPC(主分类):G06F7/548 申请日:20110427

    实质审查的生效

  • 2011-08-17

    公开

    公开

说明书

技术领域

本发明涉及航天航空的电子技术领域。

背景技术

随着可重构技术在航天领域的应用不断开拓,基于FPGA(Field Programmable GateArray,现场可编程门阵列)的星载计算机已成为卫星电子系统的研究热点。使用以FPGA为核心的卫星电子系统可以降低微小卫星的体积、重量、功耗和成本,提高系统的功能密度。

姿态确定与姿态控制处理是星载计算机的重要功能之一,在传统的星载计算机中,多依靠调用C语言数学函数库中的标准sincos函数进行姿态控制算法的计算,其计算正余弦函数的时间高达2.5μs/次(精确到小数点后7位),可见软件计算正余弦函数的耗时很长。一般采用IP核计算正余弦函数的算法有查表法、多项式展开法、CORDIC算法及迭代法。其中查表法虽然也可以快速实现,但受限于存储设备的大小和速度;多项式展开法不受存储空间的限制,但是需要归一化后才能保证收敛,并且精度不高;CORDIC算法可以达到任意的精度,但其计算速度与计算精度有关,计算精度要求越高,结果收敛的速度就越慢;迭代法最快,但是迭代次数与计算角度有关,计算角度越大,所需的迭代次数就越多。迭代算法的原理是:对于任一输入角度θ,将其除以2N,当N足够大时,都会得到一个很小的角度α≈θ/2N。根据近似准则,可近似得到sinα≈α、cosα≈1。利用二倍角公式

sin2α=2×sinα×cosα

cos2α=(cosα+sinα)×(cosα-sinα)

迭代N次即可得到输入角度的正余弦值。

从原理可知:当角度不大时,较小的N便能满足近似赋值要求,迭代的次数较少,计算的速度很快。在迭代的过程中,可以使用两个寄存器存储计算结果,作为下次迭代的输入,而不需要额外的存储空间,并且可以同时计算出正余弦函数值。但迭代算法的初始赋值存在舍入误差,其对结果影响很大;迭代过程中保留位数有限,存在截断误差,随着迭代次数的增多,积累的误差增大;对于不同角度,需要的迭代次数不同,角度越大,需要的迭代次数越多,因此需要进一步优化。

发明内容

本发明解决为了现有迭代算法的初始赋值存在舍入误差,其对结果影响很大的问题;以及对于不同角度,需要的迭代次数不同,角度越大,需要的迭代次数越多的缺陷,而提出一种可重构星载计算机的正余弦函数IP核及其控制方法。

可重构星载计算机的正余弦函数IP核包括初始化模块1、右移N位模块2、1模块3、减法器4、加法器5、第一乘法器6、第二乘法器7、左移1位模块8、正弦值存储器9、余弦值存储器10和控制器11;初始化模块1的输入端为可重构星载计算机的正余弦函数IP核的角度η输入端,初始化模块1的两个输出端分别连接右移N位模块2的输入端和1模块3的输入端,1模块3的输出端连接余弦值存储器10的第一输入端,右移N位模块2的输出端连接正弦值存储器9的第一输入端,余弦值存储器10的输出端分别连接减法器4的第一输入端、加法器5的第一输入端和第一乘法器6的第一输入端,正弦值存储器9的输出端分别连接减法器4的第二输入端、加法器5的第二输入端和第一乘法器6的第二输入端,减法器4的输出端连接第二乘法器7的第一输入端,加法器5的输出端连接第二乘法器7的第二输入端,第二乘法器7的输出端连接余弦值存储器10的第二输入端,第一乘法器6的输出端连接左移1位模块8的输入端,左移1位模块8的输出端连接正弦值存储器9的第二输入端,正弦值存储器9的第四输出端为可重构星载计算机的正余弦函数IP核的正弦输出端,余弦值存储器10的第四输入端为可重构星载计算机的正余弦函数IP核的余弦输出端,控制器11的两个信号控制端分别连接正弦值存储器9的控制信号接收端和余弦值存储器10的控制信号接收端。

可重构星载计算机的正余弦函数IP核的控制方法的步骤如下:

步骤一:根据三角函数的周期性将角度η映射到[0,π/2]内成为输入角度θ,并设置符号位;

步骤二:进行预判断,判断输入的输入角度θ是否小于等于给定的临界角度β,是,即当β≥θ时,则直接利用sinθ=θ、cosθ=1进行赋值进入步骤四,否,即当β<θ≤π/2时,则进入步骤三;

步骤三:迭代运算:

步骤1:对输入的输入角度θ进行迭代运算,将输入角度θ除以2N,根据近似准则得到初始赋值:

sinα=θ/2N

cosα=1

n=0

其中,N表示总的迭代次数,n表示第n次迭代;

步骤2:利用二倍角公式进行计算:

cos2n+1α=(cos2nα+sin2nα)×(cos2nα-sin2nα)

sin2n+1α=2×sin2nα×cos2nα

n=n+1

步骤3:判断n<N,是,则返回步骤2再次计算,否,则进入步骤4;

步骤4:完成迭代运算得到输入角度θ的正余弦值sinθ=sin2Nα,cosθ=cos2Nα;

步骤四:根据符号位判断所得到的结果的正负,赋予正余弦函数值,得到最终正余弦值。

本发明的目的是设计一种利用FPGA硬件计算sincos函数的IP核,作为可重构星载计算机的协处理器,进行姿态控制,提高可重构星载计算机的性能。卫星姿态控制中对计算的实时性要求很高,迭代法的计算速度最快且占用资源也较少,所以本发明根据实际需要对迭代法进行优化,迭代算法中的舍入误差和截断误差是不可避免的,但可以通过增加寄存器位数的方法使误差减小。为精确到小数点后7位,本发明中将保留15位有效数字进行迭代运算,并且计算机保存双精度浮点数的误差在10-15~10-16之间,故本发明中保留15位有效数字进行迭代运算。当计算角度较大时,迭代次数很大才能满足精度要求,适当缩小计算角度的范围可以提高计算的效率。此外,对于小角度直接赋值便可以满足精度要求,进行迭代运算反而会增加不必要的计算量,并且有可能使精度降低,根据分析在设计中对迭代算法进行优化:计算角度η正余弦函数的定义域为(-∞,+∞),根据三角函数的周期性,将输入角度θ映射到[0,π/2]内,并设置符号位,再输入角度θ正余弦函数的计算。计算角度的范围缩小,使得迭代次数减少,积累误差小,提高了计算的速度和精度。当输入角度θ小于等于给定的临界角度β时,直接赋值,不需要进行迭代也可以达到精度的要求,提高计算的速度。

附图说明

图1是可重构星载计算机的正余弦函数IP核的控制方法的流程图;图2是可重构星载计算机的正余弦函数IP核的结构示意图。

具体实施方式

具体实施方式一:结合图1说明本实施方式,本实施方式步骤如下:

步骤一:根据三角函数的周期性将角度η映射到[0,π/2]内成为输入角度θ,并设置符号位;

步骤二:进行预判断,判断输入的输入角度θ是否小于等于给定的临界角度β,是,即当θ≤β时,则直接利用sinθ=θ、cosθ=1进行赋值进入步骤四,否,即当β<θ≤π/2时,则进入步骤三;

步骤三:迭代运算:

步骤1:对输入的输入角度θ进行迭代运算,将输入角度θ除以2N,根据近似准则得到初始赋值:

sinα=θ/2N

cosα=1

n=0

其中,N表示总的迭代次数,n表示第n次迭代;

步骤2:利用二倍角公式进行计算:

cos2n+1α=(cos2nα+sin2nα)×(cos2nα-sin2nα)

sin2n+1α=2×sin2nα×cos2nα

n=n+1

步骤3:判断n<N,是,则返回步骤2再次计算,否,则进入步骤4;

步骤4:完成迭代运算得到输入角度θ的正余弦值sinθ=sin2Nα,cosθ=cos2Nα;

步骤四:根据符号位判断所得到的结果的正负,赋予正余弦函数值,得到最终正余弦值。

具体实施方式二:本实施方式与具体实施方式一不同点在于步骤二中的临界角度β的求取:

预期达到的设计精度为10-m,根据初始赋值的原理,临界角度β应满足:

sinβ-β10-m1-cosβ10-m

例如,预期达到的设计精度为10-7,临界角度β应满足:

sinβ-β10-71-cosβ10-7

求的β=0.0014。其它组成和连接方式与具体实施方式一相同。

具体实施方式三:本实施方式与具体实施方式一或二点在于步骤3中的总的迭代次数N为21次;采用迭代算法实现正余弦函数的主要误差有:舍入误差和截断误差。当迭代过程保留有效数字较多时,截断误差对计算结果影响很小,可以忽略不计,故仅考虑在初始赋值中产生的舍入误差。

对sinx、cosx进行Taylor展开,有:

sinx=x-x3/3!+x5/5!-…

cosx=1-x2/2!+x4/4!-…

当x的值远小于1时,只需要保留展开式的第一项即可满足计算精度的要求。

令α≈θ/2N,设第n步迭代计算正弦、余弦的误差分别为εn、Δn,采用递推法推导正余弦函数的误差表达式。首先进行初始赋值,sinα≈α、cosα≈1,将高次幂误差忽略,则有

ε0=|-α3/3!+α5/5!-…|≈α3/3!

Δ0=|-α2/2!+α4/4!-…|≈α2/2!

以此类推,发现迭代误差的大小与α、迭代的次数有关,推导迭代误差如表1所示:

表1 迭代误差

  迭代次数  正弦计算误差  余弦计算误差  0  α3/3  α2/2  1  4α3/3  α2  2  20α3/3  2α2  3  88α3/3  4α2  n  2n-1(2n-2/3)α3  2n-1α2

当θ>1时,可得

2n-1(2n-2/3)α3≈22n-1α3

=(2n-1α2)·(2nα)

=2n-1α2·θ>2n-1α2

根据上式推导可知:角度较大时,正弦计算的误差大于余弦计算的误差,只需考虑正弦计算的精度即可。在迭代算法中角度越大,迭代次数越多。当θ=π/2时,根据正弦计算误差公式可知,达到10-7的精度需要迭代21次,所以对于[0,π/2]内任一角度迭代21次可以达到设计精度的要求。其它组成和连接方式与具体实施方式一或二相同。

具体实施方式四:结合图2明本实施方式,本实施方式包括初始化模块1、右移N位模块2、1模块3、减法器4、加法器5、第一乘法器6、第二乘法器7、左移1位模块8、正弦值存储器9、余弦值存储器10和控制器11;初始化模块1的输入端为可重构星载计算机的正余弦函数IP核的角度η输入端,初始化模块1的两个输出端分别连接右移N位模块2的输入端和1模块3的输入端,1模块3的输出端连接余弦值存储器10的第一输入端,右移N位模块2的输出端连接正弦值存储器9的第一输入端,余弦值存储器10的输出端分别连接减法器4的第一输入端、加法器5的第一输入端和第一乘法器6的第一输入端,正弦值存储器9的输出端分别连接减法器4的第二输入端、加法器5的第二输入端和第一乘法器6的第二输入端,减法器4的输出端连接第二乘法器7的第一输入端,加法器5的输出端连接第二乘法器7的第二输入端,第二乘法器7的输出端连接余弦值存储器10的第二输入端,第一乘法器6的输出端连接左移1位模块8的输入端,左移1位模块8的输出端连接正弦值存储器9的第二输入端,正弦值存储器9的第四输出端为可重构星载计算机的正余弦函数IP核的正弦输出端,余弦值存储器10的第四输入端为可重构星载计算机的正余弦函数IP核的余弦输出端,控制器11的两个信号控制端分别连接正弦值存储器9的控制信号接收端和余弦值存储器10的控制信号接收端。

初始化模块1,用于将输入的角度η映射到[0,π/2]内成为输入角度θ,还用于进行预判断,判断输入角度θ是否小于等于给定的临界角度β,是,则直接赋值,否,则将输入角度θ转换为等效整数同时发送给右移N位模块2和1模块3;所述的输入角度θ为双精度浮点数中的规格化数或正实数零,数值范围为[0,2),由于FPGA提供的乘法器仅支持乘法计算,为了保证可以调用第一乘法器6和第二乘法器7,因此将将双精度浮点数转换为等效整数,从而加快运算速度。

其转换过程:首先,读出双精度浮点数的符号、阶码和尾码并保存,接下来,将尾码每一位对应权重相加得到权重和P,之后,根据阶码计算移位数N及移位方向,最终,等效的整数为P/2N;保留小数点后15位,即将浮点数乘1e+15,输入二进制数各位权重表如表2所示:

表2 输入二进制数尾码权重表

  尾码  52  51  50  49  0  权重  1e+15  5e+14  2.5e+14  1.25e+14  0

其中,IEEE 754标准规定了双精度浮点数的二进制存储的编码,双精度浮点数中符号位为1位、阶码为11位、尾码为52位,共64位,占2个连续32位字;

右移N位模块2、1模块3、减法器4、加法器5、第一乘法器6、第二乘法器7和左移1位模块8,用于对等效整数进行N次迭代运算;

右移N位模块2,用于根据接收的等效整数来输出正弦函数迭代的初始值sin=θ/2N,并将正弦函数迭代的初始值发送给正弦值存储器9;

1模块3,用于根据接收的等效整数来输出余弦函数迭代的初始值cos=1,并将余弦函数迭代的初始值发送给余弦值存储器10;

正弦值存储器9,用于存储接收到的正弦值,并将该正弦值作为下一次迭代的正弦输入值或最终的正弦输出值,当接收到控制器11的控制输入信号时,则将该存储的正弦值作为下一次迭代的正弦输入值分别发送减法器4、加法器5和第一乘法器6,当接收到控制器11的控制输出信号时,则将该存储的正弦值作为最终的正弦输出值转换为双精度浮点数向外输出;

余弦值存储器10,用于存储接收到的余弦值,并将该余弦值作为下一次迭代的余弦输入值或最终的余弦输出值,当接收到控制器11的控制输入信号时,则将该存储的余弦值作为下一次迭代的余弦输入值分别发送减法器4、加法器5和第一乘法器6,当接收到控制器11的控制输出信号时,则将该存储的余弦值作为最终的余弦输出值转换为双精度浮点数向外输出;

正弦值存储器9和余弦值存储器10对输出的整数结果进行如下操作将其转换为双精度浮点数输出:首先,输出结果一定为正整数,符号位S=0;其次,对输出结果进行右移N位操作(对于十进制数即为乘2N操作),使结果满足在1e+15至2e+15之间,并存储右移位数N和结果R;最终,根据右移位数N可得阶码值;根据尾码权重表2可以判断结果R对应尾码各位的值。计算正余弦函数,其结果在0-1之间,保留小数点后15位,可知利用乘法器IP核实现迭代算法的输出结果(十进制表示)在0-1e+15之间。

减法器4,用于将输入的正弦函数值与余弦函数值做差cos-sin,并将获得的差发送给第二乘法器7,

加法器5,用于将输入的正弦函数值与余弦函数值做和cos+sin,并将获得的和发送给第二乘法器7,

第一乘法器6,用于输入的正弦函数值与余弦函数值相乘cos×sin,并将获得的乘积发送给左移1位模块8,

第二乘法器7,用于将加法器的输出值与减法器的输出值相乘(cos+sin)×(cos-sin),并将获得的乘积发送给为余弦值存储器10;

左移1位模块8,将第一乘法器6的输出值左移1位,完成乘2的操作2×cos×sin,并将其输出值发送给为正弦值存储器9;

表3为双精度浮点数、等效整数及其对应二进制格式乘积的对应关系。从中可以看出,调用乘法器进行乘法运算时,输出位数会加倍。二进制表示时,乘法器IP核输入最多为128位,输出为256位。当二进制表示时,n位数与n位数相乘,将会输入2n位数。迭代几次后会发现:输出二进制位数将超过乘法器所能计算的范围,迭代将不能继续下去。需要在每次乘法运算后进行截断位数的操作,才可以保证迭代的继续。从表3可以看出,对于保留小数点后N位的进行迭代时,截断位数操作相当于将乘法器的结果进行除10N操作,并四舍五入取整。下面以保留小数点后两位进行说明,整数两位数最大可用7位二进制数表示,故选择乘法器输入为2个7位二进制数,输出为14位二进制数。表4所示为输出二进制数各位的权重,十进制数4300(二进制表示为01000011001100),将二进制表示的各位权重相加得43,与表3中截断位数的结果相同,故解决了乘法运算位数加倍的问题。

表3 不同数据格式乘积的对应关系

  乘积  结果  截断位数  浮点数  0.50×0.86  0.4300  0.43  等效整数  50×86  4300  43  二进制  0110010×1010110  01000011001100  0101011

表4 输出二进制数各位权重表

  输出二进制各位  13  12  11  10  9  8  7  6  5…0  权重  82  41  20  10  5  3  1  1  0

控制器11,用于给正弦值存储器9和余弦值存储器10发送控制信号,当控制模块4计数到N时,则停止迭代运算分别向正弦值存储器9和余弦值存储器10发送控制输出信号,当控制模块4计数未到N时,则继续迭代运算分别向正弦值存储器9和余弦值存储器10发送控制输入信号。

本发明内容不仅限于上述各实施方式的内容,其中一个或几个具体实施方式的组合同样也可以实现发明的目的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号