#環境
- ボード
- Arty Z7(zynq評価ボード)
- ツール
- Vivado2018.3(Windows10)
- petalinux2018.3(Ubuntu 16.04)
#やりたかったこと
FIFOに貯めたデータをDDR3に転送したく、Vivado HLSにて高位合成を行いました。詳細は、様々な方が既に実践されておられるのでそちらを参照してください。
転送したいデータは、FIFO Generatorで作成したFIFOにあります。HLSで作成したIPにて、FIFOをリードしてAXIに流しています。
ただ、そこでFIFOのリードが始まらず困ることがあったので注意喚起として残しておきます。
#FIFO GeneratorとHLSのFIFOインターフェース
FIFO Generatorが持つリードインターフェースは、dout, rd_en, emptyの3つです。
HLSで下記のようにFIFOインターフェースを指定すると、Generatorと同じようにdout, read, empty_nの3つが生成されます。
#pragma HLS INTERFACE ap_fifo port=in
一見同じインターフェースなのですが、emptyのアクティブが違います・・・
GeneratorはアクティブH、HLSはアクティブLです。
これでかなりはまりました。
(そりゃぁ、信号名にネガティブのnが入ってるので気づかない自分もあれなんですが、
他社IP同士ならまだしも、同じXilinxならインターフェースは統一してほしいですね)
#追記
関連記事がありましたのでリンクしておきます。
https://forums.xilinx.com/t5/High-Level-Synthesis-HLS/HLS-Integrator-fifo-interface/td-p/847004