メモリモジュールの作成
KITEプロセッサのメインメモリとなるメモリモジュールを作成します。
kite_top階層からは、以下のようにメモリモジュールを呼び出します。
//
// Memory & Video RAM
//
memory mem0 ( .CLK(CLK75),
.ADDR(ADR),
.DATAI(DATAO),
.DATAO(MEM_DATAO),
.MREQ(MREQ),
.RW(RW),
.ACK(MEM_ACK)
);
したがって、メモリモジュールの入出力は以下の様になる。
module memory (CLK, ADDR, DATAI, DATAO, MREQ, RW, ACK );
input ...
output ...
...
endmodule
メインメモリは、16ビット幅で2Kワード用意します。
メモリは配列として宣言します。
reg [15:0] MEM[0:2047];
メモリの書込み動作については、always を用いて記述しますが、
書き方の違いにより、メモリがFPGAの内部ブロックメモリとして実装されるか、
それともFFの集まりとして実装されるかが異なります。
その書き方は使用する論理合ソフトウェアによっても異なります。
今回使用するXilinx社製ISEでは、以下のように記述すると内部メモリとして実
装することができます。
考え方:
実行するプログラムによるメモリの初期化:
KITEプロセッサにより実行するプログラムは、そのプログラムのバイナリイメー
ジ(機械命令)をメモリ上に実装することで実現します。
Verilog HDL の場合 $readmemh() を用いることで、メモリの内容をあらかじめ
KITEのプログラムで初期化することができます。
メモリ用に確保した MEM 配列に対して、kite.ram ファイルの内容で初期化する
場合は以下のように記述します。
initial
begin
$readmemh( "kite.ram", MEM );
end
メモリ初期化用のファイルは、kite_asm を用いて .lst ファイルを作成した後、
lst2ram コマンドを用いて $readmemh に使えるファイル形式にします。
なお、$readmemh の仕様が Verilog XL シミュレータと、Xilinx ISE 論理合成
とでは異なるため、lst2ram コマンドには以下のようにオプションを忘れないよ
うにします。
kiteasm -l xxxx.asm
lst2ram -s -f -2 xxxx.lst
※ 今回作成するLIFEゲームプログラムについては後のページで解説します。
上記コマンドで作成した .ram ファイルは、 Verilog XL シミュレータと、
Xilinx ISE 論理合成の両方で使用できます。
次は、 VGAモジュールの作成 を行います。
| Back |