1-设计流程
● 了解cordic 算法原理,公式,模式,伸缩因子,旋转方向等,推荐以下链接视频了解 cordic 算法。哔哩哔哩-cordic算法原理讲解
● 用matlab 或者 c 实现一遍算法
● 在FPGA中用 verilog 实现,注意使用有符号变量以及小数点定点化处理
备注:
在verilog 需要用 ram 存储的值:列举了13次迭代的tan值和对应角度;
2-RTL
分享自己写的一个cordic rtl :
2-1 测试代码 ,测试 一二三四象限内角度的sin cos 值。
module test_my_cordic(
input i_clk,
input i_rst
);
reg signed [31:0] r_angle;
reg r_valid ;
wire w_ready;
wire signed [31:0] r_x = 39796;
wire signed [31:0] r_y = 0;
(*dont_touch = "true"*)
my_cordic inst_my_cordic
(
.i_clk (i_clk),
.i_rst (i_rst),
.i_iteration_count (16), //设置迭代次数 ,最大16次
.i_setx (r_x),
.i_sety (r_y),
.i_set_angle (r_angle),
.i_valid (r_valid),
.o_sin (),
.o_cos (),
.o_valid (),
.o_ready (w_ready)
);
/* 测试 第四象限 0 ~ -90°
always @ (posedge i_clk or posedge i_rst)
begin
if (i_rst) begin
r_angle <= 0;
end else if (r_angle == -5898240 && w_ready) begin
r_angle <= 0;
end else if (w_ready && r_valid) begin
r_angle <= r_angle - 655360;
end else begin
r_angle <= r_angle;
end
end
*/
// 测试 第一象限 0 ~ 90°
always @ (posedge i_clk or posedge i_rst)
begin
if (i_rst) begin
r_angle <= 0;
end else if (r_angle == 5898240 && w_ready) begin
r_angle <= 0;
end else if (w_ready && r_valid) begin
r_angle <= r_angle + 655360;
end else begin
r_angle <= r_angle;
end
end
/* //测试 第三象限 -180 ~ -90°
always @ (posedge i_clk or posedge i_rst)
begin
if (i_rst) begin
r_angle <= -11796480;
end else if (r_angle == -5898240 && w_ready) begin
r_angle <= -11796480;
end else if (w_ready && r_valid) begin
r_angle <= r_angle + 655360;
end else begin
r_angle <= r_angle;
end
end
*/
/*// 测试 第二象限 90° ~ 180 °
always @ (posedge i_clk or posedge i_rst)
begin
if (i_rst) begin
r_angle <= 5898240;
end else if (r_angle == 11796480 && w_ready) begin
r_angle <= 0;
end else if (w_ready && r_valid) begin
r_angle <= r_angle + 655360;
end else begin
r_angle <= r_angle;
end
end
*/
always @ (posedge i_clk or posedge i_rst)
begin
if (i_rst)
r_valid <= 0;
else if (w_ready && r_valid)
r_valid <= 0;
else if (w_ready)
r_valid <= 1;
else
r_valid <= 0;
end
endmodule
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: