MySOC USBHostとLCD制御を組込( 5)
    SPU81をVerilogHDLでFPGAに設計

 SPU81(シーケンス・プロセッサ・ユニット)をVerilogHDLでFPGAに設計しました。
 前に記録した数枚の仕様書とMyマイコンComet2eの設計資料を参考にして設計しました。そのため、設計時間は短くなりましたが厳密な定義がおろそかになりました。全体的には、違和感が無く使い勝手の良い物となりました。しかし、一部の命令を削除したり使い勝手が悪いところもありますので機会が有れば仕様の改良を行います。

 ・SPU81の仕様書変更内容した物をここに置きます
 ・SPU81の CTest.v のVerilogHDLリストをここに置きます
 ・SPU81の Spu81Sys.v のVerilogHDLリストをここに置きます
 ・SPU81の Spu81Core.v のVerilogHDLリストをここに置きます
 以下の内容を整理した物をここに置きます

●SPU81の仕様書変更内容

 ここに、SPU81の仕様書変更内容を記録します。
 @STM a,M 命令の使用時の注意
   STM a,M 命令の直前の命令が、STM a,M 命令で使うAccに書き込む場合、
   直前の命令がAccに書き込むデータは採用されません。
   データを書き込む前のデータが採用されます。
   対策は、Accに書き込む命令とSTM a,M 命令の間にNOP命令を挿入します。
 ABITS b,r命令とBITR b,r命令は、実装していません。使わないでください。
 BAccをレジスタ番号で指定できる様にしました。
  例えば、ADD a,r命令で、Acc0とAcc0の加算ができます。
 CSTM a,M 命令順序操作のシーケンスの一部変更
  命令レジスタの内容をメモリアドレスにするルートを追加しました。
 Dアッセンブラで使用する「Asm命令処理コード」を追記しました。

●SPU81のVerilogHDLファイル構成

 SPU81のVerilogHDLファイル構成を構成図と組み合わせて示します。
 SPU81のVerilogHDLファイルの種類とその接続関係は、
 CTest.v <-> Spu81Sys.v <-> Spu81Core.v<-> MMem.v となります。
     <-> は、接続関係を示します。
 ・CTest.v    :ModelSimでシミュレーションする場合のTopで、クロック リセット
  実行制御スイッチ 擬似I/Oポートをシミュレートします。
 ・Spu81Sys.v :Topレベルで、FPGAの外部とのインタフェースと
  I/Oポートを構成します。
 ・Spu81Core.v:SPU81のの中心部分です。
 ・MMem.v   :プログラムメモリです。QuartusUのMegaWizardを使って生成しました。































●SPU81のVerilogHDLファイルの階層関係

 上のSPU81のVerilogHDLファイルを実使用する場合とModelSimでシミュレーションする場合の階層関係を次に示します
























■VerilogHDLファイルの説明

 SPU81のVerilogHDLファイルの内容を説明します。
 VerilogHDLファイルのリストに有るコメントをキーワードにしてその部分を説明します。
 見方は、次のCTest.v プログラムリストの説明を参考してください。

●CTest.v プログラムリストの説明

 SPU81のVerilogHDLファイルの内容を説明します。
 CTest.v は、ModelSimでシミュレーションする場合のTopで、クロック、リセット、実行制御スイッチ、擬似I/Oポートをシミュレートするプログラムを記述しています。
 上のリストは、CTest.v そのもので、下はその説明です。
 リストの説明は、リストのコメントと対応してその部分を説明しています。他のリストも同様に説明します。



























































●Spu81Sys.v プログラムリストの説明

 SPU81のVerilogHDLファイル Spu81Sys.v の内容を説明します。
 Spu81Sys.v は、Topで、外部のクロック リセット 実行制御スイッチ 入出力ポートとインタフェースすることと、入出力ポートのプログラムを記述しています。
























●Spu81Core.v プログラムリストの説明

 SPU81のVerilogHDLファイル Spu81Core.v の内容を説明します。
 Spu81Core.v は、Spu81の中心のリストで、ALU、システムレジスタ、シーケンスを制御するシーケンサを記述しています。





















































































ホームへ戻る