quartus之ram的IP測試


quartus之ram的IP測試

1、基本原理

ram,讀取存儲器,用於儲存數據。基本的原理就是使用時鍾驅動時序,利用地址區分位置,使用使能控制寫入。輸出的結果以寫入的位寬輸出。

2、實際操作

頂層代碼:

module ram(
    input clk,
    input rst_n,
    output [7:0] q
);
reg [7:0] address;
reg [7:0] data;

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

ram_ip U1(
    .address(address),
    .clock(clk),
    .data(data),
    .wren(rst_n),
    .q(q)
);

endmodule

ram_ip是quartus中直接調用IP得到的文件,IP的所有設置均為默認。

測試文件:

`timescale 1ns/1ns
module ram_tb;

reg clk;
reg rst_n;
wire [7:0] q;

initial begin
    clk<=1'b0;
    rst_n<=1'b0;
end

always #10 clk<=~clk;

initial begin
    $monitor($time,,"q=%h",q);
    #20
    rst_n<=1'b1;
    #10000
    $stop;
end

ram U1_tb(
    .clk(clk),
    .rst_n(rst_n),
    .q(q)
);

endmodule

這個是測試的激勵文件,采用變量監測的方式得到想要的結果。

                    0 q=0030 q=xx
                   50 q=0090 q=01110 q=02130 q=03150 q=04170 q=05190 q=06210 q=07230 q=08250 q=09
270 q=0a 290 q=0b 310 q=0c 330 q=0d 350 q=0e 370 q=0f 390 q=10410 q=11430 q=12450 q=13470 q=14
490 q=15510 q=16530 q=17550 q=18570 q=19590 q=1a 610 q=1b 630 q=1c 650 q=1d 670 q=1e 690 q=1f 710 q=20730 q=21750 q=22770 q=23790 q=24810 q=25830 q=26850 q=27870 q=28890 q=29910 q=2a 930 q=2b 950 q=2c 970 q=2d 990 q=2e 1010 q=2f 1030 q=301050 q=311070 q=321090 q=331110 q=341130 q=351150 q=361170 q=371190 q=381210 q=391230 q=3a 1250 q=3b 1270 q=3c 1290 q=3d 1310 q=3e 1330 q=3f 1350 q=401370 q=411390 q=421410 q=431430 q=441450 q=451470 q=461490 q=471510 q=481530 q=491550 q=4a 1570 q=4b 1590 q=4c 1610 q=4d 1630 q=4e 1650 q=4f 1670 q=501690 q=511710 q=521730 q=531750 q=541770 q=551790 q=561810 q=571830 q=581850 q=591870 q=5a 1890 q=5b 1910 q=5c 1930 q=5d 1950 q=5e 1970 q=5f 1990 q=602010 q=612030 q=622050 q=63** Note: $stop : D:/Library/FPGA_altera/A3_ram/ram_tb.v(20) Time: 10020 ns Iteration: 0 Instance: /ram_tb

數據比較多,通過存儲器的視圖查看:

從前面的30ns時q的值為xx的情況可以看出,在一個完整的時鍾周期內,如果wren發生了變化,讀取的數據也將不確定。這也是異步時序的缺點,容易出現未知情況。如果使能信號為同步時序,則可以有效避免。

3、最后小結

ram還是使用的比較多的IP,一般的設計中需要處理大量的數據時,一般會采用ram來完成。與之相似的還有ROM,其值是直接配置好后讀取的,無法寫入,具體的操作和RAM類似。ROM數據的配置文件可以了解一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM