”
”PYNQ を使って Python で手軽に FPGA を活用 (5)”をやってみる3(System ILA を使用したデバック)”の続き。
ただし、DMA_pow2 IP は”
Vitis HLS 2021.2 で KV260 用の DMA_pow2_axis IP を作成する2”を使用している。
(2022/03/01:追記)TKEEP と TSTRB (TSTRB は必要ないかも?)は、入力された信号を出力するか、オール 1 にする必要がありました。詳しくは”
axi_dma と DMA_pow2_axis を Kria-PYNQ で動作させる3(Jupyter Notebook で動作確認、波形を確認)”を参照ください。
前回は、その原因を探るためにブロック・デザインに System ILA を入れて、波形を観察したところ、S2MM の AXI4-Stream の最後のデータ送出時に TLAST が 1 になっていなかった。そこで、”
Vitis HLS 2021.2 で KV260 用の DMA_pow2_axis IP を作成する2”で、TLAST と TUSER を処理した DMA2_pow2 IP を作成した。今回は、この DMA_pow2 IP を使用して、再度 Jupyter Notebook で DMA pow2 を動作させてみたところ、まだ DMA が終了しなかった。
DMA_pow2_axis_i の DMA_pow2_axis IP を入れ替えた。

もう一度、論理合成、インプリメンテーション、ビットストリームの生成を行った。
Project Summary を示す。

Jupyter Notebook で確かめてみたが、やはり終了しない。System ILA で波形を確認した。
S2MM の AXI4-Stream を見ると 最後のデータのときに TLAST が 1 になっているのが分かる。これでだめなのか。。。

S2MM の AXI4 Master アクセスはやはり終了していない。WDATA が 81 (Unsigned Decimal)のときに、WLAST が 1 になっていない。

MM2S の AXI4 Master アクセスはどうだろうか?
問題ない。RDATA が 9 (Unsigned Decimal)の時に、RLAST が 1 になっている。これは思惑通りだ。

それじゃ axi_dma_0 の MM2S_LENGTH と S2MM_LENGTH の設定値はどうだろうか?
まずは、MM2S_LENGTH の設定値を見る。
40 (Unsigned Decimal)だった。バイト単位なので正しい。

S2MM_LENGTH の設定値を見ると、MM2S_LENGTH と同様に 40 (Unsigned Decimal)だった。バイト単位なので正しい。

それじゃ MM2S と S2MM の AXI4 Master トランザクションのバースト長はどうだろうか?
MM2S の AXI4 Master トランザクションのバースト長は ARLEN の値が 0x09 でつまり、10 バーストなので正しい。

S2MM の AXI4 Master トランザクションのバースト長は AWLEN の値が 0x1f で 32 バーストになっている。
原因はこれだ。。。
しかし、どうして、S2MM_LENGTH が 40 (Unsigned Decimal のバイト単位)なのに、S2MM の AXI4 Msater のトランザクションの AWLEN が 0x1f なんだろうか?
訳が分からない。。。
- 2022年02月28日 02:47 |
- KRIA KV260 Vision AI Starter Kit
-
| トラックバック:0
-
| コメント:0