今回はちょっと脇道でハードデバッグの方法を勉強しています。
前回と前々回でネイティブMCBのexample_designインプリメントを行いました。
今回は、ChipScopeの使い方を色々調べていました。
◆参考文献
いつものとおりです
◆トラフィックジェネレータ付きのMIGデザイン
MIGにはICONコア(Inregrated Controller)というコアが*1あり、JTAGインターフェースと様々なコア間とのインターフェスをするコアがあります。
example_designにも1つのICONコアがあり、
- VIO(Virtual IO)コア
- ILA(Integrated Logic Analyzer)コア
という2つのコアを制御し、ChipScope上でのデバッグを容易にしています。
デフォルトではトラフィックジェネレータはSDRAMのアドレスを擬似ランダムパターンで生成し、データパターンとしてアドレスをR/Wさせ、書き込みデータの検証を行っています。しかしChipScopeからVIOを直接操作する事によりリアルタイムにコマンドパターンを変更できます。
Spartan-6 LX9 MicroBoardはAVNETによりLPDDR SDRAMの検証が行われている(はずな)のでこの作業は不要ですが、新たに基板を設計した時には必要になります。
FPGAへの書き込みやChipScopeの起動方法は前回述べた通りです。
◆トラフィックジェネレータのコマンドパターンの変更
ChipScopeを起動し[Project : example_top]ウィンドウで[VIO Console]を選択
- vio_modify_enableを1にする
- vio_addr_mode_valueを次から選択
- 0: bramアドレス
- 1: fixed_address
- 2: prbs_address (32bit内部LFSR回路から生成。cmd_seedでアドレス生成シードの変更可能) <- 通常このモード
- 3:シーケンシャルアドレス (アドレスは内部アドレスカウンタで生成。ポートの幅に依って増加分は変化する)
BRAMについては今回は取り上げません。
今回は3にしました。
- vio_data_mode_value
- これは2(データパターンとしてアドレスを使う)に設定しました。(詳細はUG416「トラフィックジェネレータの信号説明」をご覧ください)
トリガセットアップではデータのキャリブレーションが一通り終了したときに通知するよう指定しました。赤丸で囲んだアイコンをクリックするか[F5]を押します。
すると、波形が観測されます。データはシーケンシャルに記録されていることが分かります。
今日はここまで。
*1:最大15個のキャプチャコアを制御可能