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

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

Info

Publication number
CN104714773B
CN104714773B CN201510096287.7A CN201510096287A CN104714773B CN 104714773 B CN104714773 B CN 104714773B CN 201510096287 A CN201510096287 A CN 201510096287A CN 104714773 B CN104714773 B CN 104714773B
Authority
CN
China
Prior art keywords
module
anglec
iteration
rotation
floating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510096287.7A
Other languages
English (en)
Other versions
CN104714773A (zh
Inventor
唐雷雷
刘露
唐金锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
771 Research Institute of 9th Academy of CASC
Original Assignee
771 Research Institute of 9th Academy of CASC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 771 Research Institute of 9th Academy of CASC filed Critical 771 Research Institute of 9th Academy of CASC
Priority to CN201510096287.7A priority Critical patent/CN104714773B/zh
Publication of CN104714773A publication Critical patent/CN104714773A/zh
Application granted granted Critical
Publication of CN104714773B publication Critical patent/CN104714773B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种用于旋转角计算的基于PLB总线的嵌入式IP软核及旋转角计算方法,计算IP软核包括主控制模块,PLB总线时序转换模块,配置寄存器模块,查找表RAM模块,FIFO模块,象限转换模块和若干个迭代模块;多个迭代模块构成多级流水线结构,迭代模块将输出反馈到输入实现多次迭代功能,旋转角计算采用反馈式流水线结构,即先反馈后流水的“真”流水线结构,将单精度浮点型的正弦值和余弦值,转换成单精度浮点角度值,并通过片内总线PLB总线与片内处理器相连,在计算速度上优于“纯”反馈式迭代结构和先流水后反馈的“伪”流水线结构,在占用资源上优于“纯”流水线结构,在嵌入式系统中的可移植性上优于传统的设计。

Description

用于旋转角计算的基于PLB总线的嵌入式IP软核及旋转角计 算方法
技术领域
本发明属于嵌入式系统中复杂函数的精确计算领域,涉及PLB总线和CORDIC算法,具体涉及用于旋转角计算的基于PLB总线的嵌入式IP软核及旋转角计算方法。
背景技术
CORDIC算法是实现复杂函数计算的经典方法,其基本思想是用查找表、移位和加/减法,不断逼近的方式,来实现三角函数、双曲线、指数、对数等复杂函数的计算。目前,旋转角计算(反正切计算)一般采用反馈式结构或流水线结构实现CORDIC算法,并利用定点运算单元执行算法中的加/减运算功能。这种方案的主要缺陷就是:定点运算精度不足。为了解决精度不足问题,可以把定点运算单元改成浮点运算单元FPU,一般是直接使用现有的浮点运算单元FPU。这种方案的主要缺陷是:FPU的引入会占用FPGA的大量逻辑资源,造成FPGA逻辑资源缺乏。
中国专利CN201110436482公开了一种基于FPGA的三角函数实现方法,在迭代开始前根据三角函数的对称性把输入角度转化到第一象限,CORDIC算法采用流水线结构,最后将计算出来的结果转换成IEEE-754标准格式。中国专利CN201210168992公开了一种基于浮点运算单元的基本超越函数运算方法及其协处理器,通过增加一个结构简单的函数运算控制模块,在已有浮点运算单元的基础上利用已有浮点运算指令实现三角和反三角函数,双曲函数,指数函数和对数函数的计算;中国专利CN201210433693公开了一种基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,提出了基于配置的伪流水CORDIC算法结构,即将低级数的流水线结构的输出不断反馈回其输入的伪流水形式,实现无限制精度的三角函数运算。中国专利CN201310065877公开了一种覆盖全圆周角度的单精度浮点三角函数的实现方法,将单精度浮点数据转换到[-π/4,π/4]的圆周范围内,并转换为高精度定点数据,将得到的高精度定点数据输入至流水线结构的迭代运算模块,计算出高精度定点结果,再将其转换成单精度浮点数据输出。
以上公开的现有技术中:CORDIC算法结构主要采用反馈式结构或流水线结构,还有改进后的先流水后反馈的“伪”流水线结构;但在嵌入式系统的应用中,接口封装形式与处理器本地PLB总线接口不一致,不能直接连接在总线上,基于PLB总线外围接口封装形式的旋转角计算IP核暂时还没有。
发明内容
本发明目的在于克服现有技术的不足,提供了一种用于旋转角计算的基于PLB总线的嵌入式IP软核及旋转角计算方法,采用PLB总线接口提高了IP软核在嵌入式系统中的可移植性。
为达到上述目的,本发明采用以下技术方案:
用于旋转角计算的基于PLB总线的嵌入式IP软核,具有PLB总线访问功能,迭代次数可配置功能,旋转角计算功能,计算结果缓存回读功能;包括主控制模块,PLB总线时序转换模块,配置寄存器模块,查找表RAM模块,FIFO模块,象限转换模块和若干个迭代模块;主控制模块和PLB总线时序转换模块均与PLB总线连接,配置寄存器模块、查找表RAM模块和FIFO模块分别与主控制模块连接,象限转换模块分别与主控制模块和若干个迭代模块连接;
主控制模块用于控制迭代模块的迭代启动、迭代次数和迭代停止,对查找表RAM中计算参数的读取以及FIFO模块的读/写操作;
配置寄存器模块用于存储配置迭代的次数,迭代计算状态;
查找表RAM模块用于存放计算过程中的固定参数;
FIFO模块用于存储旋转角计算的结果;
象限转换模块用于判断输入角的象限,并将其转换到第一象限的对应角;
迭代模块由多个浮点移位器和多个浮点加法器构成,多个迭代模块构成多级流水线结构,迭代模块将输出反馈到输入实现多次迭代功能;浮点移位器用于实现单精度浮点数的向左/向右的移位功能;浮点加法器用于实现单精度浮点数的加/减法功能。
进一步地,包括3个迭代模块,构成3级流水线结构,每个迭代模块由2个浮点移位器和3个浮点加法器构成。
进一步地,所述象限转换模块根据输入角的正弦值和余弦值的正负号,判断其所在象限,再根据三角函数的诱导公式,将其转换到第一象限,计算出第一象限对应角的正弦值和余弦值以及初始相位。
进一步地,所述浮点移位器通过遵循“左加右减”的原则,对浮点数的指数部分进行相应位数的加/减,实现单精度浮点数的移位功能。
一种旋转角计算方法,IP软核包括3个迭代模块,构成3级流水线结构,旋转角计算方法如下:
第一步,由PLB总线接口配置迭代次数和修改查找表的内容;
第二步,输入浮点正弦值X0,浮点余弦值Y0和浮点初始相位Z0到象限转换模块,将所求的角度转换到第一象限的对应角,其正弦值为X0’,余弦值为Y0’,此时初始相位为Z0’,Z0’=0°、±90°或±180°;
第三步,将(X0’,Y0’,Z0’)送入第1级流水线单元,进行CORDIC算法的n次迭代,得到(Xn,Yn,Zn);(Xn,Yn,Zn)进入第2级流水线单元,进行CORDIC算法的n次迭代,得到(X2n,Y2n,Z2n);(X2n,Y2n,Z2n)进入第3级流水线单元,进行CORDIC算法的n次迭代,得到(X3n,Y3n,Z3n);此时,Y3n≈0,Z3n即为所求旋转角的计算结果。
本发明具有以下效果:
(1)本发明用于旋转角计算的基于PLB总线的嵌入式IP软核,多个迭代模块构成多级流水线结构,迭代模块将输出反馈到输入实现多次迭代功能,旋转角计算采用反馈式流水线结构,即先反馈后流水的“真”流水线结构,将单精度浮点型的正弦值和余弦值,转换成单精度浮点角度值,并通过片内总线PLB总线与片内处理器相连,在计算速度上优于“纯”反馈式迭代结构和先流水后反馈的“伪”流水线结构,在占用资源上优于“纯”流水线结构,在嵌入式系统中的可移植性上优于传统的设计。
(2)本发明中单精度浮点运算单元FPU的引入,大大提高了计算精度,15次迭代的计算精度在±0.004°以内,解决定点运算精度不足问题;
(3)本发明中迭代次数根据查找表空间大小配置迭代次数,这将使得计算精度在一定范围内可以无限提高;
(4)本发明中加入象限转换模块,扩展了CORDIC算法旋转角计算范围,从(-99.88°~99.88°)扩展到(-180°~180°)。
(5)本发明采用PLB总线接口,大大提高了其在嵌入式系统中的可移植性。
进一步,本发明中包括3个迭代模块,构成3级流水线结构,3n次迭代的3级流水线结构占用FPGA的逻辑资源,是3n次迭代的3n级流水线结构占用FPGA的逻辑资源的1/n,起到了减少逻辑资源的效果。
附图说明
图1是用于旋转角计算的基于PLB总线的嵌入式IP软核的结构框图。
具体实施方式
以下结合附图对本发明内容进行详细说明:
本发明用于旋转角计算的基于PLB总线的嵌入式IP软核:旋转角计算采用反馈式流水线结构,即先反馈后流水的“真”流水线结构,将单精度浮点型的正弦值和余弦值,转换成单精度浮点角度值,并通过片内总线PLB总线与片内处理器相连。
用于旋转角计算的基于PLB总线的嵌入式IP软核具体功能包括:PLB总线访问功能,迭代次数可配置功能,旋转角计算功能,计算结果缓存回读功能。
本发明是用于旋转角计算的基于PLB总线的嵌入式IP软核,主要由21个基本模块组成,具体包括:1个主控制模块,1个PLB总线时序转换模块,1个配置寄存器模块,1个查找表RAM模块,1个FIFO模块,1个象限转换模块,6个浮点移位器,9个浮点加法器。
用于旋转角计算的基于PLB总线的嵌入式IP软核结构框图如图1所示,主控制模块和PLB总线时序转换模块均与PLB总线连接,配置寄存器模块、查找表RAM模块和FIFO模块分别与主控制模块连接,象限转换模块分别与主控制模块和若干个迭代模块连接。
主控制模块主要用于控制迭代模块的迭代启动、迭代次数和迭代停止,查找表RAM中计算参数的读取以及FIFO的读/写操作。
配置寄存器模块主要是存储配置迭代的次数,迭代计算状态等。
查找表RAM模块用于存放计算过程中的固定参数。
FIFO模块主要用于存储旋转角计算的结果。
象限转换模块主要是用于判断输入角的象限,并将其转换到第一象限的对应角。具体实现方法是,根据输入角的正弦值和余弦值的正负号,判断其所在象限,再根据三角函数的诱导公式,将其转换到第一象限,计算出第一象限对应角的正弦值和余弦值以及初始相位。
浮点移位器主要用于实现单精度浮点数的向左/向右的移位功能。通过遵循“左加右减”的原则,对浮点数的指数部分进行相应位数的加/减,实现单精度浮点数的移位功能。
浮点加法器主要用于实现单精度浮点数的加/减法功能。
迭代模块由2个浮点移位器和3个浮点加法器构成。此模块将输出反馈到输入实现多次迭代功能,理论上可以实现无限次迭代。如果设置本模块的迭代次数为n,则CORDIC算法的总迭代次数是3n,迭代次数跟查找表RAM的大小相关。
本发明中实现CORDIC算法的模块是采用了3个迭代模块,构成3级流水线结构。FPU的加入会占用FPGA大量的逻辑资源,之所以采用3级流水线结构,是因为3级流水线结构所占用的逻辑资源量是一般FPGA所能够承受的。如果FPGA容量够大,也可以采用更高级数的流水线结构。
本发明在计算精度上优于定点计算方案,在计算速度上优于“纯”反馈式迭代结构和先流水后反馈的“伪”流水线结构,在占用资源上优于“纯”流水线结构,在嵌入式系统中的可移植性上优于传统的设计。
旋转角计算单元计算旋转角的过程如下:首先由PLB总线接口配置迭代次数,和修改查找表的内容;输入浮点正弦值X0,浮点余弦值Y0和浮点初始相位Z0到象限转换模块,将所求的角度转换到第一象限的对应角,其正弦值为X0’,余弦值为Y0’,此时初始相位为Z0’,Z0’=0°、±90°或±180°;(X0’,Y0’,Z0’)进入到第1级流水线单元,进行CORDIC算法的n次迭代,得到(Xn,Yn,Zn);(Xn,Yn,Zn)进入第2级流水线单元,进行CORDIC算法的n次迭代,得到(X2n,Y2n,Z2n);(X2n,Y2n,Z2n)进入第3级流水线单元,进行CORDIC算法的n5次迭代,得到(X3n,Y3n,Z3n)。此时,Y3n≈0,Z3n就是所求旋转角的计算结果。
经典CORDIC算法的旋转角计算范围:(-99.88°~99.88°),但是经过象限转换之后,旋转角计算范围扩展到(-180°~180°)。
本发明在采用15次迭代时,理论上最高精度误差为tan-12-15=0.00175°,实际计算精度为±0.004°,实际计算精度符合理论精度范围。如果需要进一步提高精度,可以通过增加迭代次数来实现。
本发明基于高精度旋转角计算的应用需求,结合现有产品与成果的不足,针对嵌入式系统开发应用,提出一种用于旋转角计算的基于PLB总线的嵌入式IP软核,其采用先反馈后流水的“真”流水线结构,完成CODIC算法多次迭代,实现全相角的高精度旋转角计算。
根据上述方案,用Verilog HDL语言对旋转角计算单元的逻辑设计进行描述,并完成逻辑综合与布局布线;将旋转角计算单元的逻辑设计映射到可编程逻辑器件中实现,并对旋转角计算单元的功能进行测试。测试结果表明本发明具有很好的可实施性,且性能满足预期。

Claims (5)

1.用于旋转角计算的基于PLB总线的嵌入式IP软核,其特征在于:具有PLB总线访问功能,迭代次数可配置功能,旋转角计算功能,计算结果缓存回读功能;包括主控制模块,PLB总线时序转换模块,配置寄存器模块,查找表RAM模块,FIFO模块,象限转换模块和若干个迭代模块;主控制模块和PLB总线时序转换模块均与PLB总线连接,配置寄存器模块、查找表RAM模块和FIFO模块分别与主控制模块连接,象限转换模块分别与主控制模块和若干个迭代模块连接;
主控制模块用于控制迭代模块的迭代启动、迭代次数和迭代停止,对查找表RAM中计算参数的读取以及FIFO模块的读/写操作;
配置寄存器模块用于存储配置迭代的次数,迭代计算状态;
查找表RAM模块用于存放计算过程中的固定参数;
FIFO模块用于存储旋转角计算的结果;
象限转换模块用于判断输入角的象限,并将其转换到第一象限的对应角;
迭代模块由多个浮点移位器和多个浮点加法器构成,多个迭代模块构成多级流水线结构,迭代模块将输出反馈到输入实现多次迭代功能;浮点移位器用于实现单精度浮点数的向左/向右的移位功能;浮点加法器用于实现单精度浮点数的加/减法功能。
2.根据权利要求1所述的用于旋转角计算的基于PLB总线的嵌入式IP软核,其特征在于:包括3个迭代模块,构成3级流水线结构,每个迭代模块由2个浮点移位器和3个浮点加法器构成。
3.根据权利要求1所述的用于旋转角计算的基于PLB总线的嵌入式IP软核,其特征在于:所述象限转换模块根据输入角的正弦值和余弦值的正负号,判断其所在象限,再根据三角函数的诱导公式,将其转换到第一象限,计算出第一象限对应角的正弦值和余弦值以及初始相位。
4.根据权利要求2所述的用于旋转角计算的基于PLB总线的嵌入式IP软核,其特征在于:所述浮点移位器通过遵循“左加右减”的原则,对浮点数的指数部分进行相应位数的加/减,实现单精度浮点数的移位功能。
5.一种基于权利要求1所述的用于旋转角计算的基于PLB总线的嵌入式IP软核的旋转角计算方法,其特征在于,IP软核包括3个迭代模块,构成3级流水线结构,旋转角计算方法如下:
第一步,由PLB总线接口配置迭代次数和修改查找表的内容;
第二步,输入浮点正弦值X0,浮点余弦值Y0和浮点初始相位Z0到象限转换模块,将所求的角度转换到第一象限的对应角,其正弦值为X0’,余弦值为Y0’,此时初始相位为Z0’,Z0’=0°、±90°或±180°;
第三步,将(X0’,Y0’,Z0’)送入第1级流水线单元,进行CORDIC算法的n次迭代,得到(Xn,Yn,Zn);(Xn,Yn,Zn)进入第2级流水线单元,进行CORDIC算法的n次迭代,得到(X2n,Y2n,Z2n);(X2n,Y2n,Z2n)进入第3级流水线单元,进行CORDIC算法的n次迭代,得到(X3n,Y3n,Z3n);此时,Y3n≈0,Z3n即为所求旋转角的计算结果。
CN201510096287.7A 2015-03-04 2015-03-04 用于旋转角计算的基于plb总线的嵌入式ip软核及旋转角计算方法 Active CN104714773B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510096287.7A CN104714773B (zh) 2015-03-04 2015-03-04 用于旋转角计算的基于plb总线的嵌入式ip软核及旋转角计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510096287.7A CN104714773B (zh) 2015-03-04 2015-03-04 用于旋转角计算的基于plb总线的嵌入式ip软核及旋转角计算方法

Publications (2)

Publication Number Publication Date
CN104714773A CN104714773A (zh) 2015-06-17
CN104714773B true CN104714773B (zh) 2018-04-20

Family

ID=53414154

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510096287.7A Active CN104714773B (zh) 2015-03-04 2015-03-04 用于旋转角计算的基于plb总线的嵌入式ip软核及旋转角计算方法

Country Status (1)

Country Link
CN (1) CN104714773B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032562B (zh) * 2018-06-14 2020-12-08 浙江大学 低时延高频单向旋转的cordic算法装置及算法
CN109190084B (zh) * 2018-07-25 2022-10-11 中国航空工业集团公司西安飞行自动控制研究所 一种正余弦计算的硬件实现方法
CN111666065B (zh) * 2020-06-03 2022-10-18 合肥工业大学 基于cordic的三角函数流水线迭代求解方法和装置
CN111666064B (zh) * 2020-06-03 2023-01-10 合肥工业大学 基于cordic的三角函数循环迭代求解方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102693118A (zh) * 2011-10-18 2012-09-26 苏州科雷芯电子科技有限公司 一种标量浮点运算加速器
CN102799412A (zh) * 2012-07-09 2012-11-28 上海大学 基于并行流水线设计的cordic加速器
CN102981797A (zh) * 2012-11-02 2013-03-20 中国航天科技集团公司第九研究院第七七一研究所 基于cordic算法的反馈和流水线结构相结合的三角函数运算器
CN103150137A (zh) * 2013-03-01 2013-06-12 北京理工大学 一种覆盖全圆周角度的单精度浮点三角函数的实现方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676535B2 (en) * 2005-09-28 2010-03-09 Intel Corporation Enhanced floating-point unit for extended functions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102693118A (zh) * 2011-10-18 2012-09-26 苏州科雷芯电子科技有限公司 一种标量浮点运算加速器
CN102799412A (zh) * 2012-07-09 2012-11-28 上海大学 基于并行流水线设计的cordic加速器
CN102981797A (zh) * 2012-11-02 2013-03-20 中国航天科技集团公司第九研究院第七七一研究所 基于cordic算法的反馈和流水线结构相结合的三角函数运算器
CN103150137A (zh) * 2013-03-01 2013-06-12 北京理工大学 一种覆盖全圆周角度的单精度浮点三角函数的实现方法

Also Published As

Publication number Publication date
CN104714773A (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
CN109643228B (zh) 用于浮点乘加运算的低能耗尾数乘法
CN104714773B (zh) 用于旋转角计算的基于plb总线的嵌入式ip软核及旋转角计算方法
CN109146067B (zh) 一种基于FPGA的Policy卷积神经网络加速器
US8078835B2 (en) Reconfigurable array processor for floating-point operations
US5631859A (en) Floating point arithmetic unit having logic for quad precision arithmetic
CN103150146B (zh) 基于可扩展处理器架构的专用指令集处理器及其实现方法
CN103176767B (zh) 一种低功耗高吞吐的浮点数乘累加单元的实现方法
CN102221987B (zh) 基于嵌入式专用指令集处理器的指令集编码方法
CN102629189B (zh) 基于fpga的流水浮点乘累加方法
CN109643233A (zh) 具有带读取和读取/前进操作数编码的流引擎的数据处理设备
CN103677738A (zh) 基于混合模式cordic算法的低延时基本超越函数实现方法及装置
TWI588740B (zh) 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法
US20110302231A1 (en) Method and apparatus for performing numerical calculations
CN104679719A (zh) 一种基于fpga的浮点运算方法
CN102799412A (zh) 基于并行流水线设计的cordic加速器
CN103135960A (zh) 一种基于fpga的集成浮点运算器的设计方法
CN111381808A (zh) 乘法器、数据处理方法、芯片及电子设备
CN102789446A (zh) 基于cordic算法的dds信号杂散抑制方法及系统
CN116719499A (zh) 一种应用于5g最小二乘定位的自适应伪逆计算方法
CN103365826B (zh) 一种小面积的基-3fft蝶形单元
CN102109973A (zh) 包含超越函数计算的处理器实现装置
CN102073473A (zh) 基于fpga的十进制浮点乘法器设计
Li et al. Modified CORDIC algorithm and its implementation based on FPGA
CN110391814A (zh) 用于芯片内数模转换器的积分非线性数字校正方法
Ding et al. A design and implementation of decimal floating-point multiplication unit based on SOPC

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant