FC2カウンター FPGAの部屋 FASTXコーナー検出IPのカメラ表示システム2(論理合成、インプリメント)

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

FPGAの部屋

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

FASTXコーナー検出IPのカメラ表示システム2(論理合成、インプリメント)

”FASTXコーナー検出IPのカメラ表示システム1(プロジェクト作成)”の続き。

前回は、ブロックデザインに FASTX コーナー検出IP をラプラシアンフィルタIP と入れ替えた。今回は、論理合成、インプリメントを行う。

2016/04/20 追記:FASTX コーナー検出IP が動作しなかったのは、hls::Duplicate() で複製された img_1_ の data_stream に hls::FASTX() と hls::Dilate() の最大レイテンシの 7 行と 3 行を足した 10 行分より多い 2 の 13 乗の 8196 個の FIFO バッファを付けるように STREAM ディレクティブを指定する必要があったからでした。それを行ったところ、”FASTXコーナー検出IPのカメラ表示システム5(Vivado HLS 2016.1でやってみた3)”で動作しました)

まずは、入っていたVivado Analyzer を削除した。
Vivado_HLS_OpenCV_68_160412.png

論理合成、インプリメントを行うと、Timing のWorst Negative Slack が赤くなって、エラーが出ている。
Vivado_HLS_OpenCV_69_160412.png

Project Summary を示す。LUT は44 % 使用している。やはりもう少し大きいZynq が欲しいところだ。。。
Vivado_HLS_OpenCV_70_160412.png

Implemented Design を開いてみると、BUFR_pixel_clk_io_n_0 から clk_fpga_0 までと、 clk_fpga_0 から BUFR_pixel_clk_io_n_0 までのパスがダメのようだ。
Vivado_HLS_OpenCV_71_160412.png

BUFR_pixel_clk_io_n_0 から clk_fpga_0 までと、 clk_fpga_0 から BUFR_pixel_clk_io_n_0 までのパスを無視するようにタイミング制約をするのだが、その前にReport CDC を見てみよう。
Implemented Design は開いてあるので、Tools メニュー -> Timing -> Report CDC... を選択した。(”Vivado のImplemented Design で Report CDC を確認する”参照)

BUFR_pixel_clk_io_n_0 から clk_fpga_0 までと、 clk_fpga_0 から BUFR_pixel_clk_io_n_0 までのパスを確認してみると、Unsafe が 1 つある。
Vivado_HLS_OpenCV_76_160413.png

From は V_ZYBO_CAMDS_i/bitmap_disp_cntrler_axi_master_0/inst/bitmap_disp_eng_inst/cs_rdg_reg[0]/C
To は V_ZYBO_CAMDS_i/bitmap_disp_cntrler_axi_master_0/inst/bitmap_disp_eng_inst/hv_cnt_ena_d1_reg/D
だった。
Vivado_HLS_OpenCV_77_160413.png

これは、”ビットマップ・ディスプレイ・コントローラのReport CDC unsafe 箇所を確認し、修正する”で修正したのと同じところだ。よって同様に修正するのだが、修正する前にTiming制約違反を防ぐために clk_fpga_0 とBUFR_pixel_clk_io_n_0 相互のパスを無視する制約を追加しよう。

Edit Timing Constraints で、BUFR_pixel_clk_io_n_0 から clk_fpga_0 までのパスを無視する設定にする。
Vivado_HLS_OpenCV_72_160412.png

次に、clk_fpga_0 から BUFR_pixel_clk_io_n_0 までのパスを無視する設定にする。
Vivado_HLS_OpenCV_73_160412.png

これでタイミング制約の修正は終了した。
Vivado_HLS_OpenCV_74_160412.png

次に、”ビットマップ・ディスプレイ・コントローラのReport CDC unsafe 箇所を確認し、修正する”で修正したのと同様に bitmap_disp_cntrler_axi_master を修正した。

さて、もう一度、論理合成、インプリメントを行った。

タイミング制約も満足して、論理合成、インプリメントは成功した。Summary を示す。
Vivado_HLS_OpenCV_75_160412.png

次にハードウェアをSDK にエクスポートして、SDKを立ち上げた。
ビットストリームをFPGAにダウンロードして、cam_disp_axis.elf を起動した。
VGAポートに接続されたディスプレイにカメラ画像が表示された。
fastx_on.elf を起動して、FASTXコーナー検出IP を通して画像を出力しようとしたが、画面表示が変更されない。以前のフレームバッファの内容を表示している感じだ。FASTXコーナー検出IP はカメラ画像入力ー>DDR3 SDRAMフレームバッファへWrite するパスに入っているので、そこが止まっている感じだ。
Vivado_HLS_OpenCV_79_160414.png

(追記)
元のラプラシアンフィルタのプロジェクトでは、カメラ画像をリアルタイムにラプラシアンフィルタ処理できました。やはり、FASTXコーナー検出IP にバグがありそうです。
  1. 2016年04月13日 05:19 |
  2. OpenCV
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3441-04d301ca
この記事にトラックバックする(FC2ブログユーザー)