用于AUV运动控制器的浮点数乘加IP核及控制方法与流程

文档序号:23068680发布日期:2020-11-25 18:46阅读:166来源:国知局
用于AUV运动控制器的浮点数乘加IP核及控制方法与流程
本发明涉及fpga
技术领域
,特别涉及一种用于auv运动控制器的浮点数乘加ip核及控制方法。
背景技术
:自主水下机器人(auv)作为一种重要的水下运载以及作业工具,其精确的轨迹跟踪能力以及姿态控制能力是完成各种水下勘探、搜救以及水下特种作业的技术基础。目前现有技术,为了提高在复杂的海洋环境下自主水下机器人的安全性,兼顾自主水下机器人的鲁棒性和实时性,通常将鲁棒控制算法应用于自主水下机器人中,由于鲁棒控制算法中具有大量的矩阵乘法迭代运算,通常采用fpga控制器进行矩阵乘法的运算。鲁棒控制器的离散状态空间状态方程表达式如下所示:其中:xk为状态向量,uk为控制器输出,ek为控制器输入,ak、bk和ck为系数矩阵。由于矩阵运算的计算效率直接影响着整体系统的性能,当采用fpga进行大量的乘累加操作时,随着维度的增长,乘累加运算也呈指数增长,严重影响了计算效率,实时性差。技术实现要素:为解决现有技术中采用fpga进行矩阵运算计算效率低、实时性差的技术问题,本发明提供了一种用于auv运动控制器的浮点数乘加ip核,充分利用fpga并行计算的处理机制,实现了鲁棒控制算法高速的实时迭代计算,提高了计算效率和实时性。本发明提供了一种用于auv运动控制器的浮点数乘加ip核,所述浮点数乘加ip核包括:输入模块、乘累加器和输出模块,所述乘累加器包括:多个乘法逻辑计算模块、多个加法逻辑计算模块以及存储模块;多个所述乘法逻辑计算模块均与所述输入模块、所述存储模块和所述输出模块相连,多个所述加法逻辑计算模块与所述存储模块和所述输出模块相连;所述输入模块用于输入乘法浮点数;所述存储模块用于存储加法浮点数,所述加法浮点数包括所述乘法逻辑计算模块的计算结果和所述加法逻辑计算模块的计算结果;所述乘法逻辑计算模块用于乘法浮点数的逻辑计算;所述加法逻辑计算模块用于所述存储模块中加法浮点数的逻辑计算;所述输出模块用于输出乘法浮点数的计算结果。进一步地,所述乘法逻辑计算模块包括:第一判断单元、尾数位相乘单元、指数位相加单元及第一拼接单元;所述第一判断单元与所述输入模块相连,所述尾数位相乘单元与所述第一判断单元和所述输出模块相连,所述指数位相加单元与所述尾数位相乘单元和所述输出模块相连,所述第一拼接单元与所述输入模块、所述尾数位相乘单元、所述指数位相加单元及所述存储模块相连。进一步地,所述第一判断单元用于对乘法浮点数进行特殊值判断,输出第一判断结果;所述尾数位相乘单元用于当接收到第一判断完成信号时,根据所述第一判断结果进行乘法浮点数的尾数位相乘,并标准化处理尾数位相乘结果,输出标准化后的尾数位相乘结果和指数位进位标志信号;所述指数位相加单元用于当接收到尾数位相乘完成信号时,根据所述指数位进位标志信号进行乘法浮点数的指数位相加,输出指数位相加结果;所述第一拼接单元用于当接收到指数位相加完成信号时,将乘法浮点数的符号位异或确定乘积符号,将乘积符号、标准化后的尾数位相乘结果以及指数位相加结果进行拼接,输出乘法浮点数的乘积结果至所述存储模块。进一步地,所述乘法逻辑计算模块还包括:第一时钟单元,所述第一时钟单元分别与所述第一判断单元、所述尾数位相乘单元、所述指数位相加单元及所述拼接单元相连,用于设定计算一次乘法浮点数相乘所需的时钟个数。进一步地,所述加法逻辑计算模块包括:第二判断单元、指数位对阶单元、尾数位加减单元、标准化处理单元及第二拼接单元;其中,所述第二判断单元与所述存储模块相连,所述指数位对阶单元与所述第二判断单元、所述存储模块及所述输出模块相连,所述尾数位加减单元与所述指数位对阶单元相连,所述标准化处理单元与所述指数位对阶单元和所述尾数位加减单元相连,所述第二拼接单元与所述指数位对阶单元、所述标准化处理单元、所述存储模块和所述输出模块相连。进一步地,所述第二判断单元用于对所述存储模块的加法浮点数进行特殊值判断,输出第二判断结果;所述指数位对阶单元用于当接收到第二判断完成信号时,根据所述第二判断结果进行加法浮点数绝对值的比较,根据加法浮点数绝对值比较结果进行加法浮点数的指数位对阶,输出指数位对阶结果;所述尾数加减单元用于当接收到指数位对阶完成信号时,根据指数位对阶结果,比较加法浮点数的符号位,根据加法浮点数符号位的比较结果进行加法浮点数尾数位相加或相减,输出尾数位加减结果;所述标准化处理单元用于当接收到尾数位加减完成信号时,根据指数位对阶结果和尾数位加减结果,标准化处理指数位对阶结果和尾数位加减结果,输出标准化处理结果;所述第二拼接单元用于当接收到标准化处理完成信号时,将指数位对阶结果和标准化处理结果进行拼接,输出加法浮点数的相加结果至所述存储模块或所述输出模块。进一步地,所述加法逻辑计算模块还包括:第二时钟单元,所述第二时钟单元分别与所述第二判断单元、所述指数位对阶单元、所述尾数位加减单元、所述标准化处理单元及所述第二拼接单元相连,用于设定计算一次加法浮点数相加所需的时钟个数。进一步地,所述乘累加器为多个。本发明还提供一种控制方法,所述控制方法应用于如上所述的用于auv运动控制器的浮点数乘加ip核中,所述控制方法包括:输入乘法浮点数;根据乘法浮点数进行逻辑计算,并存储乘法浮点数的逻辑计算结果;以乘法浮点数的逻辑计算结果作为加法浮点数,根据加法浮点数依次进行逻辑计算,并依次存储加法浮点数的逻辑计算结果,直至加法浮点数的逻辑计算结束;根据加法浮点数的逻辑计算结果,输出乘法浮点数的计算结果。本发明的技术效果或优点:(1)本发明提供的用于auv运动控制器的浮点数乘加ip核,充分利用fpga并行计算的处理机制,实现了鲁棒控制算法高速的实时迭代计算,提高了计算效率和实时性。(2)本发明提供的用于auv运动控制器的浮点数乘加ip核,自主设计了乘法逻辑计算模块和加法逻辑计算模块,减少了计算一次乘法浮点数相乘和加法浮点数相加所需的时钟个数。附图说明图1为本发明实施例提供的一个用于auv运动控制器的浮点数乘加ip核的结构示意图;图2为本发明实施例提供的一个乘累加器的结构示意图;图3为本发明实施例提供的一个乘法逻辑计算模块的结构示意图;图4为本发明实施例提供的一个加法逻辑计算模块的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为解决现有技术中采用fpga进行矩阵运算计算效率低、实时性差的技术问题,本发明提供了一种用于auv运动控制器的浮点数乘加ip核,充分利用fpga并行计算的处理机制,实现了鲁棒控制算法高速的实时迭代计算,提高了计算效率和实时性。下面结合具体实施例及说明书附图,对本发明的技术方案作详细说明。参考图1,图1为本发明实施例提供的一个用于auv运动控制器的浮点数乘加ip核的结构示意图。本发明提供了一种用于auv运动控制器的浮点数乘加ip核,所述ip核包括:输入模块、乘累加器和输出模块,乘累加器包括:多个乘法逻辑计算模块、多个加法逻辑计算模块以及存储模块;多个乘法逻辑计算模块均与输入模块、存储模块和输出模块相连,多个加法逻辑计算模块与存储模块和输出模块相连;输入模块用于输入乘法浮点数;存储模块用于存储加法浮点数,加法浮点数包括乘法逻辑计算模块的计算结果和加法逻辑计算模块的计算结果;乘法逻辑计算模块用于乘法浮点数的逻辑计算;加法逻辑计算模块用于存储模块中加法浮点数的逻辑计算;输出模块用于输出乘法浮点数的计算结果。本发明实施例提供的用于auv运动控制器的浮点数乘加ip核,充分利用fpga并行计算的处理机制,实现了鲁棒控制算法高速的实时迭代计算,提高了计算效率和实时性。具体的,参考图1和图2,用于auv运动控制器的浮点数乘加ip核包括:输入模块、乘累加器和输出模块,输入模块与乘累加器相连,乘累加器与输出模块相连。结合鲁棒控制算法的特点,为实现同一时钟周期内并行运算矩阵乘法,乘累加器为多个,使得矩阵乘法的时间复杂度降为o(n2)。其中,乘累加器包括多个乘法逻辑计算模块、多个加法逻辑计算模块以及存储模块,多个乘法逻辑计算模块均与输入模块、存储模块和输出模块相连,多个加法逻辑计算模块与存储模块和输出模块相连。需要说明的是,一个加法逻辑计算模块与输出模块相连。多个乘法逻辑计算模块可实现矩阵浮点数相乘的并行运算。参考图2,图2是乘累加器的结构示意图,从图2中可以看出,乘累加器中所述乘法采用并行计算方式,假设存在n个乘法逻辑计算模块,则加法逻辑计算模块为n-1个,则采用n个乘法逻辑计算模块进行乘法运算时,只需经过1个乘法逻辑计算模块计算时间间tmult就能得到所有的乘积,然后将乘积依次累加,经过n-1个加法逻辑计算模块计算时间tadd即可得到累加结果。因此,乘累加器计算所需要的时间为tmult+(n-1)tadd,时间复杂度进一步降低到o(n)。输入模块用于输入乘法浮点数。其中,浮点数为计算机中采用的一种数的标识方法,用二进制科学计数法表示。在乘法浮点数相乘运算时,两个浮点数a和b相乘过程如公式(1)所示。将浮点数a和b按照ieee-754标准表示后,公式(1)可转化为公式(2)。式中,sa和sb、ma和mb、ea和eb分别是a和b的符号位、尾数位、指数位,⊕为异或运算符。用二进制科学计数法表示的两个浮点数a和b相加过程如公式(3)所示。假定浮点数a的绝对值大于等于b的绝对值,将浮点数a和b按照ieee-754标准表示后,公式(3)表示可转化为公式(4)。式中,sa和sb、ma和mb、ea和eb分别是a和b的符号位、尾数位和指数位,d是a和b的指数差(d=ea-eb)。所以,计算两个浮点数相乘和相加时,只需根据两个浮点数的符号位、尾数位和指数位即可得到计算结果。存储模块用于存储加法浮点数,加法浮点数包括乘法逻辑计算模块的计算结果和加法逻辑计算模块的计算结果。乘法逻辑计算模块用于乘法浮点数的逻辑计算。参考图3,具体地说,乘法逻辑计算模块包括与第一判断单元、尾数位相乘单元、指数位相加单元及第一拼接单元。第一判断单元与输入模块相连,尾数位相乘单元与第一判断单元和输出模块相连,指数位相加单元与尾数位相乘单元和输出模块相连,第一拼接单元与输入模块、尾数位相乘单元、指数位相加单元及存储模块相连。其中,第一判断单元用于对乘法浮点数进行特殊值判断,输出第一判断结果;尾数位相乘单元用于当接收到第一判断完成信号时,根据第一判断结果进行乘法浮点数的尾数位相乘,并标准化处理尾数位相乘结果,输出标准化后的尾数位相乘结果和指数位进位标志信号;指数位相加单元用于当接收到尾数位相乘完成信号时,根据指数位进位标志信号进行乘法浮点数的指数位相加,输出指数位相加结果;所述第一拼接单元用于当接收到指数位相加完成信号时,将乘法浮点数的符号位异或确定乘积符号,将乘积符号、标准化后的尾数位相乘结果以及指数位相加结果进行拼接,输出乘法浮点数的乘积结果至存储模块。更具体地说,第一判断单元对乘法浮点数进行特殊值进行判断时,可出现如表1所示的第一判断结果。表1浮点数乘法特殊值判断结果分类乘法浮点数a和b的搭配情况判断结果都为非特殊数且都不为0正常数至少一个为nan或正无穷与负无穷相乘nan至少一个为0且都是非特殊数0至少一个为无穷且不为其他非特殊数无穷其中,乘法逻辑计算模块可按如下流程进行乘法浮点数a和b的乘法运算:第一判断单元对乘法浮点数a和b进行特殊值判断,输出第一判断完成信号和第一判断结果;尾数位相乘单元根据第一判断完成信号和第一判断结果判断第一判断结果是否为特殊情况,当为特殊情况时,输出模块输出第一判断结果,当不为特殊情况时,对乘法浮点数a和b的尾数位进行相乘,并标准化处理尾数位相乘结果,输出标准化后的尾数位相乘结果、尾数位相乘完成信号和指数位进位标志信号;指数位相加单元根据尾数位相乘完成信号和指数位进位标志信号对乘法浮点数a和b的指数位进行相加,并判断指数位相加结果是否溢出,若溢出,则输出模块输出指数位相加结果,若未溢出,则输出指数位相加结果和指数位相加完成信号;第一拼接单元根据指数位相加完成信号,将乘法浮点数a和b的符号位异或确定乘积符号,将乘积符号、标准化后的尾数位相乘结果以及指数位相加结果进行拼接,将乘法浮点数的乘积结果存储于存储模块。在一个实施例中,乘法逻辑计算模块还包括:第一时钟单元,第一时钟单元分别与第一判断单元、尾数位相乘单元、指数位相加单元及第一拼接单元相连,用于设定计算一次乘法浮点数相乘所需的时钟个数。参考表2,表2是乘法逻辑计算模块性能对比表。从表2中可看出,自主设计的乘法逻辑计算模块计算一次乘法浮点数相乘最低只需6个时钟,而现有的ip核则需11个时钟,提高了计算的效率。表2乘法逻辑计算模块性能对比表乘法器时钟个数乘法逻辑计算模块6现有乘法器ip核11加法逻辑计算模块用于存储模块的加法浮点数的逻辑计算。参考图4,加法逻辑计算模块包括:第二判断单元、指数位对阶单元、尾数位加减单元、标准化处理单元及第二拼接单元;其中,第二判断单元与存储模块相连,指数位对阶单元与第二判断单元相连、存储模块及输出模块相连,尾数位加减单元与指数位对阶单元相连,标准化处理单元与指数位对阶单元和尾数位加减单元相连,第二拼接单元与标准化处理单元、存储模块和输出模块相连。第二判断单元用于对存储模块的加法浮点数进行特殊值判断,输出第二判断结果;指数位对阶单元用于当接收到第二判断完成信号时,根据第二判断结果进行加法浮点数绝对值的比较,根据加法浮点数绝对值比较结果进行加法浮点数的指数位对阶,输出指数位对阶结果;尾数加减单元用于当接收到指数位对阶完成信号时,根据指数位对阶结果,比较加法浮点数的符号位,根据加法浮点数符号位的比较结果进行加法浮点数尾数位相加或相减,输出尾数位加减结果;标准化处理单元用于当接收到尾数位加减完成信号时,根据指数位对阶结果和尾数位加减结果,标准化处理指数位对阶结果和尾数位加减结果,输出标准化处理结果;第二拼接单元用于当接收到标准化处理完成信号时,将指数位对阶结果和标准化处理结果进行拼接,输出加法浮点数的相加结果至存储模块或输出模块。更具体地说,第二判断单元对乘法浮点数进行特殊值进行判断时,可出现如表3所示的第二判断结果。表3浮点数加法特殊值判断结果分类其中,加法逻辑计算模块可按如下流程进行加法浮点数a和b的相加:第二判断单元对加法浮点数a和b进行特殊值判断,输出第二判断完成信号和第二判断结果;指数位对阶单元根据第二判断完成信号和第二判断结果,判断第二判断结果是否为特殊情况,若为特殊情况,则输出模块输出第二判断结果,若不为特殊情况,则比较加法浮点数a和b的绝对值大小,使得加法浮点数a的绝对值大于等于加法浮点数b的绝对值,若加法浮点数a的绝对值小于加法浮点数b的绝对值,则将加法浮点数a和加法浮点数b进行交换,然后判断加法浮点数a和加法浮点数b的指数位是否相等,若相等,输出指数位对阶结果和指数位对阶完成信号,若不相等,根据加法浮点数a和加法浮点数b的指数位差对加法浮点数b进行非标准化处理,使加法浮点数b的指数位与加法浮点数a的指数位相等,输出指数位对阶结果和指数位对阶完成信号;尾数加减单元根据指数位对阶完成信号和指数对阶结果,比较加法浮点数a和加法浮点数b的符号位是否相同,若相同,则将加法浮点数a和加法浮点数b的尾数位相加,输出尾数位加减结果和尾数位加减完成信号,若不同,则将加法浮点数a和加法浮点数b的尾数位相减,输出尾数位加减结果和尾数位加减完成信号;标准化处理单元根据尾数位加减完成信号和尾数位加减结果,对尾数位和指数位进行标准化处理,并判断加法浮点数a和加法浮点数b的指数位是否溢出,若溢出,则输出模块输出标准化处理结果,若未溢出,则输出标准化处理结果和标准化完成信号;第二拼接单元接收到标准化处理完成信号时,将指数位对阶结果和标准化处理结果进行拼接,输出加法浮点数的相加结果,当乘法浮点数累加未结束时,存储模块存储加法浮点数相加结果,当乘法浮点数累加结束时,输出模块输出加法浮点数的相加结果。在一个实施例中,加法逻辑计算模块还包括:第二时钟单元,第二时钟单元分别与第二判断单元、指数位对阶单元、尾数位加减单元、标准化处理单元及第二拼接单元相连,用于设定计算一次加法浮点数相加所需的时钟个数。参考表4,表4是加法逻辑计算模块性能对比表。从表4中可看出,自主设计的加法逻辑计算模块计算一次加法浮点数相乘最低只需6个时钟,而现有的ip核则需14个时钟,提高了计算的效率。表4加法逻辑计算模块性能对比表加法器时钟个数加法逻辑计算模块6现有加法器ip核14在自主设计的乘法逻辑计算模块和加法逻辑计算模块的基础上,利用多个乘累加器搭建一个五维鲁棒控制器,从而对自主设计的fpga的ip核性能进行验证。fpga控制器使用的时钟频率为50mhz,额外时间消耗为20个时钟,自主设计的乘法逻辑计算模块和加法逻辑计算模块最少消耗的时钟个数都为6,所以自主设计的fpga控制器计算一次最少需要56个时钟,而采用现有ip核搭建的控制器则需要101个时钟,计算效率提升了80%。表5为控制器采用自主设计的ip核与采用现有ip核的性能对比,可以看出应用自主设计的ip核所设计的控制器有着更高的计算效率,这为一些需要更高频率控制的应用场景实现提供了可能性。此外,在fpga控制器硬件允许的范围内提高时钟频率,可以进一步提高控制器的计算能力,实现更高频率的鲁棒控制。表5时钟为50mhz时的鲁棒控制器性能对比鲁棒控制器最高计算频率(mhz)自主设计ip核0.892现有ip核0.495本实施例提供的用于auv运动控制器的浮点数乘加ip核,充分利用fpga并行计算的处理机制,实现了鲁棒控制算法高速的实时迭代计算,提高了计算效率和实时性。自主设计了乘法逻辑计算模块和加法逻辑计算模块,减少了计算一次乘法浮点数相乘和加法浮点数相加所需的时钟个数。本实施例还提供一种控制方法,控制方法应用于如上所述的用于auv运动控制器的浮点数乘加ip核中,控制方法包括:输入乘法浮点数;根据乘法浮点数进行逻辑计算,并存储乘法浮点数的逻辑计算结果;以乘法浮点数的逻辑计算结果作为加法浮点数,根据加法浮点数依次进行逻辑计算,并依次存储加法浮点数的逻辑计算结果,直至加法浮点数的逻辑计算结束;根据加法浮点数的逻辑计算结果,输出乘法浮点数的计算结果。以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1