CORDIC IP教程:创建一个NCO的正弦余弦生成
目录
- 1. 引言
- 2. 设计框图
- 3. CORDIC块:
1. 引言
学习如何在Vivado中使用CORDIC IP实现数控振荡器(NCO) !
本教程将引导您在FPGA上创建数字正弦和余弦波发生器。
你将学习:
•NCO组件如何协同工作-从频率控制字(FCW)到相位累加器和CORDIC IP
•提示提取正弦/余弦值和控制波的频率
2. 设计框图
这个框图代表了一个数控振荡器(NCO),它被用来产生一个频率可变的数字正弦波。NCO的主要组成部分是:频率控制字(FCW)、相位累加器和CORDIC IP。
Vivado.png中CORDIC NCO的框图
•频率控制字(FCW - N位):
•FCW是控制产生的正弦波频率的输入值。
•为了增加正弦波的频率,增加FCW。对于较慢的正弦波,减小FCW。
•相位累加器:
•相位累加器是NCO的核心。它通过在每个时钟周期将FCW添加到其当前值来累积相位。
•相位累加器的输出表示正弦波的当前相位。
•该相位值持续增加,当达到π时,累加器将其重置为−π。
相位累加器输出增加到π,然后休息到-π。锯齿波的斜率取决于fw
•相位累加器产生一个相位斜坡信号,其值范围从−π到π。该阶段的阶跃增量由FCW决定。
3. CORDIC块:
CORDIC(坐标旋转数字计算机)块是NCO中的核心计算单元。它的作用是将相位累加器输出的相位值(角度),实时地、高效地计算并输出对应的正弦(sin)和余弦(cos)值。
你可以把它想象成一个“超级计算器”:
- 输入:一个代表角度的数字(例如,0、π/4、π/2 等),这个角度来自相位累加器。
- 核心算法:CORDIC采用一种巧妙的迭代算法,仅通过移位(>>)和加法(+)这两种硬件极易实现的简单操作,来逼近复杂的三角函数计算。这使其非常适合在FPGA中实现,无需昂贵的乘法器或查找表。
- 输出:两个数字,分别代表输入角度的正弦值(sin)和余弦值(cos)。这两个输出就是最终的数字正弦波和余弦波的采样点。
简单来说:相位累加器告诉你“现在波形走到哪个角度了”,CORDIC块则负责回答“在这个角度上,正弦波和余弦波的幅度是多少”。