Skip to content

Instantly share code, notes, and snippets.

@voluntas
Last active July 8, 2018 04:59
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save voluntas/ef64fc22a6fccce01cfb172298b05e4e to your computer and use it in GitHub Desktop.
Save voluntas/ef64fc22a6fccce01cfb172298b05e4e to your computer and use it in GitHub Desktop.
PYNQ-Z1 コトハジメ

PYNQ-Z1 コトハジメ

日時

2018-03-31

@voluntas

バージョン

18.3.5

URL

https://voluntas.github.io/

突っ込みは Twitter @voluntas まで。

概要

Python で触れる ARM + FPGA である PYNQ-Z1 を購入して FPGA の勉強をはじめました。

PYNQ - Python productivity for Zynq - Home

前提

著者はプログラムが書ける程度で、ハードウェアについてはまったくわかりません。 CPU を作る知識もないため、そこから学んでいくための取っ掛かりとして PYNQ-Z1 を触っています。

機械学習系には全く興味がないので、そちらについては一切触れません。

ゴールまでの距離は遠いと感じており、数年かけて学んでいこうと考えています。

ゴール

FPGA を利用したビジネスを立ち上げる。

購入

PYNQ-Z1 Python Productivity for Zynq - Digilent

こちらから、PYNQ-Z1+ Accessory Kit というのを選んで買いました。

Plexiglass Covers: Recommended Addition for the PYNQ-Z1 - Digilent

ケースもあったほうが良さそうなので、ケースもセットで。支払いはペイパルを利用しました。

台湾から東京まで 3 日程度で届きました。

環境

  • MacBook Pro (Retina, 13-inch, Mid 2014)
    • かなり古いです
    • 10.13.4
  • Apple Thunderbolt - ギガビット Ethernet アダプタ
    • インターネット共有を利用しています

セットアップ

まずは最新のイメージをダウンロードしました。

http://files.digilent.com/Products/PYNQ/pynq_z1_v2.1.img.zip

その後、アクセサリーキット付属の SD カードに対して、書き込みを行いました。

$ diskutil unmountDisk /dev/disk2
$ sudo dd bs=1m if=pynq_z1_v2.1.img of=/dev/rdisk2

あとはファインダーからアンマウントして、PYNQ に差し込みます。

  • ジャンパスイッチを SD にする
  • ジャンパスイッチを REG にする

これで準備は完了です。

起動

LAN ケーブルと電源を差し込んだら、色々待ちます。

$ ssh xilinx@192.168.2.99

パスワードは xilinx です。

Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.9.0-xilinx armv7l)

 * Documentation:  https://help.ubuntu.com/
Last login: Wed Feb 14 21:14:37 2018 from 192.168.2.1
xilinx@pynq:~$

これで無事起動しました。

jupyter

http://192.168.2.99:9090/tree? にアクセスすれば使えるようになります

Lチカ

あぁ、これが噂の L チカかと思いとりあえず。

import time
from pynq.overlays.base import BaseOverlay

base = BaseOverlay("base.bit")
led0 = base.leds[0]

for i in range(5):
    led0.on()
    time.sleep(0.5)
    led0.off()
    time.sleep(0.5)

on/off を 0.5 秒間隔で 5 会。led0 というのは base.leds から取れる。 BaseOverlay の意味はまったくわからないので調べる。

書籍

自分がこれは良さそうと思ったものを並べてるだけです

英語

日本語

資料

自分が調べたサイトを羅列しているだけです

英語

日本語

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment