« 青函トンネルでのミューオン測定結果 | トップページ | Artix-7ボード用のHDMI/CSI入出力ボード »

2016.08.26

VivadoのAXI Interconnectでいろいろハマる

ついに、Artix-7上で、DDR3コントローラとUSB3.0コントローラをAXIでつなぎ、横からInterconnect経由でいろいろメモリの内容を操作するためのサンプルデザインができました。

Axiic

これを実現するには、かなーり苦労しました。

先週「できた!」と喜んでいたのは、AXIインターコネクトが1:1で接続されているものだったので実は、n:1接続にするとうまく動かなかったりします。USBからDDR3メモリに読み書きするだけなので、あまり役に立ちませんでした。

今日、公開するサンプルデザインは、AXIインタコネクトが2:1なので、何かの役には立つと思います。

このインタコネクトは、EZ-USB FX3 IPコアとAXIトラフィックジェネレータを2:1でブレンドして、MIGメモリコントローラに渡しています。トラフィックジェネレータが32bitデータバスなので、インタコネクトの内部はかなり複雑なものが入ってきています。

Axiic2

XILINXのAXIインタコネクトコアは良くできていて、前後につながるバスの特性を理解して、いろいろなモジュールを自動で追加していくようです。バス幅変換がある場合は、カプラの中にauto_usというコアが入るようです。

sun

この1~2週間、相当ハマっていたことを以下に述べます。

  • 自作のマスタとスレーブ(インタコネクト)で、アドレスの範囲の一致させなければならない
  • マスタが先にarvalidを立ち上げるべし。arreadyはスレーブが後から出すので、arrreadyが来たらarvalidを上げようなんて控えめな考え方をしているといつまでたってもトランザクションが開始しないなんてことに。
  • インタコネクトが入ると、ARID、AWIDなどのバス幅が変わる。そのため、自作コアはAXIのIDの幅を可変させられるようにしなければならない。
  • MIGのMMCM_LOCKEDなどの信号は、XILINXが用意しているリセットコアを使う。
  • AXIインタコネクトのRESETは2種類あって、リセットコアが出すインタコネクトリセットとペリフェラルリセットを使い分けてつなぐこと

リセットのつなぎ方などは、上の図を参考にしてください。

アドレスエディタというのは、これです。

Axiic3

sun

それから、XILINXのAXI Traffic Generatorコアですが、詳しいことはわかりませんが、テスト用トラフィックを生成してくれるものなのでしょう。添付の図のような設定で使ったら、

Axiic5

↓こういうデータを出力してくれました。

Axiic4

sun

これでようやくVivadoがわかってきました。

AXIやVivadoの勉強に最適なArtix-7ボードはこちらです。USB3.0で通信するためのコアが付いているので、画像キャプチャや、HDMI出力なんかに便利に使えると思います。

Arboard

|

« 青函トンネルでのミューオン測定結果 | トップページ | Artix-7ボード用のHDMI/CSI入出力ボード »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 青函トンネルでのミューオン測定結果 | トップページ | Artix-7ボード用のHDMI/CSI入出力ボード »