FPGAスタディノート
Quartus II Prime StandardEdition-メモリIPコアの呼び出し
古いバージョンのQuartusIIと新しいバージョンのIPコアの呼び出し方法は多少異なります。以下は、参考のために、Quartus II Prime StandardEditionの呼び出し方法です。
-
次の図に示すように、assignmenで[IP Catalog]をクリックし、ramと入力して、RAM:2-PORTをダブルクリックします。
-
必要に応じてポート情報メモリのストレージサイズを選択し、[次へ]をクリックします
-
必要に応じてデータ幅を選択し、[次へ]をクリックします
- 自動:LCを自動的に割り当て
ます:内部レジスタ
M9K:内部ブロックRAM
-
クロックタイプを選択し、[次へ]をクリックします。
ポートAのバイト有効化を作成します。ビット幅が8ビットより大きい場合 -
ポート登録方法を選択し、[次へ]をクリックします
-
メモリ初期化コンテンツを選択し、[次へ]をクリックします
-
次へをクリック
-
[完了]をクリックして、ram ipcoreを呼び出して完了します。
-
プロジェクトファイルを右クリックし、呼び出されたram .vファイルを1、2、3の順序でプロジェクトに追加します。
-
追加後、シミュレーション検証機能を実行します
-
シミュレーション検証用のテストベンチを作成する
//----testbench-------------------------------------
`timescale 1ns/1ns
`define clock_period 20
module ram_dual_tb;//ram_dual
reg clk;
reg [7:0] data;
reg [7:0] rdaddress;
reg [7:0] wraddress;
reg wren;
wire [7:0] q;
integer i;
//----例化ip核---------------------------------
ip ram_dual(
.clock(clk),
.data(data),
.rdaddress(rdaddress),
.wraddress(wraddress),
.wren(wren),
.q(q)
);
//----激励设置--------------------------------
initial clk = 1;
always begin #(`clock_period/2) clk = ~clk;end
initial begin
data = 0;
rdaddress = 32;
wraddress = 0;
wren = 0;
#(`clock_period*30+1);
for(i=0;i<=15;i=i+1)begin
wren = 1;
data = 255-i;
wraddress = i;
#(`clock_period);
end
wren = 0;
#(`clock_period*30+1);
for(i=0;i<=15;i=i+1)begin
rdaddress = i;
#(`clock_period);
end
#(`clock_period*30);
$stop;
end
endmodule
【注意】:個人学習メモ、間違いがありましたら、お気軽に教えてください、丁寧です~~~