我的顶层代码
module top
(
input clk,
input rst_n,
output [13:0] sine
);
wire [31:0] phi_inc_i;
wire clken;
wire [13:0] phase_mod_i;
wire out_valid;
assign clken = 1'b1;
assign phi_inc_i = 32'd42949673;
assign phase_mod_i = 14'b10_0110_0000_1111;
nco_100M_1M inst1(
.phi_inc_i (phi_inc_i) ,
.clk (clk) ,
.reset_n (rst_n) ,
.clken (clken) ,
.phase_mod_i (phase_mod_i) ,
.fsin_o (sine) ,
.out_valid (out_valid )
);
endmodule
我的测试文件
`timescale 1ns / 1ns
module tb();
reg rst1;
reg clk;
wire [13:0] SI;
top t1(
.rst_n(rst1),
.clk(clk),
.sine(SI));
parameter PERIOD = 10; // 设置系统时钟为50Mhz
always #10 clk = ~clk;
initial begin
clk = 1'b0; #40;
rst1 = 1'b0; #40;
rst1 = 1'b1;
end
endmodule
真正的原因还是有符号数和无符号数没整对。
比如仿真的正弦波,
8位有符号数在0点附近,-1,0这2个数据间隔只相差1。
换成8位无符号数这2个数就是 255,0,这2个数间隔就成255了。
画成仿真波形,平滑的曲线就成锯齿了。
有符号数,无符号数整错,曲线接近0的负数会当成数值很大的正数画出来。曲线下方的负数也会当成正数画到上面去。
仿真时,数据类型 有符号数,无符号数 没整对,改过来波形就对了
你好,我想问下你的quartus版本是多少,我的好像没 p[ojie NCO