相关资料参考原文:[基于FPGA的CORDIC算法实现——Verilog版]
在上面的链接中,善良的一休君已经把CORDIC算法相关的内容都介绍过了。
作为一个萌新的我在看了前文链接里介绍以后对CORDIC算法有了一定的认识,也动手实践了一番,在此基础上加了一点儿自己的想法,做了一个频率和幅度均可调节的正弦波信号发生器,因为目前讲来还没有相位调整的需要,就没管相位,其实只需要稍加改动,相位也可以调节。第一次写,不会整那么多花里胡哨的排版,见谅~
因为比较懒,下面只给出和链接里不一样的部分及相关代码。
module Cordic_Test(
clk,
Rst_n,
Sinx,
Cosx,
ACW,//幅度控制
phase,
error
);
input clk;
input Rst_n;
input [31:0]ACW;
input [31:0]phase;//输入的角度
output reg signed [31:0] Sinx;
output reg signed [31:0] Cosx;
output reg signed [31:0] error;
//角度值,每个角度值 扩大了2^16倍,这样方便FPGA处理。
`define rot0 32'd2949120 //45*2^16
`define rot1 32'd1740992 //26.565*2^16
`define rot2 32'd919872 //14.036*2^16
`define rot3 32'd466944 //7.125*2^16
`define rot4 32'd234368 //3.576*2^16
`define rot5 32'd117312 //1.790*2^16
`define rot6 32'd58688 //0.895*2^16
`define rot7 32'd29312 //0.448*2^16
`define rot8 32'd14656 //0.224*2^16
`define rot9 32'd7360 //0.112*2^16
`define rot10 32'd3648 //0.056*2^16
`define rot11 32'd1856 //0.028*2^16
`de