当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]一种浮点反正切函数的FPGA设计和实现

快速精确的反正弦函数运算在现代工程中应用广泛。为了提高反正弦函数的精度和计算能力, 研究了基于CORD IC算法的反正弦函数运算器的FPGA 实现, 并通过改进算法减小了误差, 使误差精度达到10--4 数量级。并在X ilinx 的XC5VSX50T芯片上验证, 结果表明该运算器的数据处理速度快, 精度较高, 适用于高速大数据量的数据信号处理领域。

在数字信号处理领域, 高速高精度的反正弦函数发生器有着广泛的应用。目前在FPGA 上实现反正弦函数运算器采用的主要方法是查找表法和泰勒公式展开法。查找表法所需要的存储单元随着精度的增加或输入值范围的增大而成指数增加; 泰勒公式展开法将函数简化成一系列的乘法和加法运算,但是在FPGA 上实现乘法运算既耗时又占用大量资源。本文设计了基于CORDIC算法的反正切函数计算模块,并且根据IEEE-754单精度浮点数据格式对输入输出数据进行处理,实现了高精度的浮点反正切函数的计算。

1 反正切函数实现原理

CORDIC(Coordinate RotatiON Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数、双曲线、指数、对数的计算。该算法通过基本的加和移位运算代替乘法运算,使得矢量的旋转和定向的计算不再需要三角函数、乘法、开方、反三角、指数等函数。

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,因此可以用于对精度和速度都要求很高的各种信号处理领域。

利用CORD IC算法将反正弦函数转换为加法和移位运算, 降低了复杂度, 容易在硬件上实现。本文探讨了基于CORDIC 算法的反正弦函数的硬件实现, 实现过程采用流水线结构, 具有速度快、实现简单、精度高等优点。仿真结果和实验结果表明该运算器的输出误差为10- 4数量级, 时钟可达到150MH z, 具有较高的精度和运行速度, 因此具有十分重要的工程研究和应用意义。
 

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭