当前位置:首页 > 工业控制 > 电子设计自动化

摘 要: 设计了一种基于CORDIC算法计算浮点反正切函数的的硬件结构,并在Altera公司的FPGA芯片上进行了验证,最后在Nios II处理器系统中以用户自定义指令的形式实现,通过C语言程序验证了浮点反正切模块的正确性。
关键词: CORDIC;反正切函数;浮点数据;Nios II

在数字信号处理、导航通讯等许多领域会大量使用反正切函数进行必要的计算,当FPGA系统应用于上述领域时常常会遇到如何使用硬件来完成反正切函数计算的问题。本文设计了基于CORDIC算法的反正切函数计算模块,并且根据IEEE-754单精度浮点数据格式对输入输出数据进行处理,实现了高精度的浮点反正切函数的计算。
1 反正切函数实现原理
CORDIC算法有旋转模式和向量模式两种计算模式。旋转模式可以用来计算一个输入角的正弦、余弦,向量模式可以计算给定向量的角度和长度。
CORDIC算法的基本迭代公式为:

从上式可以看出,CORDIC算法在向量模式可以计算出给定向量(X,Y)的长度和角度,即从平面坐标到极坐标的变换。
2 数据格式转换接口模块
本文设计的反正切函数硬件模块输入为IEEE-754单精度浮点数据,而模块内部迭代使用的是定点整型数据,因此需要进行转换。
在图1的输入数据转换接口示意图中,X、Y为输入的IEEE-754浮点数据格式,输入范围是(-∞,+∞),经过接口模块转换为整型定点数据Xn、Yn,其表示范围是[-1 +1]。

矢量(X,Y)在平面坐标系中的角度为arctan(Y/X),它只与Y和X的比值有关,与Y和X的实际长度无关。用这个性质可以以X和Y中绝对值最大的值作为归一化数值,将X和Y的范围重新映射在[-1 +1]之间,实现(X,Y)到(Xn,Yn)的转换。
计算结束后输出结果Z。Z是32位定点整型数据,且232被定义为2π,将其规格化为IEEE-754格式的过程如图2所示。在对Z进行规格化之前,需要进行前导零检测,以确定规格化时尾数左移的位数和指数位的大小,前导零的检测硬件上可以用casex语句实现。

3 整体设计以及仿真综合
浮点反正切函数的硬件结构包括了三个主要部分,即浮点数据格式转换接口模块、CORDIC内核计算模块和浮点输出数据转换接口模块,如图3所示。

采用Quartus II对设计进行FPGA综合,FPGA芯片选择EP2C70F896C6,硬件环境为Altera公司的DE2-70平台,总共需要1 522个逻辑单元,占用芯片资源的2%,最高工作频率为100 MHz。
4 Nios II中反正切函数的自定义指令实现
反正切函数与Nios II CPU的接口采用multi-cycle custom instruction,dataa和datab为输入数据,result为结果输出,要从C语言中直接调用自定义指令,需要一个宏定义接口。可以在system.h文件中找到自定义指令的宏定义,如:
#define ALT_CI_CORDIC_ATAN2_N 0x00000000
#define ALT_CI_CORDIC_ATAN2(A,B) __builtin_custom_inii
(ALT_CI_CORDIC_ATAN2_N,(A),(B))
为了正确调用自定义指令,在主程序中重新做以下宏定义:
#define ATAN2(A,B) __builtin_custom_fnff(ALT_CI_CORDIC_ATAN2_N,(A),(B))
与system.h文件中系统自动生成的宏定义不同之处在于将宏定义的接口说明由“__builtin_custom_inii”改为了“__builtin_custom_fnff”。系统自动生成的宏定义默认输入输出皆为整型数据,改为“__builtin_custom_fnff”就是通知系统这是一条输入输出都是单精度浮点数据类型的用户自定义指令。这样由CPU调用时就不会出现数据类型不匹配的错误。
通过在Nios II CPU中加入的JTAG_UART模块,可以从调试终端窗口中获得运行结果。硬件IP核平均计算用时73个周期,而软件计算平均用时21 000个周期,计算速度提升300倍以上。此时CPU工作频率为100 MHz,且配置为最高性能,浮点反正切函数硬件模块仅工作在50 MHz。浮点反正切函数硬件模块的计算精度完全可以满足单精度浮点数据的要求,计算误差小于10e-6,因此可以用于对精度和速度都要求很高的各种信号处理领域。
反正切函数是应用范围最广的一个反三角函数,而用硬件实现浮点反正切函数对相应算法的速度会起到一个很大的提升作用,硬件浮点反正切函数可以很方便地作为一个IP核被系统调用,实现高速并行的超越函数计算。目前,已经设计完成并用Nios II处理器验证过浮点超越函数计算IP,包括浮点正弦函数、浮点余弦函数、浮点反正切函数和浮点反正弦函数。Nios II处理器通过加入这些IP核模块就能实现大部分浮点超越函数计算,使用硬件IP核计算比用软件计算在速度上至少可以提升300~1 000倍,这样就可以将Nios II处理器用于原先只有用DSP才能处理的一些场合,可以充分发挥FPGA系统的灵活性以及并行数据处理的能力。

参考文献
[1] Volder.The CORDIC trigonometric computing technique[J]. IRE Trans,1959:334-334.
[2] WALTHER.J.S.A unified algorithm for elementary functions[J].Spring Joint Computer Conf,1971:379-385.
[3] 李全,李晓欢,陈石平.基于CORDIC算法高精度浮点超越函数的FPGA实现.电子技术应用,2009,35(5):166-168.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

Pmod接口可以说是数字电路板的连接革命。随着科技的飞速发展,数字电路板间的通信与连接技术也在不断创新和进步。Pmod接口,作为一种新兴的数字接口标准,正逐渐成为数字电路板间通信的桥梁,为电子设备的连接和通信带来了革命性...

关键字: pmod接口 FPGA 数字电路板

近日举办的GTC大会把人工智能/机器学习(AI/ML)领域中的算力比拼又带到了一个新的高度,这不只是说明了通用图形处理器(GPGPU)时代的来临,而是包括GPU、FPGA和NPU等一众数据处理加速器时代的来临,就像GPU...

关键字: FPGA AI 图形处理器

当我们提到成本优化型FPGA,往往与简化逻辑资源、有限I/O和较低制造工艺联系在一起。诚然,在成本受限的系统设计中,对于价格、功耗和尺寸的要求更为敏感;但随着一系列创新应用的发展、随着边缘AI的深化,成本优化型FPGA也...

关键字: AMD FPGA Spartan 边缘计算

全球领先的高性能现场可编程门阵列(FPGA)和嵌入式FPGA(eFPGA)半导体知识产权(IP)提供商Achronix Semiconductor公司宣布,该公司参加了由私募股权和风险投资公司Baird Capital举...

关键字: FPGA 智能汽车 eFPGA

全新 FPGA 能为嵌入式视觉、医疗、工业互联、机器人与视频应用提供高数量 I/O、功率效率以及卓越的安全功能

关键字: FPGA 嵌入式视觉 机器人

Altera致力于为客户提供端到端的FPGA、易于使用的AI、软件和弹性供应链。

关键字: FPGA AI

在半导体领域,大部分对于AI的关注都集中在GPU或专用AI加速器芯片(如NPU和TPU)上。但事实证明,有相当多的组件可以直接影响甚至运行AI工作负载。FPGA就是其中之一。

关键字: FPGA AI 半导体

半导体产品老化是一个自然现象,在电子应用中,基于环境、自然等因素,半导体在经过一段时间连续工作之后,其功能会逐渐丧失,这被称为功能失效。半导体功能失效主要包括:腐蚀、载流子注入、电迁移等。其中,电迁移引发的失效机理最为突...

关键字: 半导体 电迁移 FPGA
关闭
关闭