まず、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画面
今回ZELOPLUSのI2Cプロトコル機能を初めて使いましたが、データをパケットとして表示してくれるため、楽にI2Cデータの解析を行うことができました。
まず、動作確認のリファレンスとするためにBuffaloIIを接続し、I2Cのアクセス波形を採取しました。
BuffaloII 初期設定キャプチャ
上記は初期設定のアクセスのキャプチャ、下記は1秒周期に周期的に0x0E番地をアクセスしている時のキャプチャです。
BuffaloII 周期ポーリングキャプチャ
いくつかのバグを修正して、1バイトライトアクセスと1バイトリードアクセスが問題なくできるようになりました。続いてSi5326のデバッグに入る予定です。
MatrixSW I2Cコントローラ 1バイトリードアクセス キャプチャ
MatrixSW I2Cコントローラ 1バイトライトアクセス キャプチャ
0 件のコメント:
コメントを投稿