modelsim仿真 object里面没东西

DDS进行modelsim仿真object里面什么都没有 verilog

module DDS
(
input     wire                    clk,
input     wire                    rst_n,
 


output wire[9:0]        Da
);
        parameter         F_WODR=357913    ; //频率控制字
        //频率=F_WODR*(clk/2^32)
        parameter         P_WODR=1024        ; //相位控制字

        reg[31:0]            F_cnt             ;
        
       reg[13:0]            rom_addr           ;

        
            
    /**************频率参数**********/    
    always@(posedge clk or negedge rst_n)
                if(rst_n==0)
                        F_cnt  <= 32'd0;
                else
                        F_cnt  <= F_cnt  + F_WODR;

                        
    
                        
    /**************相位参数**********/                        
    always@(posedge clk or negedge rst_n)
                if(rst_n==0)
                        rom_addr <= 32'd0;
                else
                        rom_addr <= F_cnt [31:20] + P_WODR;
                 
                        
    rom_wave   rom_wave_inst
    (
    .address      (rom_addr),
    .clock        (clk),
    .q           (Da)
    );
        
endmodule

关于tb

`timescale 1ns/1ns 

module DDS_tb;


        reg                    clk;
        reg                    rst_n;
         


        wire[9:0]        Da;





        DDS     u_DDS
        (
        .clk    (clk),
        .rst_n  (rst_n),
        .Da     (Da)
        );

        initial clk=1;
        
        always#5 clk = ~clk ;    
        initial begin
        rst_n = 0;
        #201 ;
        rst_n = 1;
        end

endmodule

img

根据你提供的 Verilog 代码和 Testbench,可以进行 ModelSim 仿真。

1.在 ModelSim 中创建工程,添加 DDS 和 DDS_tb 两个文件。

2.编译工程,检查是否存在语法错误或其他问题。

3.运行仿真。在命令行中输入 run 命令,或者在 ModelSim 界面中点击 “Run” 按钮。

4.查看仿真波形。在 ModelSim 界面中,打开 “Wave” 窗口,查看波形。

你可以在 Testbench 中修改时钟频率和仿真时长等参数,以便更好地观察波形。另外,建议添加一些断言语句,用于验证设计是否符合预期。

注意,如果仿真结果与预期不符,可以检查代码中是否存在错误或设计是否存在问题。还可以调整参数,如相位控制字和频率控制字,以便更好地观察波形。

该回答引用ChatGPT

1、在modelsim仿真中,需要对仿真源文件进行编译,生成仿真库,然后才能进行仿真。您需要确认是否已经将DDS.v和DDS_tb.v文件添加到modelsim的工程中,并对其进行编译生成仿真库。

2、在modelsim的菜单栏中,选择“Compile” -> “Compile”(或者使用快捷键“Ctrl+R”),打开“Compile”对话框,确认需要编译的源文件和工作库,然后点击“Compile”按钮进行编译。如果编译过程中没有错误,就可以进行仿真了。

3、在modelsim的菜单栏中,选择“Simulate” -> “Start Simulation”(或者使用快捷键“Ctrl+T”),打开“Simulate”对话框,确认仿真的起始时间、终止时间和仿真时间步长,然后点击“Run”按钮进行仿真。如果一切正常,仿真波形就会在modelsim的波形窗口中显示出来。

参考gpt
您的代码中有一些问题需要解决,首先,您的 DDS 模块没有连接到任何输出,因此在 rom_wave_inst 实例化时需要指定 q 端口连接到 Da 输出端口:

rom_wave rom_wave_inst (
    .address      (rom_addr),
    .clock        (clk),
    .q            (Da)
);


此外,在您的 DDS_tb 模块中,您需要声明时钟 clk 和复位信号 rst_n 的初始值。这可以通过在初始块中为这些信号赋值来完成。例如:

initial begin
    clk = 0;
    rst_n = 0;
    #10;
    rst_n = 1;
end


最后,您需要在仿真模块中添加一个 $dumpfile 和 $dumpvars 系统任务,以便将波形记录到 vcd 文件中。例如:

initial begin
    $dumpfile("dds.vcd");
    $dumpvars(0, DDS_tb);
    // Your testbench code here
end


您可以根据需要将 dds.vcd 替换为您要记录波形的文件名。

在你的代码中,你定义了一个DDS模块,还定义了一个DDS_tb测试模块,其中DDS_tb测试模块将DDS模块实例化,并提供时钟、复位和输出接口。在进行仿真前,需要做以下几个步骤:
1.下载和安装ModelSim仿真软件。
2.编写一个仿真脚本,该脚本将在ModelSim中运行并执行仿真。
3.运行仿真脚本来开始仿真。

以下是一个示例仿真脚本,你可以将其保存为文件,例如sim.do:

# Compile the design and testbench
vlog DDS.v
vlog DDS_tb.v

# Simulate the design
vsim -gui DDS_tb

# Add the signals to the wave window
add wave *

# Run the simulation
run 1000ns

这个仿真脚本编译了DDS模块和DDS_tb测试模块,启动ModelSim图形界面,并将信号添加到波形窗口。最后,它运行了仿真1微秒。

你可以打开ModelSim软件,打开仿真脚本,执行仿真脚本,就可以在仿真波形窗口中看到仿真结果。注意,为了看到DDS模块的输出,你需要在波形窗口中添加Da信号。

如果波形窗口中没有看到Da信号,可能是因为你的DDS模块没有正确输出。你可以在仿真期间检查每个信号的值,以找出问题所在。

你已经将模块实例化并连接到测试台模块中了,但可能还需要添加仿真运行指令和仿真结束指令,以便在仿真时能够看到信号值的变化和仿真结果,下面是一个基本的示例测试代码:

`timescale 1ns/1ps

module DDS_tb;

  reg clk;
  reg rst_n;
  wire [9:0] Da;

  DDS u_DDS (
    .clk(clk),
    .rst_n(rst_n),
    .Da(Da)
  );

  initial begin
    clk = 0;
    forever #5 clk = ~clk;
  end

  initial begin
    rst_n = 0;
    #201;
    rst_n = 1;
    #2000; // 延时 2000 ns
    $finish; // 仿真结束指令
  end

endmodule

https://www.baidu.com/link?url=GlIoXATNqB5jFRVN32fB0fvq-y6dZJnkYCWUYnoZbVhQQ6rdVsktWHw0Poqc0HZP8NfxynYj7WhN76W6a5LxaK&wd=&eqid=9c65f0b4001a7e8f0000000263f2d3d0

以下答案基于ChatGPT与GISer Liu编写:

这是一个简单的DDS模块,以及它的testbench代码。如果您要使用Modelsim进行仿真,需要先编译代码,再进行仿真。以下是步骤:

  1. 打开Modelsim软件,在菜单栏中选择File -> New -> Project。在弹出的对话框中选择一个目录作为工程目录,设置工程名称,然后点击OK。
  2. 在弹出的New Project Wizard对话框中,选择Verilog HDL,然后点击Next。
  3. 在Add Existing Files对话框中,将DDS模块和testbench模块的代码添加到工程中。
  4. 在菜单栏中选择Compile -> Compile All。如果没有报错,说明代码编译成功。
  5. 在菜单栏中选择Simulate -> Start Simulation。在弹出的对话框中选择DDS_tb作为顶层模块,然后点击OK。
  6. 在弹出的Simulator工具栏中,点击Run按钮进行仿真。
  7. 如果您想要查看Da信号的波形,可以在波形窗口中添加该信号,并将仿真时间拉长,以便查看完整的波形。

请注意,这只是一个简单的示例,可能需要根据您的具体情况进行修改。

解答一
使用Modelsim仿真工具来检查DDS的Verilog代码。首先,您需要将Verilog代码编译成Object文件,然后使用Modelsim仿真工具来检查Object文件中的信号,以确保代码的正确性。如果Object文件中没有任何信号,则可能是因为Verilog代码中存在语法错误,或者没有正确指定信号的类型,您可以检查Verilog代码,以确保代码的正确性。
解答二
没有任何object,因为你不能仿真verilog代码。Verilog代码是用来描述芯片行为的,而不是用来运行的。要使用ModelSim仿真,你需要有目标平台的硬件描述,并且你可以在ModelSim中加载这个描述(通常是VHDL或Verilog HDL) 并提供一些统一的输入/输出。

根据你提供的代码,DDS模块实现了一个数字信号处理中的直接数字合成(DDS)模块,该模块可以产生一个由相位控制字和频率控制字控制的输出波形。在此模块中,使用了一个只读存储器(ROM)用于存储产生的波形,存储器的地址由相位控制字和频率控制字计算得出。该模块的输入端包括时钟(clk)和异步复位(rst_n),输出端为数字信号(Da)。

对于该模块的仿真测试,通过模块化设计的方式,需要对该模块进行实例化,生成测试模块,以便对该模块进行仿真。测试模块的功能是对DDS模块的接口进行测试,提供合适的输入信号(时钟和异步复位信号),并读取输出数字信号,以验证DDS模块的功能是否正确。因此,在测试模块中,需要包含一个DDS实例(u_DDS),同时需要提供时钟(clk)和异步复位(rst_n)信号的输入,以及从DDS模块输出的数字信号(Da)的读取。在该测试模块中,使用了Verilog的initial和always块来提供时钟和异步复位信号,并在always块中对时钟信号进行时钟控制,以便对DDS模块进行仿真。

需要注意的是,在进行仿真时,需要根据具体的仿真平台,对仿真工具的使用进行相应的配置,包括仿真工具的版本、仿真器的配置、仿真语言的设置等,以确保仿真结果的正确性。在进行仿真前,需要先进行代码的编译和综合,生成仿真文件,然后再进行仿真测试。在仿真测试过程中,需要根据测试需求和测试目的,选择合适的仿真方法和仿真参数,以获得准确的仿真结果。