Menu Close

QuartusII ROM IP 核仿真配置

Quartus II ROM IP核仿真配置

在FPGA开发中,会经常使用到ROM IP核,特别是存储一些序列号、版本信息、加密信息时。ROM IP核使用比较简单,但是利用Quartus软件下子程序modelsim-altera联合仿真时,按正常的使用流程却往往仿真不了。例如下面这个简单的代码:

module rom_test(
    input  wire       clk,
    input  wire       rst,
    output wire [7:0] q
);

reg [7:0] address;
always@(posedge clk or posedge rst) 
begin
    if(rst)
        address <= 0;
    else
        address <= address + 1;
end

rom rom_inst (
    .address ( address ),
    .clock   ( clk ),
    .q       ( q )
);

endmodule

tb 文件如下:

`timescale 1ns/1ns
module rom_test_tb();
reg clk;
reg rst;
wire [7:0] q;

initial 
begin
    clk = 0;
    rst = 1;
    #5
    rst = 0;
end

always #10 clk = ~clk;

rom_test inst_rom_test(
    .clk (clk),
    .rst (rst),
    .q   (q)
);
endmodule

原本是一个非常简单的工程,也配置了rom ip核以及对应的mif文件作为初始化文件。但就是仿真不了。modelsim运行后得不到rom里的数据:

%title插图%num

图1

查看modelsim提示,能看到下面的提示信息:

%title插图%num

图2

图2显示找不到 mif 文件。(使用的软件版本:<ModelSimSetup-18.1.0.625-windows.exe> <QuartusLiteSetup-18.1.0.625-windows.exe>)

 

问题原因:

原因如提示信息中所说的,找不到mif文件,打开失败。这个配置其实并没有错误,那怎么会找不到文件呢?

这应该算Quartus 和ModelSim 两个软件配合中的一个小bug了。具体原因是rom 配置的时候,指定mif 文件的路径,记录的是相对路径,如下图:

%title插图%num

图3

此相对路径,是相对于quartus而言,也就是相对于“ rom_test.qpf”这个文件。但是modelsim在遇到这个路径的时候,却以为这个相对于它自己(rom_test_run_msim_rtl_verilog.do)的。所以找不到文件。

解决办法:

1、可以将mif文件复制一份到modelsim的文件夹下。让modelsim按照相对路径也能找到mif文件。按上图的配置,则只需要把mif所在文件夹复制到rom_test_run_msim_rtl_verilog.do的上层目录。

2、可以在运行仿真前修改ROM IP 核里的初始化文件路径信息,也就是要修改 rom.v  文件,找到 “altsyncram_component.init_file = “../ipcore/rom_test.mif”,” 这条语句,使文件位置和路径能匹配的上。(不推荐)
经过上面的修改,就可以解决问题了:

%title插图%num

图4

从图4的显示可以看出,经过以上两种配置办法,都可以很好的解决问题。

Posted in FPGA, FPGA, Quartus II, Verilog, Verilog, 文章, 编程语言, 资料区

发表评论

相关链接