FC2カウンター FPGAの部屋 2016年のFPGAの部屋のブログのまとめ(1月~6月)

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

FPGAの部屋

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

2016年のFPGAの部屋のブログのまとめ(1月~6月)

2016年のFPGAの部屋のブログを振り返ってみた。

1月
Vivado HLS勉強会4(AXI4 Master)を公開しました(今年はVivado HLS の記事をFPGAマガジンにも書かせてもらった)
筑波山神社に歩いて初詣に行ってきました
ZYBO_0_2 と ZYBO_1_XGA_test との接続テスト(ZYBO_0 にDigilent 社の rgb2dvi IP を実装することができた。(ZYBO_0_2))
Vivado HLS勉強会5(AXI4 Stream)を公開しました
ステレオカメラによる距離測定テスト1(構想編)(”ZYBO_0 を変更3(Ubuntu 14.04 LTSのBOOT.binを変更)”でステレオカメラの要素技術は大体クリア出来たので、ステレオカメラを構築していくことを考えてみよう。)
牛久シティマラソンの5kmに参加しました
Digilent社のボード・ファイルのインストール(ボード・ファイルにはお世話になった)
ZYBO_0_2 と ZYBO_1_XGA_test との接続テスト時の画像のバグのデバック2(アプリの変更)(HDMIの出力を入力するときの左端の画像がおかしい問題は解決した)
FreeCADでDIP ICの3Dモデルを作る1(3D CadソフトのFreeCADを勉強してDIP ICパッケージのモデルを作った。実際に3Dプリンタでプリントしてみた)
デバイスドライバ udmabuf を使用する1(@ikwzm さんのLinuxでユーザー空間で動作するプログラムとハードウェアがメモリを共有するためのデバイスドライバ udmabuf を使わせて頂いた。便利に使っている。感謝)
マウスコンピュータのノートパソコン、LB-J321E-SSD2 が来ました(ノートパソコンを購入した)
・ステレオカメラによる距離測定テスト6(ステレオカメラのテスト)(SDKを立ち上げて、ベアメタル・アプリケーションを作製して自分のカメラと、ZYBO_0_2 からHDMI ポート経由で送られてきた画像が表示できるか?を確認した)
LinuxでSDカードをバックアップ、リストア(Linux環境でのSDカードのバックアップ、リストア方法)

2月
MPSoCのお勉強1(概要)
MPSoCのVivado プロジェクトを作ってみよう1(MPSoC のプロジェクトを作製した)
守谷ハーフマラソン(うちの奥さんが5km で世代別優勝した。びっくりしたな。。。)
ZYBO をUbuntu 14.04 LTS にアップグレードした場合のエコーバック(解決方法を教えて頂いた)
ステレオカメラによる距離測定テスト10(左右カメラの視差の測定)(左目カメラ画像に右目カメラ画像の一部を表示するアプリケーションだ。右目カメラ画像の一部を表示するエリアは、左目カメラ画像の輝度を 1/2 にして、そこに輝度を 1/2 にした右目カメラ画像を足し合わせる。デフォルトでは、右目カメラ画像の縦方向真ん中で、横方向左端の 160 ピクセル X 120 行を切り取って、左目カメラ画像に表示する。)
ステレオカメラによる距離測定テスト13(チェッカーボードの撮影結果)(カメラで撮影した画像に思いっきり樽型ひずみが出ていた)
OpenCV 2.4.10 の stereo_calib.cpp をやってみた
MPSoC勉強会で”MPSoCのPLの性能について”という発表をしてきた(サポート用のブログ)
OpenCV 2.4.10 の stereo_match.cpp をやってみた
左目カメラ画像と右目カメラ画像をBMPファイルに変換するアプリケーションを作成した

3月
ZYBO_0_2のビットマップ・ディスプレイ・コントローラのバグフィックス(ZYBO_0_2 のビットマップ・ディスプレイ・コントローラのワードレーンがおかしいようなので修正を行った)
ZYBO_0_2のビットマップ・ディスプレイ・コントローラのバグフィックス2(今回は、右目カメラ画像に出ている黒いドットを消すことができた。原因は、ビットマップ・ディスプレイ・コントローラの出力の display_enable が 1 クロックずれていたことだった)
hls::LineBufferとhls::Windowでラプラシアンフィルタを実装する1(あるところから hls::LineBuffer と hls::Window を教えて頂いたので、それを使ってラプラシアンフィルタを実装した。ありがとうございました)
OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた3(いろいろと失敗してきた”OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた”ですが、ついにうまく行った。勝因は、チェスボードに黒枠をつけたのと、チェスボードが大きめに画面に写っていたほうが良いみたいだ)
hls::LineBufferとhls::Windowでラプラシアンフィルタを実装する7(2 つの実装を実際に使用する 800 x 600 ピクセルの解像度に変更して、どの位リソースを使うかと、今までは 100 MHz で合成してきたが、どの位の動作周波数で合成できるかを探ってみた)
OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた4(stereo_match_cam.cpp の作成)(前回で、”OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた”が上手く行った。でも、これは、右目カメラ画像と左目カメラ画像をBMPファイル変換して、そのBMPファイルに対して stereo_match を起動して、disparity を計測した。これだとBMPファイルにする手間があるので、右目カメラ画像と左目カメラ画像をバッファしているフレームバッファから直接、画像を取得して、stereo_match するようにソフトウェアを書き換えた。これを stereo_match_cam.cpp とした)

4月
Vivado HLS 2015.4 で OpenCV を使ってみた2(テストベンチに Mat を使って実装した)
Vivado HLS 2015.4 で OpenCV を使ってみた3(Sobelフィルタを試した1)
Vivado HLS 2015.4 で OpenCV を使ってみた7(FAST Corners Detection 1)
かすみがうらマラソンに出場しました
OpenCV の X軸方向 Sobel フィルタ IP のカメラ表示システム(”Vivado HLS 2016.1 で OpenCV の Sobel フィルタを試してみた”で作った X軸方向 Sobel フィルタの IP をカメラ表示システムに入れて、Sobel フィルタ出力が表示された)
FASTXコーナー検出IPのカメラ表示システム5(Vivado HLS 2016.1でやってみた3)(前回は、hls::Duplicate() で複製された img_1_ の data_stream に hls::FASTX() と hls::Dilate() の最大レイテンシの 7 行と 3 行を足した 10 行分より多い 2 の 13 乗の 8196 個の FIFO バッファを付けるように STREAM ディレクティブを指定した。
今回は、前回作製した FASTX コーナー検出IP を使用して、Vivado 2016.1 で論理合成、インプリメントを行って、SDKでZYBO にコンフィグレーションしアプリケーションを起動して、 FASTX コーナー検出できた)
FASTX コーナー検出の改良3(threshold をソフトウェアで変更可能にする)( threshold を変更できるFASTX コーナー検出IP をカメラ表示システムに組み込んで実際に表示してみた)
AXI VDMAのMM2Sを使用してビデオ出力1(構想編)(これはうまく行かなかったな。どうもAXI VDMA とは相性が良くないようだ)

5月
定期戦に行ってきました
AXI VDMAのMM2Sを使用してビデオ出力7(実機でテスト)(cam_disp_axis.c を AXI VDMA の MM2S を使う仕様に変更して、ZYBO実機でテストしてみたが、何も表示されない。やはり、AXI VDMA とは相性が悪い)
KiCad-4.0.2 と FreeRouter インストール覚書
Vivado HLS を使用した車の白線検出1(初めに)(車の白線検出をハードウェア化してみたいということで、OpenCVを使用して車の白線検出を行い、それをVivado HLS でハードウェア化してみることにした)
Vivado HLS を使用した車の白線検出4(ヒストグラム均一化)(cannyフィルタでエッジ検出した後でHough 変換を行って、直線検出したが、最後の暗い画像では、道路の白線を検出することはできなかった。今回は、canny フィルタの前に equalizeHist() を行うことで、ヒストグラムの均一化したところ、白線検出できるようになった)
Vivado HLS を使用した車の白線検出5(hls::HoughLine2())(前回はヒストグラムの均一化を行ってから、グレー変換、Canny フィルタ、Hough 変換を行うと白線検出をすることができた。今回は、”Vivado HLS を使用した車の白線検出1(初めに)”で使用した”ka367/Lane-Detecting-Using-Hough-Transform”が動作して、C シミュレーションとC コードの合成をすることができた。でも、ロジックが大きすぎてZYBOに入らない。。。)
Vivado HLS を使用した車の白線検出7(Canny フィルタ1)(前回、白線検出ハードウェアはとてもZYBO には入らないということがよく分かった。それでも Canny フィルタだけはハードウェアにしたいということでやってみた)
ZYBO 上のOpenCV で白線検出2(equalizeHist() を使用した場合2)(前回は、equalizeHist() を使用し、Canny フィルタを掛けて、HoughLine 変換で道路の白線検出を行った。しかし、画像を読み込む時点で白黒画像に変換していた。ハードウェアでは、カメラで撮影した画像を白黒変換して、Canny フィルタを掛ける予定なので、白黒画像変換の部分の経過時間も測る必要がある。それでC++ ソースコードを修正した。更に、白黒画像変換+Canny フィルタの経過時間を測定した)
Z-turn Board が届きました
ZYBO 上のOpenCV で白線検出3(Canny フィルタのみの場合)(今回は前回のコードはそのままに、10行目の”#define HIST”をコメントアウトして、equalizeHist() を使用しないで、Canny フィルタのみで白線検出を行うことにする。なお、Canny フィルタのスレッショルドは、試行錯誤して、最適化したつもりだ)

6月
Vivado HLS を使用した車の白線検出10(ラプラシアンフィルタ1)(Cannyフィルタのロジック量が大きいので、ラプラシアンフィルタに変更したら良好な結果を得た)
Z-turn Board のPS設定をサンプル・プロジェクトからコピーする
Zybot の作製1(構想編)(Zybot を作製しようとしている。Zybot はZYBO を搭載した車といっても本物の車のサイズではなくミニカーの部類だ)
Zybot の作製2(組み立て1)(Zybot 組み立てマニュアルを参照して、Zybot を途中まで組み立ててみた。なお、これは、Zybot の仮組でとりあえずモーターを動かして、車を動かすのを目的とする)
Vivado HLS で PWM モジュールIP を作ってみた(Zybot のモーターコントロール用Hブリッジ回路のPmodの Digilent PmodHB5 を制御するPWM モジュールIP をVivado HLS 2016.1 で作ってみた)
Altera SDK for OpenCL勉強会に行ってきた
レジスタ設定用AXI4 Master IPをVivado HLS で作ってみた(PWM モジュールIP をシミュレーションするために、レジスタ設定用AXI4 Master IPをVivado HLS で作ってみた)
PmodHB5 のセンサー・フィードバック処理IP を作ってみた
Vivado HLS 2016.2 で volatile を使用する場合
Zybot の車輪が回転した(モーター・センサポートのSA, SB の波形有り)
舌下免疫療法(スギ花粉症)
KiCad-4.0.2 のフットプリント作成方法

7月~12月編に続く。

今年は中身が濃い気がするな。。。
  1. 2016年12月30日 07:45 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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