30.07.2013 Views

第44 期: 面向未来十年的“All Programmable” - Xilinx

第44 期: 面向未来十年的“All Programmable” - Xilinx

第44 期: 面向未来十年的“All Programmable” - Xilinx

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CORDIC 应用<br />

设计人员在从数字信号处理和图像处<br />

理 到 工 业 控 制 等 多 种 应 用 中 采 用<br />

CORDIC 算法。最基本的用法是将<br />

CORDIC 与相位累加器结合,以生成<br />

正弦波和余弦波,供 I 调制和 Q 调制<br />

使用。使用该算法生成这些波形,如<br />

果生成正确,可以实现高度的无杂散<br />

动态范围 (SFDR)。对大多数信号处<br />

理应用而言,需要良好的无杂散动态<br />

范围。<br />

在机器人技术领域,CORDIC 被<br />

用于运动学领域,对判断机器人的关<br />

节、四肢的位置和运动非常有用。在<br />

该应用中,可以使用圆函数向量模式<br />

的 CORDIC 算法轻松将坐标值与新<br />

坐标值相加。在图像处理领域,像光<br />

照和向量旋转这样的三维运算最好选<br />

用该算法来实现。<br />

在 EXCEL 中建模<br />

在横切代码前,建立 CORDIC 算法<br />

模型最直观的方法之一是填制简单的<br />

Excel 数据表。这样可以先用浮点数<br />

系统,再用可扩展的定点数系统为迭<br />

代次数和增量(An)建模,以便为仿<br />

真过程中的代码验证提供参考。<br />

从表 4 的 Excel 模型中可以看<br />

到,将初始的 X 输入设为 An,可以<br />

减少结果后处理工作量。初始自变量<br />

手 把 手 课 堂 : F P G A 1 0 1<br />

模式 x y z 方向 增量<br />

初始 0.607253 0.000000 0.017453<br />

0 0.607253 0.607253 -0.767945 1 0.707107<br />

1 0.910879 0.303626 -0.304298 -1 0.894427<br />

2 0.986786 0.075907 -0.059319 -1 0.970143<br />

3 0.996274 -0.047442 0.065036 -1 0.992278<br />

4 0.999239 0.014826 0.002617 1 0.998053<br />

5 0.998776 0.046052 -0.028623 1 0.999512<br />

6 0.999496 0.030446 -0.012999 -1 0.999878<br />

7 0.999734 0.022637 -0.005186 -1 0.999969<br />

8 0.999822 0.018732 -0.001280 -1 0.999992<br />

9 0.999859 0.016779 0.000673 -1 0.999998<br />

10 0.999842 0.017756 -0.000304 1 1<br />

11 0.999851 0.017268 0.000185 -1 1<br />

12 0.999847 0.017512 -0.000060 1 1<br />

13 0.999849 0.017390 0.000063 -1 1<br />

14 0.999848 0.017451 0.000001 1 1<br />

余弦 正弦 An 0.607253<br />

CORDIC 0.999848 0.017451<br />

实际 0.999848 0.017452<br />

表 4 - 圆函数旋转模式的 CORDIC 的 Excel 模型<br />

设为 Z,单位为弧度,和结果一样。<br />

实现 CORDIC<br />

如果没有其他更好的选择,在 FPGA<br />

中实现 CORDIC 算法的最简单方法<br />

就是使用像赛灵思 CORE Generator ®<br />

这样的工具。CORE Generator 提供<br />

了全面的接口,供用户定义 CORDIC<br />

的确切功能(旋转、向量等),如图<br />

1 所示。<br />

令 人 遗 憾 的 是,CORE<br />

Generator 不提供 CORDIC 在线性<br />

模式下工作的选项(该工具确实提供<br />

有执行这些功能的独立内核)。不过<br />

只需要几行就可以编写出实现该算法<br />

2012 年第二季度 赛灵思中国通讯 44 <strong>期</strong> 43

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!