2013年5月9日木曜日

MatrixSW FPGA I2Cコントローラの実装

 FPGAのI2Cコントローラは昨年作りこみまでは行なっていましたが、動作確認を行わずに保留にしていましたが、Si5326のセットアップをする前に立ち上げを行いました。

 まず、I2Cの制御系は下図の様にFPGAにQsysによりJtag Avalon Master BridgeによりPCからSystemConsoleで制御出来るようにしています。
 I2Cコントローラは4つのポートからアクセスするポートを選択し、そのうちの2つはMatrixSwitchのMasterClock部のSi5326に接続、残りの2つは4 チャネル I2C マルチプレクサ PCA9546Aにより4つに分岐させ、その1つずつをHDMI-I2Sケーブル経由で各DACのSi5326およびDACチップに接続します。
 各ラインはI2Cアイソレータ ADuM1250によりFPGAとの絶縁させます。

MultiDAC I2Cコントローラーブロック構成


 デバッグ用にI2C制御用のSystemConsole画面を作成し、動作確認を行いました。
 当面は、SystemConsoleからの制御でしのぐつもりですが、そのうちNiosIIを搭載して、BluetoothかなにかでPCから制御できるようにしたいと考えています。
 

I2Cデバッグ用SystemConsole画面

この他デバッグには、SiglalTapIIとロジック・アナライザ ZELOPLUS LAP-C を使いました。
 今回ZELOPLUSのI2Cプロトコル機能を初めて使いましたが、データをパケットとして表示してくれるため、楽にI2Cデータの解析を行うことができました。
 


 まず、動作確認のリファレンスとするためにBuffaloIIを接続し、I2Cのアクセス波形を採取しました。

BuffaloII 初期設定キャプチャ

 上記は初期設定のアクセスのキャプチャ、下記は1秒周期に周期的に0x0E番地をアクセスしている時のキャプチャです。


BuffaloII 周期ポーリングキャプチャ




 いくつかのバグを修正して、1バイトライトアクセスと1バイトリードアクセスが問題なくできるようになりました。続いてSi5326のデバッグに入る予定です。



MatrixSW I2Cコントローラ 1バイトリードアクセス キャプチャ





MatrixSW I2Cコントローラ 1バイトライトアクセス キャプチャ





0 件のコメント:

コメントを投稿