请教大佬们,quartus中用DDS进行混频时,modelsim仿真波形不对是怎么回事啊?-FPGA常见问题论坛-FPGA CPLD-ChipDebug

请教大佬们,quartus中用DDS进行混频时,modelsim仿真波形不对是怎么回事啊?

下面怎么是平的啊?
我是按野火教学dds视频写的两个正弦波,然后再乘法器中相乘,别的啥也没有,为什么下面就是平的啊?应该是上下对称才对啊!
程序很简单啊

module dds_ctrl
(
    input  wire         sys_clk,
    input  wire         sys_rst_n,

    output  wire   [7:0]   dac_data_0,
    output  wire   [7:0]   dac_data_1,
    output  wire  [15:0]   dac_data_mul 
);

parameter F_WORD0 = 32'd429497; //需要400k
parameter F_WORD1 = 32'd42949673; //需要100k

reg [31:0] fre_add0;
reg [31:0] fre_add1;
reg [11:0] rom_addr_reg0;
reg [11:0] rom_addr_reg1;

always@(posedge sys_clk or negedge sys_rst_n) //fre_add
    if (sys_rst_n == 1'b0)
       fre_add0 <= 32'd0;
    else 
        fre_add0<= fre_add0 + F_WORD0;

always@(posedge sys_clk or negedge sys_rst_n) //rom_addr_reg    
    if (sys_rst_n == 1'b0) 
        rom_addr_reg0 <= 12'd0;
    else 
        rom_addr_reg0 <= fre_add0[31:20] ; // 高12位加相位输入字 

 always@(posedge sys_clk or negedge sys_rst_n) //fre_add
    if (sys_rst_n == 1'b0)
        fre_add1 <= 32'd0; 
    else 
        fre_add1<= fre_add1 + F_WORD1;

always@(posedge sys_clk or negedge sys_rst_n) //rom_addr_reg    
    if (sys_rst_n == 1'b0)
        rom_addr_reg1 <= 12'd0;
    else        
        rom_addr_reg1 <= fre_add1[31:20]; // 高12位加相位输入字



//rom 表例化到下面
rom_01    rom_01_inst (
    .address (rom_addr_reg0 ),
    .clock ( sys_clk ),
    .q ( dac_data_0 )
    );
rom_01    rom_01_inst_1 (
    .address ( rom_addr_reg1),
    .clock ( sys_clk),
    .q ( dac_data_1 )
    );        
mul    mul_inst (
    .dataa ( dac_data_0),
    .datab (dac_data_1),
    .result ( dac_data_mul )
    );
请登录后发表评论