CN104714773B - 用于旋转角计算的基于plb总线的嵌入式ip软核及旋转角计算方法 - Google Patents
用于旋转角计算的基于plb总线的嵌入式ip软核及旋转角计算方法 Download PDFInfo
- 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
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种用于旋转角计算的基于PLB总线的嵌入式IP软核及旋转角计算方法,计算IP软核包括主控制模块,PLB总线时序转换模块,配置寄存器模块,查找表RAM模块,FIFO模块,象限转换模块和若干个迭代模块;多个迭代模块构成多级流水线结构,迭代模块将输出反馈到输入实现多次迭代功能,旋转角计算采用反馈式流水线结构,即先反馈后流水的“真”流水线结构,将单精度浮点型的正弦值和余弦值,转换成单精度浮点角度值,并通过片内总线PLB总线与片内处理器相连,在计算速度上优于“纯”反馈式迭代结构和先流水后反馈的“伪”流水线结构,在占用资源上优于“纯”流水线结构,在嵌入式系统中的可移植性上优于传统的设计。
Description
技术领域
本发明属于嵌入式系统中复杂函数的精确计算领域,涉及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即为所求旋转角的计算结果。
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)
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)
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)
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 |
-
2015
- 2015-03-04 CN CN201510096287.7A patent/CN104714773B/zh active Active
Patent Citations (4)
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 |