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

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

FPGAの部屋

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

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

2017年のFPGAの部屋のブログ記事をまとめてみよう。

1月
SDSoC のプラットフォームのお勉強6(ハードウェア・プラットフォームの完成) 2017年の最初のFPGA関連記事は、SDSoC の記事だった。SDSoC を勉強しようとして、いろいろとやってみていた。また再開したいな。reVISION とかもあるし。
SDx 2016.3 のプラグマによるハードウェアと性能の違い1 おなじみのSDx 用ラプラシアンフィルタのプロジェクトを使用して、SDx 2016.3 のデータに関するプラグマを入れて、ハードウェアがどう変更されたのか?性能がどうなったのかを検証してみよう。
Zybot をステレオカメラにする2(カメラ・マウントの作製) Zybot に取り付ける、カメラ拡張ボード用のマウントをFreeCAD で設計して、3D プリンタで作成した。
Vivado HLS のソースコードをSDx で試す1(memcpy() を使った第2段階のコード)
AXI4-Stream向きのコードで書いたラプラシアンフィルタをVivado HLSでテスト1 ”Vivado HLS のソースコードをSDx で試す4(AXI4-Stream向きのコード)”でAXI4-Stream向きのコードをAXI4 Master として実装して性能を評価したところ、とても高い性能だった。それは、DMAのWrite とRead が重なり合って実行しているとしか考えらない性能だった。となると、そのコードはVivado HLS で合成したときにDMAのWrite とRead が重なり合って実行されるのだろう。そのような状況には出会ったことがないので、さっそくVivado HLS でやってみた。
SDSoCのチュートリアルをやってみた1(システムのデバック) SDSoCのデバック方法やパフォーマンス測定のただし方法などを知らなかったので、SDSoCのチュートリアルをやってみることにした。
Zybot をステレオカメラにする3(Zybot 改造中)
Xilinx/PYNQのプロジェクトを生成した1 ikwzm さんの”PYNQ-Z1 の ビットストリームを再ビルドしたときのタイミング違反を無くす”を見ながら、Xilinx/PYNQのプロジェクトを生成してみた。
SDSoC 勉強会 SDSoC 勉強会に行ったけ。。。
FPGAマガジン No.16にVivado HLSのAXI4 Masterアクセス編を書きました

1月の記事はどれも長かったな。。。良く書けたもんだ。。。

2月
FASTXコーナー検出による物体の形状検出1(Vivado 2016.4 プロジェクト) 以前、”FASTX コーナー検出の改良3(threshold をソフトウェアで変更可能にする)”で、Vivado HLS のOpenCV 機能の一部であるFASTX コーナー検出を使用して、CMOS カメラで撮影した画像のコーナー検出を行った。今回は、FASTX コーナー検出のプロジェクトを Vivado 2016.4 に変換して動作を確かめた。
守谷ハーフマラソンの5kmの部に出場しました 結果は26分31秒でした。
Zybotの障害物検知と回避1(超音波距離センサの性能) Zybotの障害物検知と回避で使用するために、超音波距離センサの指向性を計ってみた。Zybot の改造を行っている。
PYNQボードでカメラ画像をリアルタイムにFASTX コーナー検出1 このところ実装しているVivado HLS のFASTX コーナー検出IP をPYNQ ボードにも実装してカメラ画像からリアルタイムにFASTX コーナー検出を行った。
バイキュービック法のFPGAへの適用 バイキュービック(BiCubic)法をFPGA に適用できるように固定小数点に直して演算する方法。
Vivado HLS 2016.4 における assert() 文の効果 Vivado HLS 2016.4 で変域を指定することができる assert() 文の効果を確かめてみた。
Zybot による障害物回避 Zybot による障害物回避が曲がりなりにもできた。

3月
PYNQ祭りに参加してきました 「PYNQでカメラ画像をリアルタイムFASTX コーナー検出」という題で発表してきました。スライドはSlideShareにアップしました。
XilinxのBNN-PYNQをやってみる1(インストール編) XilinxのBNN-PYNQをやって見たいということで、やってみました。BNN-PYNQはBinarized Neural Network (BNN) on PYNQ だそうです。
・Ubuntu16.04にVivado 2016.4をインストール Ubuntu16.04にVivado 2016.4をインストールする覚書を書いておこうと思う。
「Vivado HLS で DMA Read IP を作る2(絶対アドレス指定版)」を使って合成後の機能シミュレーション 前回は絶対アドレス指定のDMA Read IPをVivado HLS 2016.4 で作成した。今回は、そのDMA Read IPをVivado で論理シミュレーションと合成後の機能シミュレーションを行った。
Vivado 2016.4 のSDKでデバイスツリーのソース(DTS)を生成する Windows 10 上で、Vivado 2016.4 のSDKでデバイスツリーのソース(DTS)を生成してみよう。
・”FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を試してみる1(FPGA-SoC-Linux のクローン) ikwzm さんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を試してみようと思う。

4月
PYNQのLED表示プロジェクト1(ブロックデザインの作成) ikwzm さんのFPGA Manager と デバイスツリー・オーバーレイを確かめてみるために、簡単な例としてPYNQボードのLED表示プロジェクトを作ることにした。
”FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を試してみる8(入れ替え1) 前回は、デバイスツリー・オーバーレイとFPGA Manager を使いやすいようにShell スクリプトを作成した。今回は、2つのFPGA回路とデバイスツリーをLinux 起動しながら入れ替えてみようと思う。
Raspberry Pi Zero にLinux をインストール ”Raspberry Pi Zero インストール(2016/07/02)”のほぼその通りにRaspberry Pi Zero のSDカードにLinux をインストールした。
技術書典2に行ってきました
ikwzm さんの構築したPYNQ ボード用DebianでのPS出力クロックfclkの設定方法
かすみがうらマラソン2017に出場しました
Thinkpad 13が届きました ”「PYNQ祭り」延長戦 : FPGAディープラーニング実践懇親会”でがっつり実装するために購入しました。
”FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を使用してカメラの画像を表示 
Vivado 2017.1 の新機能1(概要) Vivado 2017.1 がリリースされて、新機能が多かったので、その解説をした。
Vivado 2017.1 の新機能2(AXI Verification IPの概要)
FPGAマガジンNo.17にVivado HLS の記事を書きました(ソースコードをGitHubで公開)
AXI4マスタ版ラプラシアン・フィルタ最速の条件 この記事はFPGAマガジンNo.17 に載るはずだったけど、ページが足りなくて載せることができなかったコラムです。

5月
Vivado 2017.1 の新機能8(Zynq-7000 VIP)
Vivado HLSで stdint.h を使用する taksei さんに教えて頂いたように、stdint.h を使用して、uintX_t や intX_t を使用することにした。
「ゼロから作る Deep Learning」をやってみる1(Numpyと matplotlib の使い方) オライリーの「ゼロから作る Deep Learning」をやってみたのは5月からだったんだ、これ以降はこのCNN の話題がブログの中心となった。7か月位で、ミニ・ロボットカーを走らせるまでになったのはとっても良かった。
・DnnWeaverをやってみる1 結局、うまく行かなかった。
BNN-PYNQ のトレーニングを試してみる1
Vivado HLS の符号付 C++の任意精度固定小数点型について
ニューラルネットワークの推論のハードウェア化1(概要編) 「ゼロから作る Deep Learning」を使用して、ニューラルネットワークをFPGA で実装しようという試みが始まった。まずはMNISTの手書き数字認識をFPGA に実装してみることにした。

6月
Vivado HLS の任意精度固定小数点型を使用した内積の計算 配列の内積をVivado HLS の任意精度固定小数点型を使用して計算してみよう。ニューラルネットワークを実装するためのテストだった。
「ゼロから作るDeep Learning」の2層ニューラルネットワークのハードウェア化1 「ゼロから作るDeep Learning」の5章 誤差逆伝播法の2層のニューラルネットワークをハードウェア化してFPGA に実装してみようと思う。浮動小数点数を量子化して固定小数点化する方法を書いた。
マウスコンピューターのパソコンにHDDとGPUを追加してUbuntuをインストールした
「ゼロから作るDeep Learning」の2層ニューラルネットワークのハードウェア化3 Vivado HLSに持っていくための重みとバイアスのC の配列を生成するPython コードを紹介した。
BNN-PYNQ のトレーニングを試してみる3 GPUを使用してCIFAR-10をトレーニングしてみた。
「ゼロから作るDeep Learning」の2層ニューラルネットワークのハードウェア化4(Vivado HLS) 前回作成した重みやバイアス、MNISTデータセットの一部のヘッダファイルを使用して、Vivado HLS でMNISTの手書き数字を判定するハードウェアを作る。ただし、Softmax は実装が難しいし、最大値を取れば数字は推定できるので、実装していない。
「ゼロから作るDeep Learning」の2層ニューラルネットワークのハードウェア化6(指示子を入れる) IP として使用できるようにVivado HLS に指示子を入れた。
「ゼロから作るDeep Learning」の畳み込みニューラルネットワークのハードウェア化1 「ゼロから作るDeep Learning」の7章 畳み込みニューラルネットワークをハードウェア化してFPGA に実装してみることにした。
「ゼロから作るDeep Learning」の畳み込みニューラルネットワークのハードウェア化4(Vivado HLS1) 畳み込みニューラルネットワークのC ソースコードを作成してVivado HLSでハードウェア化した。
MNISTの畳み込みニューラルネットワークで自分の手書き数字を認識する1 自分で手描きの数字を書いてVivado HLS のC シミュレーションによって、認識させてみた。
MNISTの畳み込みニューラルネットワークで自分の手書き数字を認識する3(カメラ画像) 手書き数字をカメラで撮影した画像を切り出して認識させたところ、精度はいまいちだが、一応、カメラで撮影した手書き数字を認識できているようだ。本格的にPYNQボードに組み込んで、カメラで撮影した画像から手書き数字を認識させてみよう。
手書き数字認識用畳み込みニューラルネットワーク回路の製作1(概要) 手書き数字認識用畳み込みニューラルネットワークができたので、カメラで撮影した画像の中の手書き数字を認識してみようと思う。使用するボードはPYNQボードとする。以前に、PYNQボードでFASTX コーナー検出IP を使用したプロジェクトがあるので、それをベースとする。
手書き数字認識用畳み込みニューラルネットワーク回路の製作2(手書き数字認識用四角枠表示回路) 手書き数字認識用畳み込みニューラルネットワーク回路のパーツとなる手書き数字認識用四角枠表示回路をVivado HLS を使用して作ってみよう。

6月は怒涛の進行だった。今読むと凄かったと思う。
  1. 2017年12月30日 04:37 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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