FC2カウンター FPGAの部屋 並列ステレオカメラによる距離の測定6(ZYBO 0 のハードウェア5)完成
fc2ブログ

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

FPGAの部屋

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

並列ステレオカメラによる距離の測定6(ZYBO 0 のハードウェア5)完成

”並列ステレオカメラによる距離の測定5(ZYBO 0 のハードウェア4)”の続き。

HDMI 出力が安定しない原因はBUFR でOSERDES で使用する5倍のピクセルクロックから5分周してピクセルクロックを作製する時に制約を掛けていないためだった。(”BUFR でクロックを分周する場合は制約を追加する必要がある(ビットマップ・ディスプレイ・コントローラ IP のHDMI 出力)”参照)
その後、ビットマップ・ディスプレイ・コントローラIP に制約を入れて問題なく動作した。(”プロジェクトにインスタンスされているIPに制約を追加する”参照)

今回は、カメラ画像出力はできたのだが、タイミング違反が出ていたので、それを解消してから、ラプラシアンフィルタ出力するようにソフトウェアを追加する。

今回の lap_fil_on.c と cam_return.c のソースコードは、”AXI4-Stream版ラプラシアンフィルタIPのカメラ表示システム10(ラプラシアンフィルタ処理)”のCソースコードをそのまま使用している。

最初にタイミング違反を解消しよう。

現在のVivado 2015.3 の表示を示す。
StereoCam_79_151122.png
タイミング違反が出ている。

Flow Navigator -> Implemented Design -> Report Timing Summary をクリックして、タイミング違反を観察する。
StereoCam_80_151122.png
ビットマップ・ディスプレイ・コントローラIP 1 の pixclk と clk_fpga_0 のクロック間のタイミング違反だった。この間のタイミング解析を止めさせれば問題ない。

Flow Navigator -> Implemented Design -> Edit Timing Constraints をクリックして、ビットマップ・ディスプレイ・コントローラIP 1 の pixclk と clk_fpga_0 のクロック間を False Path に指定した。
StereoCam_82_151122.png

set_false_path -from [get_clocks ZYBO_0_i/bitmap_disp_cntrler_axi_master_1/inst/dvi_disp_i/pixclk] -to [get_clocks clk_fpga_0]
set_false_path -from [get_clocks clk_fpga_0] -to [get_clocks ZYBO_0_i/bitmap_disp_cntrler_axi_master_1/inst/dvi_disp_i/pixclk]


Timing タブのRerun を実行すると、False Path を設定した時のタイミングが見える。(たぶん)
StereoCam_83_151122.png

Timing タブのRerun を実行すると、タイミング違反が解消されるようだ。
StereoCam_84_151122.png

もう一度、論理合成、インプリメント、ビットストリームの生成を行った。予想通り、タイミング違反は解消されていた。
StereoCam_85_151123.png

Project Summary を示す。
StereoCam_86_151123.png

ハードウェアをビットストリームごとエクスポートして、SDKを立ち上げた。

cam_disp_elf を再度実行してみたが、HDMI 出力は問題なかった。
StereoCam_87_151123.png

SDK の File メニューからNew -> Application Project を選択する。

Project name に lap_fil_on と入力した。Next > ボタンをクリックした。OS Platform は取りあえず、ベアメタル・アプリケーションとするので、デフォルトの standalone に設定した。Next > ボタンをクリックする。
StereoCam_88_151123.png

Templates で Empty Application を選択して、Finish ボタンをクリックした。
StereoCam_89_151123.png

lap_fil_on プロジェクトの src フォルダに lap_fil_on.c を新規作成して、既存の lap_fil_on.c のソースコードをコピーした。
StereoCam_90_151123.png

lap_fil_on.elf を右クリックし、右クリックメニューから Run AS -> Launch on Hardware (GDB) を選択するとラプラシアンフィルタ処理画像が表示された。
StereoCam_93_151123.jpg

元画像はこれだ。
StereoCam_94_151123.jpg

次に、cam_return Application Project を作製した。BSP は lap_fil_on_bsp を使用した。
StereoCam_91_151123.png

cam_return プロジェクトの src フォルダに cam_return.c を新規作成して、既存の cam_return.c のソースコードをコピーした。
StereoCam_92_151123.png

cam_return.elf を右クリックし、右クリックメニューから Run AS -> Launch on Hardware (GDB) を選択するとカメラ画像に戻った。

これで、たぶん 5 fps ととてもフレームレートが遅いのだが、一応、ZYBO_0 として使用できるプロジェクトができたと思う。
次は、これをUbuntu 14.04 LTS で動作させるためのソフトウェアを書くことにしよう。
  1. 2015年11月23日 05:47 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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