Raspberry PiとFPGAボードをUSBで接続し、Synthesijerで高位合成、IceStormで論理合成、配置配線、書き込みを行って、バッテリー駆動のRaspberry Pi単体のみで完全オープンソースのFPGAセルフ開発環境を構築します。
Raspbian Jessie (Desktop版) を下記のページに従ってダウンロード、SDカードにインストールします。
Download Raspbian for Raspberry Pi
Installing operating system images - Raspberry Pi Documentation
Raspberry Piをネットに接続して起動します。
自動的にX環境が起動するはずですが、もし起動しない場合は login:pi password:raspberry でログインして startx コマンドでX環境を起動します。
まず最初にファイルシステム容量をSDカードの最大値まで拡大します。
Menu→Preferences→Raspberry Pi Configuration を起動します。
System: Filesystem: Expand Filesystem をクリックします。しばらくするとダイアログが開くのでOKをクリックします。
「OK」で閉じてリブートします。
再起動後、ターミナルで、
パッケージ情報をアップデートします。
sudo apt-get update
日本語フォントとインプットメソッドをインストールします。
sudo apt-get install fonts-vlgothic uim uim-anthy
Menu→Preferences→Raspberry Pi Configuration を起動し、以下のように設定します。
Localisation: Locale: Set Locale
Language: ja (Japanese)
Country: JP (Japan)
Character Set: UTF-8
Timezone: Set Timezone
Area: Japan
Keyboard: Set Keyboard
Country: Japan
Variant: Japanese
WiFi Country: Set WiFi Country
Country: JP Japan
「OK」で閉じてリブートします。
次に、USBキーボードをRPiに接続した状態でローカル作業でキーボードレイアウトの設定を行います。
ターミナルで、
sudo dpkg-reconfigure keyboard-configuration
キーボードモデル:標準 105 キー (国際) PC
キーボードのレイアウト:その他
キーボードが由来する国:日本語
キーボードのレイアウト:日本語
AltGr として機能させるキー:キーボード配置のデフォルト
コンポーズキー:コンポーズキーなし
X サーバを強制終了するのに Control+Alt+Backspace を使いますか?:はい
コンソール時に英語表示にする設定にします。
nano ~/.bashrc
ファイル末尾に追加します。
「高位合成ツール「Synthesijer」を使う」の方法でSynthesijerをインストールします。「※Ubuntu14.10以降の場合」の方法でOKです。
「Project IceStorm」の「Where are the Tools? How to install?」の手順でインストールしますが、デスクトップモードではメモリが足りなくなる場合があるので、先に「git clone 〜」の作業だけデスクトップモードで済ませておき、その後コンソールモードに切り替えてからコンパイルします。
icestorm、arachne-pnr、yosysをgit cloneした後、
Menu→設定→Raspberry Piの設定 で、以下のように設定してリブートし、コンソールモードで起動します。
システム:ブート:CLI
パフォーマンス:GPUメモリ:16
この状態でmake、sudo make installの作業を行います。
Yosysのコンパイル中にABCがダウンロードされるので、コンパイルはネットワークに接続した状態で行ってください。
コンパイルにはかなり時間がかかります。(数時間以上)
完了したら「startx」コマンドでデスクトップモードに戻ります。
Menu→設定→Raspberry Piの設定を元に戻しておきます。
システム:ブート:デスクトップ
パフォーマンス:GPUメモリ:64
53-lattice-ftdi.rules も忘れずに作ってください。
sudo rnano /etc/udev/rules.d/53-lattice-ftdi.rules
「Icarus Verilogコンパイラを使う」の方法でシミュレーターと波形ビューワをインストールします。
ダウンロード:led_array_example_ice40hx8k.tar.gz
tar xzf led_array_example_ice40hx8k.tar.gz
SynthesijerでjavaプログラムをVerilog HDLファイルにコンパイルします。
cd led_array_example_ice40hx8k
make
論理合成、配置配線、ビットストリームの出力を行います。
cd ice40hx8k
make
FPGAボードをUSBで接続してビットストリームを転送します。
iCE40HX-8K Breakout Boardはプログラミングモードをボード上のジャンパ設定でSPI FlashもしくはCRAMに切り替えることができます。iCE40-HX8K Breakout Board User's Guide(PDF)でジャンパ設定を確認してください。
通常、開発時には直接CRAMへ転送しますが、SPI Flashに書き込むとボード単体で動作させることができます。
このプロジェクトのMakefileでは、SPI Flashへは
(led_array_example_ice40hx8k/ice40hx8k ディレクトリで)
make prog
CRAMへは
make prog-ram
で転送できます。(モードを間違えないように気をつけてください)
上記ビデオで使用している小型タッチパネルは「Waveshare 3.5inch RPi LCD (A)」です。
このLCDはSPI接続なので画面書き換えは速くありませんし、GPIOも他に使用できなくなってしまいますが、小型で安価なのが特徴です。
Raspbian Jessieで使用するためには「Waveshare Wiki」にある「LCD-show-151020.tar.gz for 2015-09-24-raspbian-jessie」ドライバを使用する必要があります。
スクリーンキーボードは
sudo apt-get install xvkbd
でインストールできます。
デスクトップにランチャーを作っておくと単体で操作できて便利です。
nano ~/Desktop/xvkbd.desktop