10.アセンブラによるRTLシミュレーション、デバッグさていよいよデバッグです。構想からハードの記述にここまで約一週間を要しています。多くはマイクロコードの記述に時間がかかっています。CPUのデバッグはハード設計以上に時間のかかかるつらい作業です。(全体の構想を考えているときは楽しいのですが。論理合成できることを確認しておきます。(5400LUT,34MHz程度)。致命的な構想のミスもないように思われます実際のCPUの命令を走らせて動作をWaveformviewで確認しながら、デバッグします。全アドレシングモード、全命令パターンをアセンブラで書いてデバッグします。筆者は、次の手順でデバッグしています。1命令をアセンブラで書く。シミュレータ上でCPUを走らせ動作をwaveformviewerで確認する。d)に戻るRTLシミュレーションのコンパイル開始から目的時刻の波形表示まで、数秒です。一命令のテスト記述、アセンブル、Reload&Go、波形確認をしながらデバッグを進めます。Veritakは筆者が使い易いように設計しているので(筆者にとっては)快適なデバッグ環境になっています。この過程で、マイクロコードを含む数十箇所を修正しました。>WaveformViewerで割り込み動作を確認しましょう。int_req2を発生させます。CPUは、int_req2のnegedgeを検出して割り込み期間ack信号を発生させています。(割り込みラッチをクリアするための独自信号です。黒カーソルー赤カーソル間が割り込み処理期間です。ステートはSTで、0,1,2,4の4ステートで処理しています。スタックポインタ(ER7)が示すアドレス(Daddr)にNEXT_PC(3Byte)とCCR(フラグ1Byte)をRAMの入力in_dataに出力しRAMにWrite(ram_write)します。これで、割り込み前の情報をSPの示すアドレスにSaveします。スタックポインタ(ER7)をデクリメントします。4ByteSaveしたので、この場合は、−4します。Daddに割り込みVectorアドレス(20Hex)を出力します。これに対するRAMのデータ出力は2クロック遅れのST4で得られます。割り込みを受け付けたことを示すフラグをOnにします。割り込みアドレス7d0hexがRAMから出力されました。これを、PCとします。割り込みサイクルの終了です。次のステートST0は、割り込みルーチンの最初の命令のフェッチサイクルになります。言う具合に確認、デバッグしていきます。f:\altera\h8_project\*.*テストベンチテストベンチは、Cによるデバッグに同じです。次章をご参照ください。プログラム)が違います。アセンブラテスト全ソース;Jun.5.2004;秋月のアセンブラが古いのか?いくつかテストできなかった命令あり。d:24相対を吐くのでd:24もBYTEとWORDのみ対応。LONGは今のところない。;割り込みもインプリメントしたが、割り込みコントローラを書いていないので、Vector20Hに固定になっている。.ENDデバッグ中のWaveformViewer。