FC2カウンター FPGAの部屋 ”PYNQ を使って Python で手軽に FPGA を活用 (5)”をやってみる3(System ILA を使用したデバック)
fc2ブログ

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

FPGAの部屋

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

”PYNQ を使って Python で手軽に FPGA を活用 (5)”をやってみる3(System ILA を使用したデバック)

”PYNQ を使って Python で手軽に FPGA を活用 (5)”をやってみる2(Jupyter Notebook で確認)”の続き。

(2022/03/01:追記)TKEEP と TSTRB (TSTRB は必要ないかも?)は、入力された信号を出力するか、オール 1 にする必要がありました。詳しくは”axi_dma と DMA_pow2_axis を Kria-PYNQ で動作させる3(Jupyter Notebook で動作確認、波形を確認)”を参照ください。

PYNQ を使って Python で手軽に FPGA を活用 (5)”を KV260 でやってみるということで、前回は、できあがったビットファイルと hwh ファイルを KV260 のアップロードし、Jupyter Notebook のコードを用意して KV260 で実行した。結果は実行することができなかった。今回は、その原因を探るためにブロック・デザインに System ILA を入れて、波形を見てみよう。

AXI4 インターフェース全てと AXI4-Stream インターフェースに Debug を設定して、System ILA を実装した。
Kria-PYNQ_81_220223.png

論理合成、インプリメンテーション、ビットストリームの生成を行った。
結果を示す。
Kria-PYNQ_82_220223.png

Flow Navigator の PROGRAM AND DEBUG の Open Hardware Manager を展開して、Open Target をクリックし、Auto Connect を選択した。
ILA ダッシュボードが表示された。
Kria-PYNQ_83_220224.png

slot_4 : ps8_0_axi_periph_M00_AXI: AWVALID (axi_dma_0 の AXI4-Lite インターフェース)が 0 から 1 になる時にトリガを掛けて、表示された画像を示す。
Kria-PYNQ_84_220224.png

画像を拡大した。
Kria-PYNQ_85_220224.png

0x000 番地に 1 を書いているようだ。
LogiCORE IP AXI DMA v7.1 PG021 2014 年 4 月 2 日”によると、0 番地は、MM2S DMA 制御レジスタで、その内の RS ビットを 1 にするようだ。
RS ビットの機能については、”LogiCORE IP AXI DMA v7.1 PG021 2014 年 4 月 2 日”の 14 ページの表 2‐8 : MM2S_DMACR レジス タの詳細 の RS フィールドの説明を引用する。

DMA チャネルの実行 (Run) と停止 (Stop) を制御し ます。
• 0 = 停止 – 現在進行中の DMA 転送があ る場合、その転送が完了する とDMA が停止し ます。 スキャッター /ギャザー モード の場合、 未完了のコマンド /転送は途中で終了する もの と最後まで完了する ものがあります。 AXI4-Stream 出力は途中で終了する可能性があ り ます。 ア ッ プデー ト キ ューに入っているデ ィ ス ク リ プタは リ モー ト メ モ リ への更新が完了し てか らエンジンが停止し ます。
シンプル DMA モー ド の場合、 未完了のコマン ド /転送は途中で終了する も の と最後まで完了する も のがあ り ます。 AXI4-Stream 出力は途中で終了する可能性があ り ます。
DMA エンジンが停止する と 、DMA ステータ ス レジスタの Halted ビ ット が 1 にアサー ト されます。 RS ビ ッ ト は、 エ ラーが発生する と AXI DMA ハー ド ウ ェ アに よ って ク リ ア されます。 CPU でこのビッ ト をク
リアして DMA 動作を停止する こ と もで き ます。
• 1 = 実行 – DMA 動作を開始し ます。 DMA エンジンが動作を開始すると 、 DMA ステータ ス レジスタの Halted ビッ トが 0 にデ ィ アサー ト されます。


次に、slot_5 : ps8_0_axi_periph_M01_AXI: AWVALID (DMA_pow2_axis_0 の AXI4-Lite インターフェース)が 0 から 1 になる時にトリガを掛けて、表示された画像を示す。
Kria-PYNQ_86_220224.png

波形を拡大した。
Kria-PYNQ_87_220224.png

0 番地に 0x81 を書いている。ap_start ビットと auto restart ビットを 1 にしている。
また、その後に、AXI4-Stream にデータが出力されているのが分かる。

AXI4-Stream を拡大した。
Kria-PYNQ_88_220224.png

slot2 : axi_dma0_M_AXIS_MM2S には data のリストの値が流れていて、slot3 : DMA_pow2_result にはその 2 乗した値が流れている。正常だ。と思ったが、
slot3 : DMA_pow2_axis_0_result : TDATA が最後の 81 の時に TLAST が 1 にアサートされていないからじゃないのか?
自分で作成したDMA_pow2_axisで tlast と tuser は何もしていなかった。tlast と tuser はそのまま返せばOKなのかな?


slot1 : axi_dma_0_M_AXI_S2MM を見ると、slot3 : DMA_pow2_result の値が DMA Write されていた。こっちもすこぶる正常だ。
Kria-PYNQ_89_220224.png

ここまで正常ということは、ただ単に終了判定ができないだけなのだろうか?
  1. 2022年02月25日 04:41 |
  2. KRIA KV260 Vision AI Starter Kit
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/5512-1456d2a9
この記事にトラックバックする(FC2ブログユーザー)