歩き遍路 平成19年春(J1) 記録の準備
UTMI/ULPIでUSB( 7) SpuUlpiの構造

 前のページで60MHzで動作するULPIデバイスUSB3300とインタフェースした新SPUの構造を見ていきます。
 ここでは、目標とすべき姿を描いています。現在は、全てを実装して動作している状態ではありません。

●SpuUlpi(シーケンス・プロセッサ・ユニット Ulpi)で処理するために

 ULPIデバイスUSB3300は60MHzのクロックに同期してコマンドやデータの入出力をしているので、USB3300とインタフェースするSpuUlpiの動作速度は60MHz以上が必要です。
 3倍速の180MHzでSPUを動作できればソフトでかなりの処理が可能と思いますが、CycloneVFPGAが動作するか自信がありません。以前設計した MySOCでは168MHzでは動作しましたが、192MHzでは動作しませんでした。2.5倍速の150MHzか倍速の120MHz程度なら動作は出来そうですが、整数倍の倍速の120MHzで試してみます。
 倍速の120MHzで処理や動作させるために、次のような専用方式を採用します。

・SpuUlpiの動作速度は倍速の120MHz
・120MHzで処理できるようにハードウエアでサポート
・SpuUlpiの命令は、並列処理か可能なロング命令を採用
・120MHzの動作速度を実現するために、メインメモリ出力の命令を直にデコードして使う

●SpuUlpiの命令

 60MHzのクロックで動作するULPIデバイスUSB3300を制御するため、次のような並列処理か可能なロング命令を考えました。




・オペコードは4ビットで、動作は 次、分岐、サブルーチン関連、多分岐、条件出力とシンプルです。




・定数は10ビットで、データやジャンプ番地を指定します。
・多分岐指定は、4ビットで、最大16分岐するデータを16個まで選択できます。
・分岐条件は、同時に2組可能です。
・信号出力は、同時に3組可能です。




●SpuUlpiの構成

 今考えているコントローラPcPhyの構成を次に示します。
 左がパソコンとのインタフェース部、右がULPIとのインタフェース部のPcPhyでSpuUlpiは左下です。
 倍速の120MHzで処理できるようにサポートするハードウエアを色々付加しています。






●SpuUlpiの命令実行タイミング

 
 命令毎の実行タイミングを次に示します。表示の都合で2段にしてますが、右上から左下に続いています。
 1命令は8.33nSで動作します。私の心つもりは、メモリから命令読み出しは4nS、命令デコードが4nSです。

 最上の「Clk120MHz」はPLLで作った120MHzのクロックで立ち上がりに同期して動作します。
 「PcUlpi」はプログラムカウンタで、実行命令の番地を管理します。
 「PcIn」はプログラムカウンタに入力する値で、次に実行する命令番地です。
 「MenUlpi」はメインメモリで、読み出した命令を直接デコードして実行速度を上げています。
 「IrUlpi」は命令レジスタで、読み出した命令を格納します。あまり利用していません。
 「StackUlpi0/1」は2つのスタックで、関数呼出に使う予定です。







ホームへ戻る