【FPGA数学运算】- FPGA复杂函数实现(幂函数、log函数、sin、cos)cordic IP

本文转载自:FPGA入门到精通微信公众号

Cordic算法可以通过简单的加和移位运算来实现复杂的数学运算,避免了传统方法中大量的乘法运算,从而提高了计算效率,易于硬件实现。

今天介绍一下Cordic算法和Xilinx的Cordic IP。

一、Cordic算法

CORDIC(Coordinate Rotation Digital Computer,坐标旋转数字计算机)算法是一种高效的计算方法,由J. Volder在1959年提出,最初用于解决航空导航系统中的三角函数、反三角函数和开方等运算问题。

CORDIC算法的核心思想是通过一系列的旋转操作来逼近复杂的函数值,这些旋转操作简单且易于硬件实现。

CORDIC算法广泛应用于图像处理、信号处理、通信领域,它可以实现如离散傅里叶变换(DFT)、离散余弦变换(DCT)、离散Hartley变换、Chirp-Z变换等多种变换。此外,CORDIC算法还可用于实现直接数字频率合成器(DDS)、计算I/Q信号的幅度和相位等。

CORDIC算法有两种模式:旋转模式和向量模式。在旋转模式下,算法通过旋转坐标系来计算函数值;而在向量模式下,算法通过计算旋转后的向量长度和方向来得到函数值。

CORDIC算法的实现通常应用于硬件,尤其是现场可编程门阵列(FPGA)。在FPGA中,CORDIC算法可以通过流水线设计和并行处理来实现,从而提高计算速度。

总之,CORDIC算法是一种在信号处理领域具有重大工程意义的算法,它通过简单的旋转操作来实现复杂的函数计算,广泛应用于各种硬件实现中。

二、Xilinx Cordic IP

Cordic IP核基于CORDIC算法,具有以下功能模式:旋转(rotate)、变换(translate)——直角坐标转极坐标、sin/cos/arctan/sinh/cosh/arctanh/平方根等。用户可以根据需要选择不同的功能模式来实现所需的数学运算。

Cordic IP核是采用AXI4-stream协议的接口。

更多更详细的信息,请查看xilinx 官方手册(PG105)。

在“IP catalog”中,输入“Cordic”,点击任意一个“CORDIC IP”就行。


1、Cordic IP核的功能

这里详细介绍一下Cordic IP的功能

(1)Rotate

Rotate 实现的功能是坐标的旋转。

输入原图像坐标( X, Y),旋转角度Phase,输出目标图像坐标(X’, Y’)。

具体实现的功能对应的数学表达形式如下:


(2)Translation

Translation 实现的功能是求模,以及向量的夹角。

输入 X, Y,输出X’ and Phase

具体实现的功能对应的数学表达形式如下:


(3)Sin and Cos

功能:求取角度Phase对应的Sin 和Cos 函数值。

输入:角度Phase

输出:X_OUT = Cos(PHASE_IN), Y_OUT = Sin(PHASE_IN))

(4)Sinh and Cosh

功能:求取角度Phase对应的Sinh 和Cosh 函数值

输入:角度Phase

输出:坐标,注意高低位对应!

(5)ArcTan

功能:求反正切函数

输入:坐标值(X,Y)

输出:角度Phase

(6)ArcTanh

功能:求Arctanh 函数值

输入:坐标值(Xin, Yin)

输出:Phase and (Xout,0)

(7)Square Root

功能:开平方根

输入:数值X_IN

输出:数值X_OUT

注意下输入输出数据格式:

角度Phase的数据格式: 1位符号位 + 2位整数位 + N位小数位(2QN格式),

X, Y的输入格式:1位符号位 + 1位整数位 + N位小数位(1QN格式)。

2、IP核参数配置

(1)Configuration Options

Functional Selection函数功能选择:Rotate, Sin and Cos, ArcTan, Square Root, Translate, Sinh and Cosh and ArcTanh

Architectural Configuration 架构配置:CORDIC核心提供了两种架构配置,分别是并行和字串行。

Pipelining Mode 并行模式: 不做处理(None)、资源优化(Optimal)、流水线最大化(Maximum)。

Data Format数据格式:有符号小数(Signed Fraction)、无符号小数(Unsigned Fraction)、无符号整数(Unsigned Integer)。

Phase Format 相位格式:

弧度(相位用固定点的二进制补码表示,整数宽度为3位,以弧度为单位)、

缩放弧度(相位用固定点的二进制补码表示,整数宽度为3位,以π弧度为单位)

Input Width:输入数据位宽

Output Width:输出数据位宽

Round Mode 舍入模式:Truncate直接截断、 Positive Infinity向上取整、Pos Neg Infinity向下取整、Nearest Even最近舍入取偶数

Iterations 迭代次数,Precision 精度

Coarse Rotation “粗略旋转”或“低精度旋转”

Compensation Scaling: 控制用于补偿CORDIC幅度缩放的补偿缩放模块

(2)AXI4 Stream Options

AXI4-Stream配置接口参数

Cartesian Channel Options:tlast结束信号,tuser起始信号, tuser width tuser信号位宽。

Phase Channel Options:tlast结束信号,tuser起始信号, tuser width tuser信号位宽。

Flow Control数据传输模式: Blocking阻塞模式 or NonBlocking非阻塞模式。

Optimize Goal优化模式: 选择性能优化还是资源优化。

最新文章

最新文章