AXI4-DMAの試行をしているが、どうもうまくいかない。Vivado-HLSのリファレンスデザインを試行してみることにした。
試行するのは、xapp1170のリファレンスデザインだ。どうやらVivado 2015.2 での実装で確認されているらしい。そこでVivado 2015.2をインストールして再現することにした。
- A Zynq Accelerator for Floating Point Matrix Multiplication Designed with Vivado HLS
http://www.xilinx.com/support/documentation/application_notes/xapp1170-zynq-hls.pdf
リファレンスデザインを利用してまずは合成を実行する。リファレンスファイルをダウンロードして、中から、xapp1170_2015v4\pre_built\vivado\project_1\project_1.xpr
を立ち上げた。
リファレンスの回路構成は、以下のようになっている。
カスタムデザインHLS_accel_1
と、axi_timer_1を接続し、xlconcat_1が接続されて割り込みが入るようになっている。
Vivado上で合成を実行し、Xilinx SDK 2015.2を立ち上げてプログラムをコピーした。
ただし、どうしても、プログラムが途中で停止してしまう。調査した結果、memset()
を実行するとプログラムが停止し、リブートしてしまうらしい。
*************************************************************** FP 32x32 MATRIX MULT -> AXI DMA -> ARM ACP XAPP1170 redesigned with Vivado + HLS + IP Integrator 2015.2.1 *RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR? U-Boot 2015.04-dirty (Feb 27 2016 - 17:30:29) Board: Xilinx Zynq I2C: ready DRAM: ECC disabled 512 MiB MMC: zynq_sdhci: 0 SF: Detected S25FL256S_64K with page size 256 Bytes, erase size 64 KiB, total 32 MiB *** Warning - bad CRC, using default environment ...
うーん、やはりmemset()
の動作がおかしいようだ。
バージョンをいろいろ変えてやってみようかな。