Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,967 views

Published on

PYNQ 祭りで発表した:Pmod をつかってみたという報告。Python による高位合成の Polyphony の話題も少し。

Published in: Technology

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

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

×