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

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

FPGAの部屋

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

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

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

7月
PmodHB5 のセンサー・フィードバック処理IP を作ってみた3
Zybotの車輪のセンサー・フィードバックのデータを取得した
AXI4 Slave Bus Functional Model のVerilog HDL版4(今回の修正は、Xilinx社のIP はAxREADY がいつもは 1 になっていることから、AxREADYがいつも 1 になるように変更した。これがデフォルトのモードで、AWREADY_IS_USUALLY_HIGH、ARREADY_IS_USUALLY_HIGH を 0 にすることで、従来のAxREADY がいつもは 0 のモードにすることができる)
AXI4 Slave Bus Functional Model のVHDL版4
Vivado HLS で DMA Write IP を作る(絶対アドレス指定編)(AXI4 Master でフィルタを実装するコードを考えていると、やはり、memcpy() と中のフィルタ処理を重ね合わせられないので、すべてVivado HLS で作ると性能が出しにくい。
そこで、フィルタ部分はAXI4 Stream で作っておいて、DMA 部分は別にAXI4 Master Read - AXI4 Stream のDMA Read とAXI4 Stream - AXI4 Master Write の DMA Write の2つのIP をVivado HLS で作った方が良さそうだ)
Zybot が走った(Ubuntu 上でPWMモジュールIP とモーター・モニタIP を制御するアプリケーション・ソフトウェアを作成して、Zybot を走らせた)
Vivado HLS で DMA Read IP を作る(絶対アドレス指定版)
ガボール・フィルタ (Gabor Filter) による白線検出1
(ガボール・フィルタ (Gabor Filter) を使用して白線を検出してみようと思う)
ガボール・フィルタ (Gabor Filter) による白線検出2(カーネルサイズ 21 のガボール・フィルタで道路の白線を検出してみたが、今回はカーネルサイズ21だとハードウェアが大きいので、カーネルサイズを 9 にしてみた。更に、カーネルのパラメータを取得した)
ガボール・フィルタ (Gabor Filter) による白線検出11(その他の道路写真での検証)(ガボール・フィルタは完成した(パラメータを調整する必要はあると思う)が、まだ1枚の道路の写真しか試していないので、もう少し違った写真で試した)

8月
Gabor FilterをZYBO_0_162_2 へ実装してみた(ガボール・フィルタをZYBO用のプロジェクトに実装した)
Zybot にカメラを搭載して、白線を写してみた
Maker Faire Tokyo 2016 に行ってきました
ビットマップ・ディスプレイ・コントローラをAXI4-Stream対応にする1(構想編)(メラ・コントローラはAXI4-Stream版がすでに作ってあるが、ビットマップ・ディスプレイ・コントローラのAXI4-Stream版がないのでそれを作ることにした)
Gabor FilterをZYBO_0_162_2 へ実装してみた4(ZYBOで確かめた)(ガボール・フィルタをZYBO用のプロジェクトに実装して、白線がどのように表示されるか確かめた)
宝篋山に登ってきました
Vivado HLS でAXI4-Stream Master Model IP を作る
(久しぶり Verilog HDL を使って、AXI4-Stream版ビットマップ・ディスプレイ・コントローラを作っている。ビットマップ・ディスプレイ・コントローラはAXI4-Stream Slave なので、シミュレーションするには AXI4-Stream Master が必要となる。始めは、HDL で AXI4-Stream Master IP を作ろうとしたのだが、考えてみれば、Vivado HLS で、C++ で AXI4-Stream Master IP を作ってもよいのじゃないか?ということで、Vivado HLS 2016.2 を使用して作ってみた)
ビットマップ・ディスプレイ・コントローラをAXI4-Stream対応にする5(IP作成)(AXI4-Stream版ビットマップ・ディスプレイ・コントローラが出来上がったのでIP にした)
スペアリブの煮込みを作りました
MT9D111インターフェース基板2の作製1(KiCadでの設計)(CMOS カメラ MT9D111 のインターフェース基板は以前作成したが、Zybot で使用するのに、ケーブルで伸ばしたいので、バッファを入れた基板を作成することにした。この基板はGNDとVCCのピンを間違っていた。orz)
Zybot のカメラ画像をBMPファイルに変換するアプリケーションを作成した(Zybot の白線の画像や白線検出した結果の画像をBMPファイルに変換するアプリケーションを作成した。これで、白線の画像をGabor Filter で検出するときのパラメータを最適化することができる)
Vivado HLS で生成した AXI4 Master DMA IP を使用したカメラ画像表示システム1(プロジェクト作成)(今まで作ってきた AXI4-Stream版ビットマップ・ディスプレイ・コントローラ IPと AXI4-Stream版カメラ・コントローラ IP、Vivado HLS で作成したAXI4 Master DMA Write IP、Vivado HLS で作成したAXI4 Master DMA Read IP を使って、カメラ表示システムを作ってみることにした)
Zybot のカメラ画像でGabor Filterのパラメータを取得した(Zybot のカメラ画像を取得してBMPファイルに変換するアプリケーション・ソフトウェアを作成した。今回は、このアプリケーションで取得したZybot のカメラ画像からGabor Filterのパラメータを取得した)
Zybot による白線間の自動走行1(Gabor fillter の修正、C ソースコード)

9月
FPGAコンパイルマシンが届きました(新しいパソコン)
リコンフ研に行ってきました
Vivado HLSで作ったDMA Read IP を実機でテスト1(動作しない)(DMA Read IP が今も動いていないので、来年はちゃんと動くようにしたい)
Zybotのカメラによる白線追従走行(Zybot の白線検出、追従走行のアプリケーション・ソフトウェアを作って、白線追従走行させてみました。動画ありますので、見てください。まだ、限定的な状況でしか白線走行できません)
Zybot で Gabor filter を使う際のDMA Write IP(Gabor filter をソフトウェアで 250 ms ごとに切り替えていた。これは、500 ms に1回 Gabor filter の画像が取得できることを表している。この時間を短くしたいということで、AXI VDMA をVivado HLS 2016.2 で作成したDMA Write IP に差し替えようと思う。つまり、ハードウェアで自動的に左右のGabor filter を切り替えて、異なるアドレスのフレームバッファに書き込むことにしよう)
飛行ドローンを買ってみた
Vivado HLS でFIFO を作ってみた1(指示子を入れない場合)

10月
Zybot で Gabor filter を使うためのZYBO_0_5 プロジェクト5(走行テスト)(、ハードウェアで自動的に左右のGabor filter を切り替えて、異なるアドレスのフレームバッファに書き込むことにしたプロジェクトを使用した白線走行の動画がある)
Zybot で隊列走行をさせたい(妄想編)(マーカーをRGBからHSVに変換して色相を見て追従走行する)
Vivado HLS でRGB2HSV IPを作る1(UNROLL指示子による性能向上)
PYNQボード1(PYNQボードが届いた)
PYNQボード用PSの設定方法(Vivado のブロックデザインでPS の設定はどうやるのか?というのが疑問だったので、調べてみた)
PYNQボードのデバイス・ツリー(devicetree)
Vivado HLS 2016.3 での変更点
Vivado 2016.2 のプロジェクトをVivado 2016.3 にアップグレードすると動作しなかった
Vivadoを使用してZYBO_0_163_6フォルダのプロジェクトにRGB2HSV IPを追加4(RGB2HSV)(HSV2RGB変換をARMプロセッサで動作するソフトウェアとして実装して結果を確認し、次にHSV2RGB変換時にS = V = 255 としてH を変換して結果を確認した)
MT9D111をコードを伸ばしてステレオ・カメラにする1(I2Cのプルアップ抵抗)(Zybot にMT9D111 カメラ・モジュールを搭載しているが、インターフェース基板をZYBO に直付けしている。ステレオ・カメラにするためには、延長コードをつけてカメラ・モジュールを 15 cm 程度延ばす必要がある。延長するとI2Cが通らなくなるので、カメラ・モジュールのI2Cのプルアップ抵抗を変更してみたが駄目だった)
MT9D111をコードを伸ばしてステレオ・カメラにする2(SCL, SDAの波形計測)(SCL, SDAの波形をオシロスコープで計測した。測定ポイントはコードを延ばした先のカメラ・インターフェース基板のコネクタ部分だ)
2台の Zybot での隊列走行1(構想編)(今まで作ってきたRGB2HSV変換IP を使って、2台のZybot で隊列走行をさせたいと思う。それではどのようにやるか?を検討していこう)
MT9D111をコードを伸ばしてステレオ・カメラにする3(I2CリピータIO付きカメラ・インターフェース基板)(秋月電子のI2C リピーターIC の PCA9515AD を使ったカメラ・モジュールのインターフェース基板をKiCad で作成した。この基板もGNDとVCC が間違っていた)

11月
Intel SoC FPGA デベロッパー・フォーラム
JACORN2016に参加しました
RAMの初期化ファイルのあるAXI4 Slave BFM(VHDL版)(Xilinx社のIP はAxREADY がいつもは 1 になっていることから、AxREADYがいつも 1 になるように変更した。これがデフォルトのモードで、AWREADY_IS_USUALLY_HIGH、ARREADY_IS_USUALLY_HIGH を 0 にすることで、従来のAxREADY がいつもは 0 のモードにすることができる)
RAMの初期化ファイルのあるAXI4 Slave BFM(Verilog HDL版)
坂東市いわい将門ハーフマラソン(2016)
MT9D111をコードを伸ばしてステレオ・カメラにする6(I2CリピータIO付きカメラ・インターフェース基板が届いた)(GND とVCC が間違っていたので、I2CリピーターIC から煙が出た。慌てて、修正した基板を発注した)
Vivadoを使用してZYBO_0_163_6フォルダのプロジェクトにRGB2HSV IPを追加6(UbuntuでRGB2HSVを試す)(BOOT.bin や devicetree.dtb を作成して、SDカードに書き込み、ZYBOに挿入して電源ONした。Ubuntu が起動して、それ上でカメラの動作を確認できた。今回は、RGB2HSV IP を使うアプリケーション・ソフトウェアを作成して、RGB2HSV変換を行った)
つくばマラソンの10Kmに出場しました
Vivado HLS によるAXI4 マスタ・インターフェースのバースト転送2(Vivado HLS 2015.4 時代からは、Vivado HLS によるAXI4 マスタ・インターフェースのバースト転送が memcpy() 関数を使うだけでなく、ある条件の for 文で AXI4 マスタポートを使用したときにも適用されるようになった。それをテストしてみた)
2台の Zybot での隊列走行3(追従用Zybotの戦略)(隊列走行の前走車のアプリケーションはできた。今回は追従用Zybot の戦略を考える)
SDSoC 2016.2 でラプラシアンフィルタをテスト1(SDSoC を試したのはSDSoC 2015.2 の時だったが、今回、SDSoC 2016.2 でもう一度、確かめてみよう)
2台の Zybot での隊列走行4(追従走行用アプリケーションの作成1)(追従用Zybot の戦略を考えたが、今回はそれに基づいて追従走行用アプリケーション・ソフトウェアを作成し、認識テストを行った)

12月
2台の Zybot での隊列走行5(追従走行を試してみた)(追従走行用アプリケーション・ソフトウェアを作成し、認識テストを行った。今回は、実際に2台の Zybot を使用して追従走行を試してみた。動画あります)
Zybot に超音波距離センサを搭載する1(概要)(「2台の Zybot での隊列走行5(追従走行を試してみた)」で曲がりなりにも 2 台の Zybot で隊列走行ができるようになった。その際に前走車の走り方によっては隊列走行が崩れる時がよくある。そこで、カメラの画角から外れてしまっても、追従車は予測で走れるようにしたいのだが、何か物体があったらぶつかってしまう。そこで、ぶつからないように超音波距離センサをつけたいと思う)
Xilinx 社のマイクロプロセッサまとめ1(PicoBlaze, MicroBlaze MCS)
Zybot に超音波距離センサを搭載する2(Arduino でセンサをテストする)(動作した)
Zybot をステレオカメラにする1(カメラ・インターフェース基板の実装とテスト)(”I2Cリピーター付きカメラ・インターフェース基板2が来ました”で届いた基板に部品を実装してZYBO に延長ケーブルを付けてテストしてみた。テストの結果、問題なく動作した。これでステレオカメラにすることができる。なお並べてZYBOに実装することもできる)
Zybot に超音波距離センサを搭載する3(Vivado HLSでインターフェースIPを作製)
Xilinx 社のマイクロプロセッサまとめ2(MicroBlaze)
Zybot に超音波距離センサを搭載する8(ZYBO_0_162_7 に 2 つのIP を追加2)(Synchronizer を追加して完成した)
Xilinx 社のマイクロプロセッサまとめ3(Zynq)
第2回FPGAスタートアップセミナーに参加しました
Zybot に超音波距離センサを搭載する10(Zybot に取り付けた)(超音波距離センサ・インターフェースIP をLinuxからも使うことができた)
Vivado 2016.2 からVivado 2016.4 へアップグレード
Vivado HLSのビデオ プロセッシング関数を使用したOpenCVのFPGAアクセラレーション
SDSoC のプラットフォームのお勉強1(SDSoC のプラットフォームの生成方法について学ぶことにした)
SDSoC のプラットフォームのお勉強3(ハードウェア・プラットフォームの試作1)(試しにハードウェア・プラットフォームを作成してみる)


1年を振り返ってみると、Vivado HLS を使いまくった1年だった気がする。
来年はSDSoC も自由にプラットフォームを作りれるようになりたい。
Zybot の実装も順調に進めてきた。来年はステレオカメラにしよう。
  1. 2016年12月31日 07:26 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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