Cordic v6.0 IP CORE使用说明

Cordic v6.0 IP CORE使用说明一、前言:  最近打算用Verlog写一个Cordic算法程序,先看看官方的IPCORE的接口设计和所实现的功能作为参考。  如果你使用的是CORDICV4.0IPCORE,请参考下面的链接 http://blog.163.com/fantasy_sunny/blog/static/1959182122013113152237210/二、Cordicv6

大家好,欢迎来到IT知识分享网。

  一、前言

   最近打算用Verlog写一个Cordic算法程序,先看看官方的IP CORE的接口设计和所实现的功能作为参考。

   如果你使用的是CORDIC V4.0 IP CORE,请参考下面的链接

  http://blog.163.com/fantasy_sunny/blog/static/1959182122013113152237210/

、Cordic v6.0 IP CORE使用说明

1)平台:Vivado2015.4

2)参考资料:CORDIC V6.0  LogiCORE IP Product Guide

3)  IP CORE介绍

CORDIC原理希望大家找一本权威的书籍仔细研读,本文不再介绍原理。

CORDIC V6.0所使用的AXI4-STREAM总线,简称AXIS。AXIS时序非常简单,大家可以在网上搜到很多博 客,这里不妨给出一个链接点击打开链接 ,不再介绍AXIS总线时序。

Cordic v6.0 IP CORE使用说明 



Cordic v6.0 IP CORE使用说明

Cordic v6.0 IP CORE使用说明

上图    是USER GUIDE上的部分截图,也是我设计自己的IP CORE主要的参考部分,我觉得Xilinx公司把IP CORE的接口都统一为AXI总线是有自己的理由的,一是与ARM公司的合作,ARM+FPGA的发展方向,第二也 是为了用户使用方便,将IP CORE的接口标准化。

我们发现以前的接口是分为X,Y,PHASE的,而现在只是DATA,PHASE,其实是X,Y嵌入到DATA之中了

Cordic v6.0 IP CORE使用说明

Cordic v6.0 IP CORE使用说明 Cordic v6.0 IP CORE使用说明

data和phase的宽度必须为BYTE的整数倍,而且要能容纳X_IN,Y_IN,PHASE_IN




Cordic v6.0 IP CORE使用说明

Cordic v6.0 IP CORE使用说明

1、Functional Selection:  

由于CORDIC算法的核心是伪旋转,所以各个功能的输出都会有一定的伸缩,注意比例系数 Z

a、Rotate

Cordic v6.0 IP CORE使用说明

以下是一个例子

Cordic v6.0 IP CORE使用说明

b、Translate

Cordic v6.0 IP CORE使用说明

图中括号应该是写错了,我认为应是Rectangular to Polar才对,xy坐标向极坐标的转换,以下是 一个例子。

Cordic v6.0 IP CORE使用说明

c、sin/cos

Cordic v6.0 IP CORE使用说明

Cordic v6.0 IP CORE使用说明

d、sinh/cosh

Cordic v6.0 IP CORE使用说明

Cordic v6.0 IP CORE使用说明

Cordic v6.0 IP CORE使用说明

e、arc tan

Cordic v6.0 IP CORE使用说明

Cordic v6.0 IP CORE使用说明

f、 arc tanh

Cordic v6.0 IP CORE使用说明

Cordic v6.0 IP CORE使用说明

g、square root

Cordic v6.0 IP CORE使用说明

Cordic v6.0 IP CORE使用说明


2、architectural configuration:

分为 word serial 和 parallel

简单来说,word serial 是为了节省资源,采用了循环的方法,只用一个shift-addsub和一个循环计数器来实 现,parallel则是用多个shift-addsub串连在一起来实现,如果为了提高始终频率和吞吐量,每个shift-addsub之间 可添加reg ,实现pipeline。

最大时钟频率:

parallel with pipeline > word serial > parallel without pipeline

(在xilinx fpga数字信号处理权威指南   何宾,张艳辉 一书CORDIC章节有速率比较,从实现原理上考虑这 种结果理所当然)

3、pipeline mode:结合2中所讲,主要用来提升吞吐量

4、data format:

根据应用场合不同,CORDIC算法的input & output 可以为Cartesian pair(笛卡尔坐标,也就是xy坐标),Polar pair (极坐标)or Scalar form(常量),下面我们一一介绍:

(1)Cartesian Operands and Results

s_axis_cartisian_tdata的subfields是X_IN, Y_IN

s_axis_cartisian_tdata的subfields是X_OUT, Y_OUT


a、在rotate,translate,sin,cos,sinh,cosh,atan 功能中操作数都是如下表示:

  Cordic v6.0 IP CORE使用说明

并要求:                    -1 <=  input data <= +1   

也就是说,使用的是fixed-point,一位符号位,一位整数位,剩下的都是小数位,这种表示方法统称为

Q Numbers Format,具体到上例叫做1QN 或者Fix(N+1)_N, 其中N=(数据位数 – 2),也就是8;

b、 在square root功能中,X_IN, X_OUT都是 unsigned fraction 或者unsigned integer,毕竟开根号的结 果永远不会是负数

此时,X_IN ,X_OUT的整数位为一位,剩下的均为小数位

5、phase format:

表示方法与data format类似,一位符号位,两位整数位,剩下的都是小数位

6、Input/output Options

 

7、Advanced Configuration Parameters

a、Iterations

控制CORDIC算法的迭代次数,用于控制internal add-sub的数量

默认为0,这样迭代次数由输出精度自动决定

b、precision

Configure the internal precision of the add-sub iterations

默认为0,这样内部精度由输出精度要求和迭代次数自动决定

c、coarse rotation

如果没有选中,那么rotation,translation,sin,cos,arc tan的输入输出范围将被限定在(-pi/4~pi/4)

选中则可以扩展到整个圆

d、compensation scaling

Cordic v6.0 IP CORE使用说明

  


  



免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/10802.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信