quartus之rom的IP测试

Posted on 2020-07-30 22:03  绿叶落秋风  阅读(759)  评论(0编辑  收藏  举报

quartus之rom的IP测试

1、rom的作用

rom,就是只读存储器,内部数据在下载电路时就已经确认,不能使用信号驱动更改,只能够读取,一般用于比较重要的配置数据。在quartus中,可以直接调用IP核实现该操作。配置文件有hex和mif两种,都可以实现数据的写入。

2、测试方法

测试代码:

`timescale 1ns/1ns

module rom_tb;
    reg clk;
    reg rst_n;
    wire [7:0] data;

    rom U1_tb(
        .clk(clk),
        .rst_n(rst_n),
        .data(data)
    );

    initial begin
        clk=0;
        rst_n=0;
    end

    always #10 clk = ~clk;

    initial begin
        #1
        $monitor($time,,"data=%d",data);
        #3
        rst_n=1;
        #300
        $stop;
    end

endmodule

顶层代码:

module rom(
    input clk,
    input rst_n,
    output [7:0] data
);

reg [7:0] address;

always@(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        address<=8'd0;
    end
    else if(address==8'd255)begin
        address<=8'd0;
    end
    else begin
        address<=address+1'b1;
    end
end

rom_ip U1(
    .address(address),
    .clock(clk),
    .q(data)
);

endmodule

mif文件随便写几个数据就行。目前好像只能写数字进去,字符写入好像不支持,但是有一个ASCII转化的显示。

# run -all
#                    1 data=  0
#                   30 data=  1
#                   50 data=  2
#                   70 data=111
#                   90 data=255
#                  110 data=  6
#                  130 data=  7
#                  150 data=  9
#                  170 data=  7
#                  190 data= 22
#                  210 data=  0

3、结果分析

测试的结果可以看出rom的数据和mif写入数据的内容一致,仿真成功。在实际使用中,要考虑mif文件的写入方法。