ZYBOで遊ぶ02:AXI CDMA IPを使ってみた(1)

ZYBOで遊んだメモ

ZYBOで遊ぶ02:AXI CDMA IPを使ってみた(1) - ThuruThuruToru’s blog
ZYBOで遊ぶ02:AXI CDMA IPを使ってみた(2) - ThuruThuruToru’s blog



やったこと

AXI CDMA IP(AXI4 <-> AXI4) を使ってみたのでメモ書き.
今回はRTLはいじらず,PS部にAXI CDMA IPをつないだだけのシステムを作り, Xilinx SDKでDMACを操作するSWを書いて DRAM<->DRAM のデータ転送をしてみた.

1. VivadoでHWデザイン作成

1.1. ZYNQ7 Processing Systemの追加

Vivadoのプロジェクトを作成した後,Generate Block Design をクリックし,Add IP で ZYNQ7 Processing Systemをダブルクリック.

作成された ZYNQ7 Processing System をダブルクリックして以下の設定を行う.

  • Import XPS Settings で ZYBO_zynq_def.xml を指定(いつもと同じ)
  • PS-PL Configuration で S AXI HP0 interface を選択する
    • このSlaveポートにAXI CDMAがマスタとしてつながる
  • Interrupts で IRQ_F2P を選択する
    • AXI CDMAの割り込み用

f:id:ThuruThuruToru:20151113212838p:plain

f:id:ThuruThuruToru:20151113213203p:plain

1.2. AXI CDMAの追加

Add IP でAXI Central Direct Memory Accessをダブルクリック.
作成された AXI Central Direct Memory Access をダブルクリックして以下の設定を行う.

  • Enable Scatter Gather のチェックを外す
    • 外さなくてもいいが,今回はScatter Gatherを使わない
  • Write/Read Data Width を 64にする
    • S AXI HP0 はデータが64bit幅なので効率良く転送できるように合わせる

f:id:ThuruThuruToru:20151113214051p:plain

1.3. IPをつなぐ

Processor System と AXI CDMA をつなぐ.

f:id:ThuruThuruToru:20151113214105p:plain

ここまでで上の図のようになっているので,上部に表示されている「Run Block Automation」と「Run Connection Automation」を実行する.
割り込み信号は自動でつながらないので,Processing System の IRQ_F2P と AXI CDMAcdma_introut をマウスでつなぐ.
Validate Designを実行し,デザインに問題がないことを確認.

f:id:ThuruThuruToru:20151113214120p:plain

アドレスエディタを開いてみると,自動で以下の様に割り当てられていた.問題ないのでいじらない.

f:id:ThuruThuruToru:20151113214129p:plain

1.4. Bitstream 作成

Sourcesタブ内のdesign_1(自分でつけたBlock Design名)を右クリックし,Create HDL Wrapperを指定し,Topモジュールを自動生成する.

Project Manager->Program and Debug->Generate Bitstreamをクリックし,Bitstream作成.

File->Export->Export Hardwareをクリックし,Include bitstreamにチェックを入れてOKボタンを押す.

File->Launch SDKをクリックして,Xilinx SDK(Eclipse)を立ち上げる.

VivadoでのHWデザインの作成は完了.ここからはXilinx SDKでSWを書いていく.

ZYBOで遊ぶ02:AXI CDMA IPを使ってみた(2) - ThuruThuruToru’s blog に続く