Top Banner
Pmod のののののののの ( の ) のののの PYNQ のの 2017/3/4
56

PYNQ 祭り: Pmod のプログラミング

Apr 12, 2017

Download

Technology

ryos36
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PYNQ 祭り: Pmod のプログラミング

Pmod のプログラミング( 有 ) シンビー

PYNQ 祭り 2017/3/4

Page 2: PYNQ 祭り: Pmod のプログラミング

自己紹介

著者です

Page 3: PYNQ 祭り: Pmod のプログラミング

PYNQ を使うモチベーション• Python で簡単に FPGA を使いたい

Page 4: PYNQ 祭り: Pmod のプログラミング

Python で簡単に FPGA を使いたい• Python を使う利点– 学習コスト低め– 資料がいっぱい– きれいにかける

• 簡単に !!– L チカも結構ハードル高い• やりたいことは L チカじゃない。

Page 5: PYNQ 祭り: Pmod のプログラミング

Python で簡単に FPGA を使いたい• FPGA 流行ってきてます?

いいものが手に入りましたぜ

おおこれ

は !!

FPGA 業界の怪しいやり取りの図

Page 6: PYNQ 祭り: Pmod のプログラミング

PYNQ の I/O• Pmod と Arudino 互換の I/O

Pmod

Arduino 互換

https://forums.xilinx.com/から借用

Page 7: PYNQ 祭り: Pmod のプログラミング

他のボードにも Pmod

http://store.digilentinc.com/ から借用

Page 8: PYNQ 祭り: Pmod のプログラミング

Pmod ってなに?• Peripheral modules らしい• ピン数の違うものがある

http://store.digilentinc.com/pmod-modules/から借用

Page 9: PYNQ 祭り: Pmod のプログラミング

PYNQ の Pmod

123456

789101112

Page 10: PYNQ 祭り: Pmod のプログラミング

基板上の配置も規約で決まっています

Digilent-Pmod_Interface_Specification.pdfから抜粋

Page 11: PYNQ 祭り: Pmod のプログラミング

Pmod 対応の機器• とりあえずいろいろ買ってみる ( 無目的に )

12Pin のSD カード用6 pin の I2S

Audio Out

Page 12: PYNQ 祭り: Pmod のプログラミング

6pin/12pin の Pmod は PYNQ で使用可能だが

Audio Outあるじゃん

Audio Out:I2S は PYNQ のデザインでサポートされていないようだSD の Pmod も対応されていない

FPGA だから工夫すれば使えます !! 純粋なソフトウェアの人はすぐに使えない。使いたくない

Page 13: PYNQ 祭り: Pmod のプログラミング

もう少し買ってみる

I2C の温度センサ I2C のなにか

Page 14: PYNQ 祭り: Pmod のプログラミング

I2C は 8pin の Pmod だった

FPGA だから工夫すれば使えます !! 純粋なソフトウェアの人はすぐに使えない。使いたくない

Digilent-Pmod_Interface_Specification.pdf

Page 15: PYNQ 祭り: Pmod のプログラミング

念のために PYNQ のデザイン確認

I2C 使えるような気がする

8pin をどうさしたらいいかわからない 純粋なソフトウェアの人はすぐに使えない。使いたくない

Page 16: PYNQ 祭り: Pmod のプログラミング

じゃすぐに使える Pmod って何よ?• SPI

• GPIO

UART とかモータとかもあるみたいだ。手元にないから確認できない。

Digilent-Pmod_Interface_Specification.pdf

Page 17: PYNQ 祭り: Pmod のプログラミング

GPIO

16進のキーパッド

HP 16 C アゲイン !!

Wikipedia から

Page 18: PYNQ 祭り: Pmod のプログラミング

Ambient Light Sensor(SPI)

なんかのセンサー何に使うか不明

Page 19: PYNQ 祭り: Pmod のプログラミング

OLED(SPI)

128 x 32 Pixel グラフィック表示可能

詳しい使い方は FPGA マガジン No.16 みてねPYNQ じゃないけど

Page 20: PYNQ 祭り: Pmod のプログラミング

おまけ定規も買ってみた(なくしたので画像はウェブから)

http://store.digilentinc.com/digilent-pcb-ruler/

ただの無駄遣い報告になっていませんか? 心配するな。今から使う。3/2( 木 ) AM 0:28 記す

Page 21: PYNQ 祭り: Pmod のプログラミング

無駄使いの報告なら実はまだまだある

Page 22: PYNQ 祭り: Pmod のプログラミング

Jupyter だからすぐに使えるpynq というホスト名

Samba で名前解決をしているただし、 IP 直接の方が安定している。

Page 23: PYNQ 祭り: Pmod のプログラミング

いろいろサンプルが“すぐ”使える

ALS のサンプル発見

Page 24: PYNQ 祭り: Pmod のプログラミング

ALS のサンプル

当然 Python で書かれている

Page 25: PYNQ 祭り: Pmod のプログラミング

とりあえずシャットダウンたぶん、活性挿抜はできない

ソフト屋さんはこういうところを慎重にしよう取り扱いを間違えると100 万超の CPU を瞬殺することも

Page 26: PYNQ 祭り: Pmod のプログラミング

装着するPMODBをつかう

12 ピンの上に装着

Page 27: PYNQ 祭り: Pmod のプログラミング

Python のコードを実行ボタンをクリックすることで順次実行

実行中は [*] マーク終了すると [1] などの数字

Mathmatica 風

Page 28: PYNQ 祭り: Pmod のプログラミング

結果をグラフ化できる

部屋の電気オン部屋の電気オフ

ALS は照明などの周りの明るさを感知するセンサーだった

TeX とかとも連携できるらしいぞ

Page 29: PYNQ 祭り: Pmod のプログラミング

後始末動作中

クリックで終了

Page 30: PYNQ 祭り: Pmod のプログラミング

Python としてのポイント

FPGA のバイナリをダウンロードPmod_ALS を

PMODB に

センサーから読み込む

Page 31: PYNQ 祭り: Pmod のプログラミング

一気にはやって一気に儲けている人の特徴

「 Python で簡単に FPGA を使いたい」のポイント• 誰かがつくった FPGA のバイナリを使用– ビットストリーム?←きにしない

• 誰かがつくった Python のライブラリを使用– Pmod_ASL (PYNQ で標準に用意されている )

• 目的に集中– だって「やりたいことは L チカじゃない。」

ちまちまとフルスクラッチ

Page 32: PYNQ 祭り: Pmod のプログラミング

OLED も使う

OLED もライブラリがあらかじめある

Page 33: PYNQ 祭り: Pmod のプログラミング

チャレンジ

物理的にかちあって直接は装着できず

Page 34: PYNQ 祭り: Pmod のプログラミング

マニュアルも見ずに書き始める

Python のシンタックスエラーを教えてくれる

Page 35: PYNQ 祭り: Pmod のプログラミング

そもそもライブラリがない

Pmod_GPIO なんてライブラリはない

Page 36: PYNQ 祭り: Pmod のプログラミング

Pmod_IO を使う

Pmod_IO を使うとなんとなく GPIO をアクセスできているようだ

Page 37: PYNQ 祭り: Pmod のプログラミング

達成できず (時間切れ )

Page 38: PYNQ 祭り: Pmod のプログラミング

Verilog のコードは見つけた

でも「やりたいことは それじゃない。」

Page 39: PYNQ 祭り: Pmod のプログラミング

ここまでのまとめALS ライブラリあり 〇 つかえたOLED ライブラリあり 〇 つかえたI2C ライブラリあり △ 物理的にコネクタ干渉キーパッド ライブラリ無し (GPIO はあ

る )

× 断念I2S ライブラリ無し × Audio Out を使おう

Page 40: PYNQ 祭り: Pmod のプログラミング

そういえば Arduino 互換のピンがある

Arudino 互換

Page 41: PYNQ 祭り: Pmod のプログラミング

よくみるとちょっと違う

気にしないことにする (調べてないだけ )

Page 42: PYNQ 祭り: Pmod のプログラミング

手元にあった Vocaloid のシールドをつけてみた

装着しただけ。出来そうだったけど PYNQ の UART のボーレートが9600 固定でうまく通信できず

Page 43: PYNQ 祭り: Pmod のプログラミング

Python で何がしたい?• 過去の無駄遣いの悔いを改めたい• IoT?• Deep Learning?

ただし特定の技術にロックはされたくないVer

ilog 書きたくない

回路図をみたくない

Page 44: PYNQ 祭り: Pmod のプログラミング

Python で何がしたい?• 過去の無駄遣いの悔いを改めたい• IoT?• Deep Learning?

ただし特定の技術にロックはされたくないVer

ilog 書きたくない

回路図をみたくない

PYNQ (FPGA) はRaspberry PI や Arduino と何が違う?

Page 45: PYNQ 祭り: Pmod のプログラミング

PYNQ vs Raspberry PI

• PYNQ • Raspberry PI

ARM SoCARM SoC FPGA

u-boot & Linuxu-boot & Linux

Linux Driver Linux Driver

Python Python

やりたいこと やりたいこと

値段とか消費電力とか入手性とかを無視して、ソフト的にざっくりと比較コミュニティの大きさ(情報の入りやすさ)もだいぶ違うけど、、、

Page 46: PYNQ 祭り: Pmod のプログラミング

FPGA の優位性• PYNQ • Raspberry PI

ARM SoCARM SoC FPGA

u-boot & Linuxu-boot & Linux

Linux Driver Linux Driver

Python Python

やりたいこと やりたいこと ここをつくると優位性あり

Page 47: PYNQ 祭り: Pmod のプログラミング

FPGA は難しい• PYNQ • Raspberry PI

ARM SoCARM SoC FPGA

u-boot & Linuxu-boot & Linux

Linux Driver Linux Driver

Python Python

やりたいこと やりたいこと

この辺は難しすぎてつくれん !!

Page 48: PYNQ 祭り: Pmod のプログラミング

だったら高位合成だ !!

• Vivado HLS/SDSoC• 高位合成の友の会– Polyphony– Veriloggen– Neon Light + IROHA– Synthesijer– Sigboost– Synverll

C/C++(Xilinx 純正 )

Python の高位合成Python の高位合成独自言語の高位合成

Java の高位合成

たぶんプレゼンテーションはこの辺で時間切れのはず

プロの音楽家用の高位合成LLVM を使った高位合成

Page 49: PYNQ 祭り: Pmod のプログラミング

:Python による高位合成• Polyphony– Python から Verilog 生成– HDL 知識必要なし– オープンソース

ここからは若干手前味噌な CM が含まれています。

広告

Page 50: PYNQ 祭り: Pmod のプログラミング

つかってみる ~その 1~L チカも簡単

Page 51: PYNQ 祭り: Pmod のプログラミング

つかってみる ~その 2~Jupyter からも使えたよ

http://qiita.com/ryos36/items/56ff8270674b0d0c72b8

Page 52: PYNQ 祭り: Pmod のプログラミング

つかってみる ~その 3~SPIもほらこのとおり

Page 53: PYNQ 祭り: Pmod のプログラミング

Vivado にも読み込めた

Page 54: PYNQ 祭り: Pmod のプログラミング

Polyphony を使うと

ARM SoC FPGA

Python

やりたいことやりたいことの大半がPython で可能

Page 55: PYNQ 祭り: Pmod のプログラミング

Polyphony のこれから• チュートリアルの充実– polyphony.tech という ドメインも取得した

• 早稲田大学で講演するよ• CNN への対応– Deep Learning やるよ !!

Page 56: PYNQ 祭り: Pmod のプログラミング

おしまい