verilog CORDIC对数运算

本文介绍了基于CORDIC算法在FPGA中实现对数运算的方法,包括双曲线坐标系旋转的旋转模式和向量模式。文章详细阐述了FPGA实现的浮点数预处理模块,用于处理输入数据的指数、整数和小数部分,并提供了整体代码及仿真结果。通过对浮点数的预处理和迭代算法,实现了高效且精确的对数计算。
摘要由CSDN通过智能技术生成

目录

CORDIC 算法

双曲线坐标系旋转

旋转模式

向量模式

FPGA实现

实现方法

浮点数预处理模块

指数

整数

小数

整体代码

仿真结果

迭代算法

运算状态

迭代序列

整体代码

仿真验证

参考文献


CORDIC 算法

坐标旋转数字计算机(Coordinate Rotation Digital Computer,CORDIC)算法可以追潮1957年由了J.Volder发表的一篇文章。在 20世纪50年代,在大型实际的计算机中,由现移位相加受到了当时条件的限制,所以使用CORDIC变得非常必要。到了20世纪70年代,惠普公司和其他公司生产了手持计算器,许多计算器使用一个内部CORDIC单元来所有的三角函数(那时计算一个角度的正切值需要大约1s的延迟)。

20世纪80年代,随着高速度乘法器与带有大存储量的通用处理器的出现,CORDIC算法变得无关紧要了。然而,对于各种通信技术和矩阵算法而言,需要执行三角函数和均方根等运算。

但是,对于FPGA 来说,CORDIC是数字信号处理应用中,如多输入多输出(multi-input & multi-output,MIMO)、波束形成及其他自适应系统,用于计算三角函数的首选方法。

本文主要将CORDIC在双曲线坐标系旋转下的对数运算

双曲线坐标系旋转

f53b25cfe8a54a81a33067cf081e7d7b.png

旋转模式

        双曲坐标系下的旋转模式如图所示,其迭代过程表示为

        eq?x_%7Bn+1%7D%3Dx_%7Bn%7D+d_%7Bn%7D%5Ccdot%20y_%7Bn%7D%282%5E%7B-n%7D%29%5C%5C%5C%5C%20y_%7Bn+1%7D%3Dy_%7Bn%7D+d_%7Bn%7D%5Ccdot%20x_%7Bn%7D%282%5E%7B-n%7D%29%5C%5C%5C%5C%20z_%7Bn+1%7D%3Dz_%7Bn%7D-d_%7Bn%7D%5Ccdot%20%5Ctanh%20%5E%7B-1%7D%282%5E%7B-n%7D%29

在旋转模式中eq?d_%7Bi%7D%3Dsign%28z_%7Bi%7D%29,使得eq?z_%7Bi%7D%5Crightarrow%200。n次迭代后得到:

eq?x_%7Bn%7D%3DK_%7Bn%7D%5E%7B*%7D%28x_%7B0%7D%5Ccosh%20z_%7B0%7D%20-%20y_%7B0%7D%5Csinh%20z_%7B0%7D%29%5C%5C%5C%5C%20y_%7Bn%7D%3DK_%7Bn%7D%5E%7B*%7D%28y_%7B0%7D%5Ccosh%20z_%7B0%7D%20+%20x_%7B0%7D%5Csinh%20z_%7B0%7D%29%5C%5C%5C%5C%20z_%7Bn%7D%3D0

在双曲坐标系下旋转时,伸缩因子eq?k_%7Bn%7D%5E%7B*%7D%3D%5Cprod%20%28%5Csqrt%20%7B1-2%5E%7B-2i%7D%7D%29,当eq?n%5Crightarrow%20%5Cinftyeq?K_%7Bn%7D%5E%7B*%7D%5Crightarrow%200.82816

从式中可知,当eq?x_%7B0%7D%3D%5Cfrac%7B1%7D%7BK_%7Bn%7D%5E%7B*%7D%7D%20%5Cquad%20y_%7B0%7D%3D0,时可以得到eq?%5Ccosh%20z%20%5Cquad%20%5Csinh%20z

向量模式

在向量模式中eq?d_%7Bi%7D%3D-sign%28x_%7Bi%7Dy_%7Bi%7D%29,使得eq?y_%7Bi%7D%5Crightarrow%200。n次迭代后得到

eq?x_%7Bn%7D%3DK_%7Bn%7D%5E%7B*%7D%5Csqrt%7Bx_%7B0%7D%5E%7B2%7D-y_%7B0%7D%5E%7B2%7D%7D%5C%5C%20%5C%5Cy_%7Bn%7D%3D0%5C%5C%5C%5C%20z_%7Bn%7D%3Dz_%7B0%7D+%5Ctanh%20%5E%7B-1%7D%28%5Cfrac%7By_%7B0%7D%7D%7Bx_%7B0%7D%7D%29

从式中可知,当eq?x_%7B0%7D%3D1%20%5Cquad%20z_%7B0%7D%3D0,时可以得到eq?%5Ctanh%20%5E%7B-1%7Dy_%7B0%7D

根据三角函数之间的关系,可以通过CORDIC算法计算下面的函数值

2%7D

FPGA实现

我们要运算的是对数函数,所以应该选用向量模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学渣_小强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值