"AXI なんとか FIFO" の雑な違い..(?)

Vivado IP の中には今(2016.4)のところ
FIFOで検索すると以下のものがヒットする。

一番目は普通のFIFOである。
最後はおいておいて、その下3つの違いについて

AXI Data FIFO

これについてあまり情報がなかった(おそらく必要となる場面があまりないからか・・)
AXI Interconnectのなかで使われているらしく。
https://www.xilinx.com/support/documentation/ip_documentation/axi_interconnect/v2_0/pg059-axi-interconnect.pdf
これのp76を読む限り、
ユーザーは必要なときにInterconnect内のFIFOをオンオフ擦ることもできるし、
直接ブロックデザインに入れることもできる。
データ幅やクロック変換によってデータレートが違うところで役に立つ。(AXI Crossbar付近)

という感じ。直接使うことはあんまりなさそうだ。

AXI-Stream FIFO

データシート
https://www.xilinx.com/support/documentation/ip_documentation/axi_fifo_mm_s/v4_1/pg080-axi-fifo-mm-s.pdf
によると、
AXI4とかAXI4-LiteをAXI Streamに変換するのにつかえる。イーサネットとかそういうたぐいのパケットコミュニケーションを使うものに良いよ、という。
ただ非同期クロックには対応していない。

使用例をみるとわかりやすい。
p37 Programming Sequence for TX and RX in Store-and-Forward Mode

送信は必要なタイミングでlengthを書き込むことで開始される。
受信はあらかじめThresholdを設定しておくことで割り込みをかけることができるようだ。

AXI4-Stream Data FIFO

https://www.xilinx.com/support/documentation/ip_documentation/axis_infrastructure_ip_suite/v1_1/pg085-axi4stream-infrastructure.pdf
によるとAXI4-Stream Infrastructure のうちの一つである。
そもそもInfrastructuresは

  • Buffering Module
  • Transform Module
  • Routing Module

に分かれており。これらはAXI4-Stream Systemを構成するのに便利なモジュール群である。
その中のBuffering Moduleの一つであるFIFO
FIFO generatorによBRAM,LUTをベースとしてFIFOを実装する。

p13からその説明で基本的なFIFOにAXI4-Streamがくっついたと捉えている。
非同期クロックに対応している。


この中で使いそうなのはAXI Stream FIFOのようだ。
FIFOに特定の情報が集まったらバーストを開始させて、目的のスレーブが処理する。