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文件的写入方法。