メモリモジュールの作成


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 |