メモリモジュールの作成
KITEプロセッサのメインメモリとなるメモリモジュールを作成します。
module memory (CLK, ADDR, DATAI, DATAO, MREQ, RW, ACK );
メインメモリは、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
上記こコマンドで作成した .ram ファイルは、 Verilog XL シミュレータと、
Xilinx ISE 論理合成の両方で使用できます。
| Back |