vivado的RTL设计与联合modelsim仿真

以信号发生器为例,读取ROM中数据,并输出形成波形
一.RTL设计
(1)新建工程。Quit Start下选择Creat Project,选择文件位置,如果勾选“Creat project subdirectory ”会生成子目录;
选择RTL Project,IP文件和约束文件直接跳过即可;
选芯片型号;
(2)加入.v文件。在Sources下找到Design Sources,右键Add sources添加或者新建.v文件。注意顶层的File Name与Project Name保持一致.
Vivado可以在新建.v文件时就指定输入输出口,比Quartus更加方便。
(3)调用ROM的IP核。在界面左端选择IP Catalog,找到Block Memory Genetator,配置为8*1024的单口ROM并写入.coe数据文件(可以用Matlab等软件生成).
(4)例化ROM。可以直接在IP的示例文件里复制。
整体代码如下:

module signal(
    input         	clk,
    input         	rst,
    output 	[7:0]  	signal
    );
    reg		[9:0]	addr;
    
    always@(posedge clk)
    begin
        if (!rst)begin
            addr<=10'b0;
        end else begin
            addr=addr+10'b1;
        end
    end
    
    rom_8x1024 rom_instan (
      .clka(clk),    // input wire clka
      .addra(addr),  // input wire [9 : 0] addra
      .douta(signal)
      );
endmodule

二.联合Modelsim仿真
(1)仿真Modelsim的lib库。主面板选择Tools-Compile Simulation Libraries.打开后Simulator选择Modelsim Simulator,选择自己的型号和仿真库位置,点Compile即可
在这里插入图片描述
(2)设置调用Modelsim仿真。PROJECT MANAGER里选择Settings,选择Modelsim以及刚才编译好的库,如下图在这里插入图片描述
(3)SIMULATION中选择Run Simulation,跑行为级仿真,即可以完成编译-仿真-dump波形的过程。
在这里插入图片描述
可以看到,在没有设置其他参数时,信号只跑了一部分,下面实现

三.脚本控制Modelsim
(1)打开工程所在文件,找到.sim/.sim1/behave/modelsim,可以通过更改里面的.do文件编辑控制脚本
在这里插入图片描述
每次修改testbench后都要重新compile一下,在Modelsim的控制台输入do tb_signal_compile.do即可。
simulate和wave也是一样的命令
(2)修改脚本。每次compile后Modelsim会退出,编辑tb_signal_compile.do 把quit force注释掉即可。波形仿真时间不够,可以改tb的$finish时间,然后编辑tb_signal_simulation.do把run 100ns改成适合的时间。
修改完脚本后重新仿真,可得到下图:
在这里插入图片描述
已经得到完整的周期波形。
更多的Modelsim控制脚本参考https://www.cnblogs.com/IClearner/p/7273441.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值