コピー2015.12.08Zynq-7000は3種類のAXI(AXI_GP,AXI_HP,AXI_ACP)をサポートしていますが、いずれもAXIのバージョンはAXI3です。AXI4とAXI3にはいくつかの違いがありますが、大きな違いの1つが最大バースト長です。AXI4の最大バースト長は256ですが、AXI3の最大バースト長は16です。このため、AXIに接続しようとしているユーザー回路がAXI4であり、16より長いバーストを必要とする場合にはZynq-7000のAXIにそのままでは接続できません。このような場合、VivadoのIPコアを使うと簡単にAXI4をAXI3に変換できます。Converterを検索し、それをインスタンス化するだけです。Converterをaxi_protocol_converter_0としてインスタンス化しています。ユーザー回路からのAXI4外部入力(S_AXI)を変換してZYNQ7のS_AXI_ACPに接続しています。このような場合、axi_protocol_converter_0のS_AXI側にユーザー回路からS_AXIを接続し、M_AXIにZYNQ7のS_AXI_ACPを接続します。Converterのインスタンスをダブルクリックすると、パラメータを設定できます。PROTOCOLをAXI3とします。Converterを挿入すると、ユーザー回路側のAXI応答がS_AXI_ACPと比べて少し変わります。次の波形は、ユーザー回路からS_AXI_ACP経由でメインメモリ(DDR3)にバースト16のライトを行ったものです。AXIの動作周波数は50MHz、DDR3の動作周波数は533MHz(データ転送速度:1066MHz)です。ライトの入力と出力のタイミングロジックアナライザの波形から、ユーザー回路側のAXI応答を抜粋したのが下図です。Converterを挿入すると、次のような応答になるようです。AWREADYはデフォルトでHレベルだが、AWVALID受付後は1サイクルだけLレベルになるWREADYはデフォルトでLレベルになる。「必ず最初にライトコマンドを受け、次に対応するライトデータを受け付ける」という処理が行われているようです。このようなAXI応答になっても、一般的な設計では特に困ることはないと思いますが、ライトデータを先に出力しなければならない設計の場合には注意が必要かもしれません。IIのVerilogインクルード・ディレクトリの指定方法Verilogはdefineマクロなどを格納した別ファイルをインクルードできます。IIでこのようなVerilogファイルの論理合成を行う場合、どこかで`includeが参照するディレクトリを指定する必要があります。...FPGADE0-Nano-SoC用ベアメタルアプリのコンパイルベアメタルアプリのコンパイル環境を構築する手順のメモです。コンパイル環境は、既存のサンプルをベースに作成しました。参考にしたサンプルはこちらのものです。VのHPSに入力することができました。次に行うのは、インタラプト・ハンドラの動作確認です。当初、ベアメタルでインタラプトの動作を確認しようと考えていました。HLSで作成したIPコアで気になるのは、次の点です。Integratorをコマンドラインで実行するVivadoのGUIでプロジェクトを作成すると、色々なファイルが生成されます。そのプロジェクトのデータを配布する場合、ファイルに絶対パスなどが含まれていると、データの再現性に不安が残ります。ロジックアナライザの実行手順Vivadoでビルドインのロジックアナライザを使ってデバッグする場合の手順です。デバッグを行うデザインを含むVivadoのプロジェクトを用意します。ディジタル技術資料タイトルとURLをコピーしました。