基于plb总线的嵌入式旋转角计算ip软核及旋转角计算方法

文档序号:8395694阅读:524来源:国知局
基于plb总线的嵌入式旋转角计算ip软核及旋转角计算方法
【技术领域】
[0001]本发明属于嵌入式系统中复杂函数的精确计算领域,涉及PLB总线和CORDIC算法,具体涉及基于PLB总线的嵌入式旋转角计算IP软核及旋转角计算方法。
【背景技术】
[0002]CORDIC算法是实现复杂函数计算的经典方法,其基本思想是用查找表、移位和加/减法,不断逼近的方式,来实现三角函数、双曲线、指数、对数等复杂函数的计算。目前,旋转角计算(反正切计算)一般采用反馈式结构或流水线结构实现CORDIC算法,并利用定点运算单元执行算法中的加/减运算功能。这种方案的主要缺陷就是:定点运算精度不足。为了解决精度不足问题,可以把定点运算单元改成浮点运算单元FPU,一般是直接使用现有的浮点运算单元FPU。这种方案的主要缺陷是:FPU的引入会占用FPGA的大量逻辑资源,造成FPGA逻辑资源缺乏。
[0003]中国专利CN201110436482公开了一种基于FPGA的三角函数实现方法,在迭代开始前根据三角函数的对称性把输入角度转化到第一象限,CORDIC算法采用流水线结构,最后将计算出来的结果转换成IEEE-754标准格式。中国专利CN201210168992公开了一种基于浮点运算单元的基本超越函数运算方法及其协处理器,通过增加一个结构简单的函数运算控制模块,在已有浮点运算单元的基础上利用已有浮点运算指令实现三角和反三角函数,双曲函数,指数函数和对数函数的计算;中国专利CN201210433693公开了一种基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,提出了基于配置的伪流水CORDIC算法结构,即将低级数的流水线结构的输出不断反馈回其输入的伪流水形式,实现无限制精度的三角函数运算。中国专利CN201310065877公开了一种覆盖全圆周角度的单精度浮点三角函数的实现方法,将单精度浮点数据转换到[-π/4,Ji/4]的圆周范围内,并转换为高精度定点数据,将得到的高精度定点数据输入至流水线结构的迭代运算模块,计算出高精度定点结果,再将其转换成单精度浮点数据输出。
[0004]以上公开的现有技术中:C0RDIC算法结构主要采用反馈式结构或流水线结构,还有改进后的先流水后反馈的“伪”流水线结构;但在嵌入式系统的应用中,接口封装形式与处理器本地PLB总线接口不一致,不能直接连接在总线上,基于PLB总线外围接口封装形式的旋转角计算IP核暂时还没有。

【发明内容】

[0005]本发明目的在于克服现有技术的不足,提供了一种基于PLB总线的嵌入式旋转角计算IP软核及旋转角计算方法,采用PLB总线接口提高了 IP软核在嵌入式系统中的可移植性。
[0006]为达到上述目的,本发明采用以下技术方案:
[0007]基于PLB总线的嵌入式旋转角计算IP软核,具有PLB总线访问功能,迭代次数可配置功能,旋转角计算功能,计算结果缓存回读功能;包括主控制模块,PLB总线时序转换模块,配置寄存器模块,查找表RAM模块,FIFO模块,象限转换模块和若干个迭代模块;主控制模块和PLB总线时序转换模块均与PLB总线连接,配置寄存器模块、查找表RAM模块和FIFO模块分别与主控制模块连接,象限转换模块分别与主控制模块和若干个迭代模块连接;
[0008]主控制模块用于控制迭代模块的迭代启动、迭代次数和迭代停止,对查找表RAM中计算参数的读取以及FIFO模块的读/写操作;
[0009]配置寄存器模块用于存储配置迭代的次数,迭代计算状态;
[0010]查找表RAM模块用于存放计算过程中的固定参数;
[0011]FIFO模块用于存储旋转角计算的结果;
[0012]象限转换模块用于判断输入角的象限,并将其转换到第一象限的对应角;
[0013]迭代模块由多个浮点移位器和多个浮点加法器构成,多个迭代模块构成多级流水线结构,迭代模块将输出反馈到输入实现多次迭代功能;浮点移位器用于实现单精度浮点数的向左/向右的移位功能;浮点加法器用于实现单精度浮点数的加/减法功能。
[0014]进一步地,包括3个迭代模块,构成3级流水线结构,每个迭代模块由2个浮点移位器和3个浮点加法器构成。
[0015]进一步地,所述象限转换模块根据输入角的正弦值和余弦值的正负号,判断其所在象限,再根据三角函数的诱导公式,将其转换到第一象限,计算出第一象限对应角的正弦值和余弦值以及初始相位。
[0016]进一步地,所述浮点移位器通过遵循“左加右减”的原则,对浮点数的指数部分进行相应位数的加/减,实现单精度浮点数的移位功能。
[0017]一种旋转角计算方法,IP软核包括3个迭代模块,构成3级流水线结构,旋转角计算方法如下:
[0018]第一步,由PLB总线接口配置迭代次数和修改查找表的内容;
[0019]第二步,输入浮点正弦值X0,浮点余弦值YO和浮点初始相位ZO到象限转换模块,将所求的角度转换到第一象限的对应角,其正弦值为xo’,余弦值为Y0’,此时初始相位为Z0’,Z0’ = 0°、±90° 或 ±180° ;
[0020]第三步,将(Χ0’,Υ0’,Ζ0’)送入第I级流水线单元,进行⑶RDIC算法的η次迭代,得到(Xn, Yn, Zn) ; (Xn, Yn, Zn)进入第2级流水线单元,进行CORDIC算法的η次迭代,得到(Χ2η,Υ2η,Ζ2η) ; (Χ2η, Υ2η,Ζ2η)进入第3级流水线单元,进行CORDIC算法的η次迭代,得到(Χ3η,Υ3η,Ζ3η);此时,Y3n ^ 0,Ζ3η即为所求旋转角的计算结果。
[0021]本发明具有以下效果:
[0022](I)本发明基于PLB总线的嵌入式旋转角计算IP软核,多个迭代模块构成多级流水线结构,迭代模块将输出反馈到输入实现多次迭代功能,旋转角计算采用反馈式流水线结构,即先反馈后流水的“真”流水线结构,将单精度浮点型的正弦值和余弦值,转换成单精度浮点角度值,并通过片内总线PLB总线与片内处理器相连,在计算速度上优于“纯”反馈式迭代结构和先流水后反馈的“伪”流水线结构,在占用资源上优于“纯”流水线结构,在嵌入式系统中的可移植性上优于传统的设计。
[0023](2)本发明中单精度浮点运算单元FPU的引入,大大提高了计算精度,15次迭代的计算精度在±0.004°以内,解决定点运算精度不足问题;
[0024](3)本发明中迭代次数根据查找表空间大小配置迭代次数,这将使得计算精度在一定范围内可以无限提高;
[0025](4)本发明中加入象限转换模块,扩展了 CORDIC算法旋转角计算范围,从(-99.88。?99.88。)扩展到(-180。?180。)。
[0026](5)本发明采用PLB总线接口,大大提高了其在嵌入式系统中的可移植性。
[0027]进一步,本发明中包括3个迭代模块,构成3级流水线结构,3η次迭代的3级流水线结构占用FPGA的逻辑资源,是3η次迭代的3η级流水线结构占用FPGA的逻辑资源的I/η,起到了减少逻辑资源的效果。
【附图说明】
[0028]图1是基于PLB总线的嵌入式旋转角计算IP软核的结构框图。
【具体实施方式】
[0029]以下结合附图对本
【发明内容】
进行详细说明:
[0030]本发明基于PLB总线的嵌入式旋转角计算IP软核:旋转角计算采用反馈式流水线结构,即先反馈后流水的“真”流水线结构,将单精度浮点型的正弦值和余弦值,转换成单精度浮点角度值,并通过片内总线PLB总线与片内处理器相连。
[0031]基于PLB总线的嵌入式旋转角计算IP软核具体功能包括:PLB总线访问功能,迭代次数可配置功能,旋转角计算功能,计算结果缓存回读功能。
[0032]本发明是基于PLB总线的嵌入式旋转角计算IP软核,主要由21个基本模块组成,具体包括个主控制模块,I个PLB总线时序转换模块,I个配置寄存器模块,I个查找表RAM模块,I个FIFO模块,I个象限转换模块,6个浮点移位器,9个浮点加法器。<
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1