使用NCO ip核生成波形怎么有跳变,百思不得其解

我的顶层代码

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

img

真正的原因还是有符号数和无符号数没整对。
比如仿真的正弦波,
8位有符号数在0点附近,-1,0这2个数据间隔只相差1。
换成8位无符号数这2个数就是 255,0,这2个数间隔就成255了。
画成仿真波形,平滑的曲线就成锯齿了。
有符号数,无符号数整错,曲线接近0的负数会当成数值很大的正数画出来。曲线下方的负数也会当成正数画到上面去。

仿真时,数据类型 有符号数,无符号数 没整对,改过来波形就对了

你好,我想问下你的quartus版本是多少,我的好像没 p[ojie NCO