我做一个CORDIC算法产生正弦波的程序,用Q2编写,但是modelsim能仿真出来正弦波波形,但是signaltap抓的波形是上下相反的,一直找不到原因,希望高手能帮帮忙,谢谢啦!
下面是我的程序:
module NCO(clk,rst_n,ena,fre_chtr,pha_chtr,sin_out_r,cos_out_r,eps_out,da_clk,da_mode);
parameter DATA_WIDTH=28;
input clk;
input rst_n;
input ena;
input [DATA_WIDTH-1:0] fre_chtr;
input [DATA_WIDTH-1:0] pha_chtr;
output [9:0] sin_out_r;
output [9:0] cos_out_r;
output [DATA_WIDTH-1:0] eps_out;
output da_clk; //D/A时钟
output da_mode; //D/A数据模式选择
wire [DATA_WIDTH-1:0] cos_out;
wire [DATA_WIDTH-1:0] sin_out;
reg [DATA_WIDTH-1:0] phase_in;
reg [DATA_WIDTH-1:0] fre_chtr_reg;
assign da_mode = 1'b0; //D/A数据模式选择以二进制输入
assign da_clk = clk; //D/A时钟输出
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
fre_chtr_reg<=28'd0;
else
if(ena)
begin
fre_chtr_reg<=28'd5368709+fre_chtr_reg; //fre_chtr_reg;
end
end
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
phase_in<=28'd0;
else
if(ena)
begin
phase_in<=pha_chtr+fre_chtr_reg;
end
end
sincos u(.clk(clk),.rst_n(rst_n),.ena(ena),.phase_in(phase_in),.sin_out(sin_out),.cos_out(cos_out),.eps(eps_out));
assign sin_out_r=sin_out[27:18];
assign cos_out_r=cos_out[27:18];
endmodule
此帖出自
小平头技术问答
一周热门 更多>