ここではハンドアセンブルで機械語に変換されたプログラムをFPGA内のメモリに書き込む方法について記述します。動作確認として以下のプログラムを書き込みます。P3入力端子とP4入力端子から入力した数値を足してP1出力端子へと出力する内容のプログラムになっています。
【 0 】 INA 【 1 】 100 【 2 】 INB 【 3 】 101 【 4 】 LD 【 5 】 100 【 6 】 ADD 【 7 】 101 【 8 】 ST 【 9 】 102 【 10】 OUTA 【 11】 102 【 12】 JUMP 【 13】 0
※【 】(隅付き括弧)で囲んでいる数値はメモリの番地を表しています。
上記のプログラムを機械語に変換すると以下のようになります。
【 0 】 14 【 1 】 100 【 2 】 15 【 3 】 101 【 4 】 3 【 5 】 100 【 6 】 7 【 7 】 101 【 8 】 4 【 9 】 102 【 10】 16 【 11】 102 【 12】 1 【 13】 0
上記の機械語をFPGA内のメモリに書き込むために、前ページで作成したMIFファイルを使います。Quartusのメイン画面左側にある”Files”タブを押すとプロジェクト内のファイルが表示されます。
前ページで作成した”cpu.mif”ファイルを開きます。
MIFファイルを開くと以下のような編集画面が表示されます。自作CPUのプログラムを書き込む時には以下のようなMIFファイルの編集画面で数値を入力していきます。番地は左上の0番地から始まり、右方向へ+1ずつ増えていきます。+7まで来たら折り返して2行目左端の8番地へ飛び、以降は同様にして右方向へ+1ずつ増えていきます。各番地への数値入力は10進数で行います。今回作成したMIFファイルは「Word size:」に8ビットを指定しましたので入力可能な数値は0〜255までの数値になります。
上で示した機械語プログラムを入力すると以下のようになります。
編集が完了したらメニューから「Processing」->「Start Compilation」を選択します。
“cpu.mif”への変更が保存されていない場合は以下のようなメッセージが表示されます。”Yes”を押すと保存されます。
コンパイルが成功すると以下のメッセージが表示され、”cpu.mif”へ書き込んだプログラムが実行できる状態になります。(”cpu.mif”の内容は変更するたびにコンパイルが必要です。)
<戻る 次へ>