Lynx-EyEDの電音鍵盤 新館

制御とか数学とか駄文とか

Spartan-6 LX9 MicroBoardを使ったLPDDR SDRAMのハードマクロ実装(その3)

今回はちょっと脇道でハードデバッグの方法を勉強しています。
前回前々回でネイティブMCBのexample_designインプリメントを行いました。
今回は、ChipScopeの使い方を色々調べていました。

◆参考文献
いつものとおりです

トラフィックジェネレータ付きのMIGデザイン
MIGにはICONコア(Inregrated Controller)というコアが*1あり、JTAGインターフェースと様々なコア間とのインターフェスをするコアがあります。
example_designにも1つのICONコアがあり、

  • VIO(Virtual IO)コア
  • ILA(Integrated Logic Analyzer)コア

という2つのコアを制御し、ChipScope上でのデバッグを容易にしています。

f:id:Lynx-EyED:20110918224551j:image

デフォルトではトラフィックジェネレータは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「トラフィックジェネレータの信号説明」をご覧ください)

f:id:Lynx-EyED:20110918232926j:image

トリガセットアップではデータのキャリブレーションが一通り終了したときに通知するよう指定しました。赤丸で囲んだアイコンをクリックするか[F5]を押します。
f:id:Lynx-EyED:20110918232925j:image

すると、波形が観測されます。データはシーケンシャルに記録されていることが分かります。
f:id:Lynx-EyED:20110918233754j:image


今日はここまで。

*1:最大15個のキャプチャコアを制御可能