pynq 祭り: pmod のプログラミング
Post on 12-Apr-2017
670 Views
Preview:
TRANSCRIPT
Pmod のプログラミング( 有 ) シンビー
PYNQ 祭り 2017/3/4
自己紹介
著者です
PYNQ を使うモチベーション• Python で簡単に FPGA を使いたい
Python で簡単に FPGA を使いたい• Python を使う利点– 学習コスト低め– 資料がいっぱい– きれいにかける
• 簡単に !!– L チカも結構ハードル高い• やりたいことは L チカじゃない。
Python で簡単に FPGA を使いたい• FPGA 流行ってきてます?
いいものが手に入りましたぜ
おおこれ
は !!
FPGA 業界の怪しいやり取りの図
PYNQ の I/O• Pmod と Arudino 互換の I/O
Pmod
Arduino 互換
https://forums.xilinx.com/から借用
他のボードにも Pmod
http://store.digilentinc.com/ から借用
Pmod ってなに?• Peripheral modules らしい• ピン数の違うものがある
http://store.digilentinc.com/pmod-modules/から借用
PYNQ の Pmod
123456
789101112
基板上の配置も規約で決まっています
Digilent-Pmod_Interface_Specification.pdfから抜粋
Pmod 対応の機器• とりあえずいろいろ買ってみる ( 無目的に )
12Pin のSD カード用6 pin の I2S
Audio Out
6pin/12pin の Pmod は PYNQ で使用可能だが
Audio Outあるじゃん
Audio Out:I2S は PYNQ のデザインでサポートされていないようだSD の Pmod も対応されていない
FPGA だから工夫すれば使えます !! 純粋なソフトウェアの人はすぐに使えない。使いたくない
もう少し買ってみる
I2C の温度センサ I2C のなにか
I2C は 8pin の Pmod だった
FPGA だから工夫すれば使えます !! 純粋なソフトウェアの人はすぐに使えない。使いたくない
Digilent-Pmod_Interface_Specification.pdf
念のために PYNQ のデザイン確認
I2C 使えるような気がする
8pin をどうさしたらいいかわからない 純粋なソフトウェアの人はすぐに使えない。使いたくない
じゃすぐに使える Pmod って何よ?• SPI
• GPIO
UART とかモータとかもあるみたいだ。手元にないから確認できない。
Digilent-Pmod_Interface_Specification.pdf
GPIO
16進のキーパッド
HP 16 C アゲイン !!
Wikipedia から
Ambient Light Sensor(SPI)
なんかのセンサー何に使うか不明
OLED(SPI)
128 x 32 Pixel グラフィック表示可能
詳しい使い方は FPGA マガジン No.16 みてねPYNQ じゃないけど
おまけ定規も買ってみた(なくしたので画像はウェブから)
http://store.digilentinc.com/digilent-pcb-ruler/
ただの無駄遣い報告になっていませんか? 心配するな。今から使う。3/2( 木 ) AM 0:28 記す
無駄使いの報告なら実はまだまだある
Jupyter だからすぐに使えるpynq というホスト名
Samba で名前解決をしているただし、 IP 直接の方が安定している。
いろいろサンプルが“すぐ”使える
ALS のサンプル発見
ALS のサンプル
当然 Python で書かれている
とりあえずシャットダウンたぶん、活性挿抜はできない
ソフト屋さんはこういうところを慎重にしよう取り扱いを間違えると100 万超の CPU を瞬殺することも
装着するPMODBをつかう
12 ピンの上に装着
Python のコードを実行ボタンをクリックすることで順次実行
実行中は [*] マーク終了すると [1] などの数字
Mathmatica 風
結果をグラフ化できる
部屋の電気オン部屋の電気オフ
ALS は照明などの周りの明るさを感知するセンサーだった
TeX とかとも連携できるらしいぞ
後始末動作中
クリックで終了
Python としてのポイント
FPGA のバイナリをダウンロードPmod_ALS を
PMODB に
センサーから読み込む
一気にはやって一気に儲けている人の特徴
「 Python で簡単に FPGA を使いたい」のポイント• 誰かがつくった FPGA のバイナリを使用– ビットストリーム?←きにしない
• 誰かがつくった Python のライブラリを使用– Pmod_ASL (PYNQ で標準に用意されている )
• 目的に集中– だって「やりたいことは L チカじゃない。」
ちまちまとフルスクラッチ
OLED も使う
OLED もライブラリがあらかじめある
チャレンジ
物理的にかちあって直接は装着できず
マニュアルも見ずに書き始める
Python のシンタックスエラーを教えてくれる
そもそもライブラリがない
Pmod_GPIO なんてライブラリはない
Pmod_IO を使う
Pmod_IO を使うとなんとなく GPIO をアクセスできているようだ
達成できず (時間切れ )
Verilog のコードは見つけた
でも「やりたいことは それじゃない。」
ここまでのまとめALS ライブラリあり 〇 つかえたOLED ライブラリあり 〇 つかえたI2C ライブラリあり △ 物理的にコネクタ干渉キーパッド ライブラリ無し (GPIO はあ
る )
× 断念I2S ライブラリ無し × Audio Out を使おう
そういえば Arduino 互換のピンがある
Arudino 互換
よくみるとちょっと違う
気にしないことにする (調べてないだけ )
手元にあった Vocaloid のシールドをつけてみた
装着しただけ。出来そうだったけど PYNQ の UART のボーレートが9600 固定でうまく通信できず
Python で何がしたい?• 過去の無駄遣いの悔いを改めたい• IoT?• Deep Learning?
ただし特定の技術にロックはされたくないVer
ilog 書きたくない
回路図をみたくない
Python で何がしたい?• 過去の無駄遣いの悔いを改めたい• IoT?• Deep Learning?
ただし特定の技術にロックはされたくないVer
ilog 書きたくない
回路図をみたくない
PYNQ (FPGA) はRaspberry PI や Arduino と何が違う?
PYNQ vs Raspberry PI
• PYNQ • Raspberry PI
ARM SoCARM SoC FPGA
u-boot & Linuxu-boot & Linux
Linux Driver Linux Driver
Python Python
やりたいこと やりたいこと
値段とか消費電力とか入手性とかを無視して、ソフト的にざっくりと比較コミュニティの大きさ(情報の入りやすさ)もだいぶ違うけど、、、
FPGA の優位性• PYNQ • Raspberry PI
ARM SoCARM SoC FPGA
u-boot & Linuxu-boot & Linux
Linux Driver Linux Driver
Python Python
やりたいこと やりたいこと ここをつくると優位性あり
FPGA は難しい• PYNQ • Raspberry PI
ARM SoCARM SoC FPGA
u-boot & Linuxu-boot & Linux
Linux Driver Linux Driver
Python Python
やりたいこと やりたいこと
この辺は難しすぎてつくれん !!
だったら高位合成だ !!
• Vivado HLS/SDSoC• 高位合成の友の会– Polyphony– Veriloggen– Neon Light + IROHA– Synthesijer– Sigboost– Synverll
C/C++(Xilinx 純正 )
Python の高位合成Python の高位合成独自言語の高位合成
Java の高位合成
たぶんプレゼンテーションはこの辺で時間切れのはず
プロの音楽家用の高位合成LLVM を使った高位合成
:Python による高位合成• Polyphony– Python から Verilog 生成– HDL 知識必要なし– オープンソース
ここからは若干手前味噌な CM が含まれています。
広告
つかってみる ~その 1~L チカも簡単
つかってみる ~その 2~Jupyter からも使えたよ
http://qiita.com/ryos36/items/56ff8270674b0d0c72b8
つかってみる ~その 3~SPIもほらこのとおり
Vivado にも読み込めた
Polyphony を使うと
ARM SoC FPGA
Python
やりたいことやりたいことの大半がPython で可能
Polyphony のこれから• チュートリアルの充実– polyphony.tech という ドメインも取得した
• 早稲田大学で講演するよ• CNN への対応– Deep Learning やるよ !!
おしまい
top related