歩き遍路 平成19年春(J1) 記録の準備
UTMI/ULPIでUSB( 6) 新SPUでUSB3300から
              VBUSON/OFF

 VerilogHDLで設計したSpuUlpi(シーケンス・プロセッサ・ユニット Ulpi)でVBUSをON/OFF制御しました。
 今までシーケンサでULPIを制御してましたが、シーケンサのバブルチャートを書くことやシーケンスの記述と制御信号の記述が別々の位置に書く必要があったため、記述に手間が掛かることと可読性が悪かったので再びSpu(シーケンス・プロセッサ・ユニット)でULPIを制御できないかチャレンジしました。

●デバイスの構成に

 デバッグ状況の写真を示します。「ULPIでUSB( 3) パソコンからVBUS制御」の構成の外観と比べ測定器が変わった程度です。しかし、FPGAの内部構成は大幅に変わりました。
 左の赤いLEDはVBUSの状態表示で1KHzで点滅しています。1KHzはSOF出力用のタイマを利用しました。






●SpuUlpiのプログラム実行

 SpuUlpiのプログラム実行波形の一部です。
 注目点は、下側にある実行中の命令番地を格納するプログラムカウンタ「PcUlpi]です。「PcUlpi]は「a0」と「ad」を1ms毎に繰り返しています。カーソル間の時間は、メニューバーのヘルプの下に表示されています。




 「a0」点の拡大波形でカーソル間の時間は、80nS です。「PcUlpi]を見ると「ad」から「a0」に実行番地が変化しています。SpuUlpiが120MHzで実行している様子をとらえています。




 「ad」点の拡大波形です。「PcUlpi]を見ると「a0」から「ad」に実行番地が変化しています。SpuUlpiが120MHzで実行している様子です。




●SpuUlpiのプログラム

 SpuUlpiのプログラムです。リセットから始まり、VbusをOnして、SofTimeに同期してOffとOnを繰り返します。
 USB3300のタイミングを取るためNOP命令を各所で使っています。






●結果

 
 SpuUlpiのプログラムで60MHzで動作するUSB3300とインタフェース出来ました。細かいタイミングはこれから調整するとして、SpuUlpが使える目処が付いたと思います。



ホームへ戻る