首页 > 范文大全 > 正文

用FPGA实现CORDlC算法的32位浮点三角超越函数之正余弦函数

开篇:润墨网以专业的文秘视角,为您筛选了一篇用FPGA实现CORDlC算法的32位浮点三角超越函数之正余弦函数范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

图1经典CORDIC硬件实现架构等精度表示范围内误差为0,且输出表示为标准IEEE754类型。一次计算所需时钟周期数为34。

自定义指令

Altera公司NiosⅡ处理器增加了多达256条用户自定义指令,这是其它SOC系统无法比拟的。用户自定义就是让NiosⅡ软核完成一个用HDL描述的电路模块功能。用户自定义指令可以在几个时钟周期之内完成复杂算法的处理能力,访问存储器或系统外的逻辑单元,加快专项任务的执行,以达到优化目的。通过用户自定义指令可以把系统中用软件处理中的耗时多的关键算法用硬逻辑电路来实现,大大提高处理器的效率。由于CORDIC内核的特性,正余弦函数可以同时计算出来,因此适合于采用扩展用户自定义指令来实现,即用一个硬件模块来完成两种函数的计算。通过一个附加的参数n来决定输出是正弦或余弦,这样可以节约一半的硬件资源。本文在NIOS II中增加了正余弦自定义指令,其宏定义代码如下:

#define MYCORDIC N 0x00000002

#define MYCORDIC―N―MASK((1

#d e f i n e F L O A T―C 0 S(A)_builtin_custom_fni(MYCORDIC_N+(I&MYCORDIC_N_MASK),(A))_

#d e f i n e F L 0 A T_S I N(A)__builtin_custom_fni(MYCORDIC_N+(0&MYCORDIC_N_MASK),(A))

加入指令后,在NiosⅡ的IDE中进行软硬件同时调试,相应的C语言测试代码以及对比结果在此省略。

本系统硬件验证平台采用DE2开发板,其中NiosⅡ处理器配置为full功能,分别使用16K数据cache和16K指令cache,增加了硬件乘法器和硬件除法器,开启了流水线功能,已达到了NiosⅡ软核处理器的最高性能。

从结果对比中看出,使用硬件指令后对完全相同的正余弦角度进行计算时,其运算速度大大提高。需要说明的是,软件运算随着输入角度的不同所使用的计算时间有很大差别,而使用硬件指令运算时,其计算时间基本不变。

误差方面,软硬件运算在六位小数范围内其误差值为0,可见本设计确实达到了高精度的要求。

结语

本设计以提高处理器精度和速度为目标,通过在NiosⅡ处理器中添加用户自定义指令的方式以更多的硬件资源换取更快的计算速度,从而满足现代实时通讯处理的要求。在传统CORDIC算法的基础之上,巧妙的改进了算法,达到了更高精度和更快的速度,具有较广泛的应用价值。当然,本设计只完成了正余弦函数的硬件IP部分,还有更多的工作等待我们去完成,相信通过不断的努力,我们会完成更多的函数硬件IP。

参考文献:

1.Voider.The CORDIC trigonometriccomputing technique.IRE Trans.ElectronicComputers,1 959,EC一8(3):334-334.

2.Richard Herveille.Cordic Core Speci―fication.18,2001

3 潘宏亮.浮点指数类超越函数的运算算法研究与硬件实现.西北工业大学2006.3

4.IEEE organise.1EEE Standard for Bi-nary Floating-Point Arithmetic Inc 345 East47th Street,New York.NY 1 001 7,USA

5.王博立.浮点运算CORDIC之实现与其在3D图形学之应用.台湾国立中山大学2002.6

6.www.Altera.com

7.www.opencore.org

8.