FC2カウンター FPGAの部屋 2019年06月13日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

AXI4 Stream 出力にAXI4 Stream スイッチ付きのDMA Read IP 2

AXI4 Stream 出力にAXI4 Stream スイッチ付きのDMA Read IP 1”の続き。

AXI4 Stream 出力にAXI4 Stream スイッチ付きのDMA Read IP を作るの第2回目。
前回は、DMA Read したデータをAXI4 Stream 出力するIP で、AXI4 Stream 出力が 2 つあり、そのどちらかを sel 引数によって使用できる AXI4 Stream スイッチ付き出力を備えている IP のソースコードを貼って、C シミュレーション、C コードの合成を行った。
今回は、残りの C/RTL 協調シミュレーション、C コードの合成を行う。

まずは、C コードの合成のAnalysis 画面を示す。Vivado HLS 2018.2 から Schedule Viewer が搭載されて、”Vivado 2018.2 が出た”で使ってみたが、複雑なソースコードでやってみたので、いまいち Schedule Viewer の見方が分からなかったが、今回 Schedule Viewer を見てみたところ、見やすいと感じた。簡単なソースコードだったからだろうとは思う。
Schedule Viewer の画面を示す。
bmp_header_file_15_190612.png

add_ln186(+) は、ソースコードのうちの

out_val.data = in[y*x_size+x];

の足し算部分だと思うが、in_V_read(read) のオフセットアドレスのRead と Loop1 の y の値 を受けて、out_val_data_V(read) に影響を及ぼしているという様に見るのだと思う。
何か今回は素直に見やすく思えた。具体的な変数名を踏襲しているのも良さそうだ。

次は、C/RTL 協調シミュレーションを行った。結果を示す。
bmp_header_file_16_190612.png

Latency の avg が 969068 だった。
969068 / 480000 ≒ 2.019 なので、やはり、1 出力に 2 クロックかかる計算だ。

C/RTL 協調シミュレーションの波形を示す。
まずは全体波形から。
bmp_header_file_17_190612.png

最初に outs0 に出力して、その後 outs1 に出力しているのが見て取れた。
出力の切り替え部分を拡大してみよう。
bmp_header_file_18_190612.png

outs0_TVALID と outs1_TVALID がそれぞれ有効な部分では、1 と 0 を交互に繰り返してる。よって、 2 クロック毎に 1 出力というのが分かる。
うまく行っているようだ。

最後に、Vivado synthesis, place and route にチェックを入れた状態で、Export RTL を実行した。結果を示す。
bmp_header_file_19_190612.png

C コードの合成結果と比べて、LUT は減っているが、FF はむしろ増えている。合成結果から増えることもあるんだ。。。
CP achieved post-implementation は 6.125 ns で問題なさそうだ。
  1. 2019年06月13日 05:19 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0