rom读写测试时序分析 - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki

D1 rom比较简单,就是bram的读的功能而已。配置如下:

一般我们这2项都不勾选,这样延迟是一拍。

D2 代码

`timescale 1ns / 1ps
module test_rom(

    );
reg clka, rstn;
initial clka=0;
always #10 clka=~clka;

initial begin
    rstn=0;
    #1000;
    rstn=1;
end 

reg [15:0] dina;
reg [7:0] addra;
reg ena;
wire [15:0] douta;

initial begin
    dina=16'h0000;
    addra=8'h00;
    ena=0;  

wait(rstn==1);
# 1000;

repeat(256)
    @(posedge clka) begin
        #1;
        ena=1;
        addra=addra+1;
    end
    
ena=0;

end

    
blk_mem_gen_1 your_instance_name (
  .clka(clka),    // input wire clka
  .ena(ena),      // input wire ena
  .addra(addra),  // input wire [7 : 0] addra
  .douta(douta)  // output wire [15 : 0] douta
); 
endmodule

D3 波形

可以看到,第1个读的地址0x01,数据是13。(注意,由于testbench原因,没有从0x00地址开始读)

最后一个读的地址是0xff,读的数据是267