tinyFPGA-BX boardを購入
最初書き込み方がよくわからなかったのと、tutorialがAtom使ってたが
結局Terminalから全部できたのでそれでいく
環境は
Mac OS Mojave
Python3.7.0 (書き込みソフトのインストールにPythonが必要です, 3系でないとだめかも)
基本的には下記公式なチュートリアル通り
TinyFPGA BX User Guide
ツールをインストールしていく
- APIOとtinyprogのインストール
- Terminalを開いて、pipでインストールした後にapioコマンドで必要なツールもインストールしておく
- Macでターミナルを起動する方法
-
Pythonのパッケージ管理システムpipの使い方 | note.nkmk.me
- pipはPythonをインストールするときに一緒にインストールするはずなのでそれつかいます
$ pip install -U apio
$ pip install tinyprog
$ apio install system scons icestorm iverilog
$ apio drivers --serial-enable
途中, apio install のところで
Warning: full platform does not match: darwin_x86_64
Trying OS name: darwin
みたいなのでたけど一応
Package 'iverilog' has been successfully installed!
みたいな感じでsuccessfullyとは出てきたのでとりあえず大丈夫だった
TinyFPGA-BXボードを接続して認識するか確認
TinyFPGA-BXボードにマイクロUSB経由でMacに接続したら、ターミナルを開いてbootloaderが反応するか$ tinyprog --update-bootloader
と打ち込んでみて試してみる
まず、TinyFPGAをMacにUSBケーブルで接続していない場合は下記のように結果が出力されました
$ tinyprog --update-bootloader
TinyProg CLI
------------
Using device id 1d50:6130
No port was specified and no active bootloaders found.
Activate bootloader by pressing the reset button.
TinyFPGAを接続している場合は下記のように出た
$ tinyprog --update-bootloader
TinyProg CLI
------------
Using device id 1d50:6130
Only one board with active bootloader, using it.
All connected and active boards are up to date!
Atomのインストールは無視でよい
公式のチュートリアルではエディタとしてAtom使っていてそこから書き込みとかコマンド打てるって書いてあったが
自分がPythonをvenvで入れていて環境合わせるのが面倒だったのと
とりあえず書き込みやverilogファイルのコンパイルならTerminalつかったほうが早かったのでそのままおこなった
TinyFPGA BX Repositoryからファイルをダウンロードして解答する、適当なディレクトリに置いておく
apio_templateってフォルダが出てくるので、ターミナルでそこまでcdコマンドで移動しておく
apio_templateの中身は
$ tree apio_template
apio_template/
├── apio.ini
├── install_apio.bat
├── install_apio.sh
├── pins.pcf
└── top.v
のようになっているはずなので
apio_templateのディレクトリで$ apio build
とコマンドを打つとbuildがはじまって、成功すると最後にSUCCESSみたいなのが出てくる
$ apio build
[Thu Feb 7 22:19:39 2019] Processing TinyFPGA-BX
--------------------------------------------------------------------------------------------------------------------------------------------
yosys -p "synth_ice40 -blif hardware.blif" -q top.v
arachne-pnr -d 8k -P cm81 -p pins.pcf -o hardware.asc -q hardware.blif
pins.pcf:41: warning: no port `PIN_1' in top-level module `top',
...
...
icepack hardware.asc hardware.bin
======================================================= [SUCCESS] Took 3.88 seconds =======================================================
途中、PIN_1とかPIN_2とか使ってませんよ~みたいなwarningが出てくるけど無視して大丈夫です
build後のディレクトリ構成が下記
.
├── apio.ini
├── hardware.asc
├── hardware.bin
├── hardware.blif
├── install_apio.bat
├── install_apio.sh
├── pins.pcf
└── top.v
buildして出てきた hardware.bin
ファイルを書き込みます
TinyFPGAをUSBケーブルでMacに接続して
$ tinyprog --update-bootloader
$ tinyprog -p hardware.bin
TinyProg CLI
------------
Using device id 1d50:6130
Only one board with active bootloader, using it.
Programming USB 20.5 with hardware.bin
Programming at addr 028000
Waking up SPI flash
135100 bytes to program
Erasing: 100%|████████████████████████████████████████████████████████████████████████████████████████| 135k/135k [00:00<00:00, 166kB/s]
Writing: 100%|████████████████████████████████████████████████████████████████████████████████████████| 135k/135k [00:00<00:00, 194kB/s]
Reading: 100%|████████████████████████████████████████████████████████████████████████████████████████| 135k/135k [00:00<00:00, 365kB/s]
Success!
のように出てきたら書き込み成功!
TinyFPGA上のボード上LEDがいろいろなパターンで点滅開始したら成功です
蛇足: 必要なツールについて調べたこと
- APIO and tinyprog
- APIO
- open source FPGAのtoolchainやFPGA上でのプログラムデザインを使いやすくするツール
- FPGAwars/apio: Open source ecosystem for open FPGA boards
- FPGAwars/apio-ide: Experimental open FPGA IDE using Atom and Apio
- An open source ecosystem for IoT development · PlatformIO
- PlatformIOはopen source ecosystem for IOT development
- 橋本商会 » PlatformIOでArduino開発する
- パッケージマネージャ兼ビルドツール?
- 本体はPythonで書かれているらしい
- pythonを使って、pipでインストールするっぽい?
- 別に公式からインストールしてもよさそう
- オフラインで開発できる、IoT関係ようのIDEだったり環境だったりってことなのかな
- ArduinoIDEが使いにくいからって乗り換えてる人もいる
- 組み込み系のクロスコンパイル環境なのか
- VScode用もあるみたい
- Quick Start — apio 0.3.5 documentation
- という、Platformioが元となった環境があって、それを元にFPGA開発していくのかな?
- verilog designsとかもできるらしい
- main packagesは
- icestorm
- Project IceStorm
- iCE40 FPGAsを開発するためのツール?
- bitstream filesが作成できる?
- 第1回FPGAスタートアップセミナーで「完全オープンソースHDL合成とForthマシン実装」というLTをした話 – その他ブログ
- HDL合成ツール
- 完全オープンソース
- さらに、icestudioというツールを使うとGUIで回路設計をしてIceStormを使って合成できるらしい
- icarus verilog
- ZEROからのFPGA : Icarus Verilogコンパイラを使う
- オープンソースのVerilogコンパイラ&シミュレーター
- Verilog HDLの学習に適している
- scons
- SCons - Wikipedia
- open source software build tool
- 古典的なmakeユーティリティの代替
- tinyprog
- Luke Valenty on Twitter: "tinyprog version 1.0.0 is now available on PyPI! tinyprog works with the new TinyFPGA Bootloader in the TinyFPGA BX. It is faster, more reliable, and easier to use than the old bootloader and programmer. https://t.co/AX5sgiAhFd"
- tinyfpga/TinyFPGA-Bootloader: An open source USB bootloader for FPGAs
- APIO