145
140

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FPGA開発環境をクラウド化した話

Last updated at Posted at 2016-03-09

要約

Googleクラウド上の仮想マシンでAltera Quartus PrimeによるFPGA開発&ビルドを行い、手元のFPGAボードとVPN経由でUSB接続して動かした話。4コア+15GBメモリの開発環境を1時間あたり50円以下で使え、使わないときはOFFにしておけて便利。

IMG_0292.JPG
DE0-Nano-SoCにブレッドボードと7セグ乗せたところ

3/11追記

keiさん情報によると、Xilinx Vivadoだとちょっと工夫するだけで同様のことができるらしい。最初っからX使っとけって話か。。

いきさつ

ひさびさにFPGAをさわりたくなってDE0-Nano-SoCを買ったのだけど、開発環境であるQuartusを動かすマシンをどうしようかと考えた。FPGAのビルドっておそろしく重いので、最低でも4コア+8GBメモリ程度のマシンが必要となる。

とはいえ、土日にちょろっと使う程度だし、もはや物理マシンを買って自宅に置いたりしたくない。クラウドの仮想マシンでQuartus動かしたい! というのがきっかけ。

GCEインスタンスの用意

まずはクラウド上に仮想マシン(インスタンス)を作成する。今回はGoogle Cloud PlatformのGoogle Compute Engine (GCE)を使った。GCEのインスタンス作成方法についてはこちらを見ていただくとして、今回は以下のような構成のインスタンスを作った。

Screen Shot 2016-03-09 at 1.00.29 PM.png

  • Windows Server 2012 R2 Datacenter Edition
  • CPU: 4コア
  • メモリ: 15GB
  • ストレージ: 100GB SSD
  • ゾーン: asia-east1-c

これまでずっとWindows環境でQuartusを使ってきたのと、リモートデスクトップ接続が簡単なので、今回はWindowsを選んだ。ただし、OSライセンスが月額$116.8かかるので、Linuxを選べばもっと安くなる(ただし、VNCによるリモートデスクトップ設定がちょっと面倒)。

Quartus Prime Lite Editionのインストール

GCE上のWindows環境とRDPでリモートデスクトップ接続を行い、デスクトップを開く。つづいてAlteraのダウンロードサイトからQuartus Prime Lite(無償版)をダウンロードしてインストール。これ、5GBあるので、2時間くらいかかった。

Screen Shot 2016-03-09 at 1.33.59 PM.png
GCE上でQuartusを動かす

Atlas SoCを試すも、断念

さて問題は、手元のFPGAとクラウド上のQuartusをどうやってつなぐかだ。普通はFPGAボードのUSBポートとPCをつないで、QuartusのProgrammerから設定データを流す。これをクラウド経由で実現したい。

Alteraが最近出している新しいSoC開発環境、Atlas SoCでは、FPGAの設定データをSDカードイメージとしてビルドできるので、クラウドでビルド→手元のFPGAにSDカードを挿して動かす、って流れが可能なはず。そこでちょっと試してみたけど、ビルドのエラーをどうしても解消できない。あきらめた。

USBデバイスサーバー+VPNで行くことにした

そこで今回は手っ取り早く、バッファローのUSBデバイスサーバーをポチって、FPGAボードにつないだ。あとは、クラウド上のGCEインスタンスと自宅LANの間をVPNで結ぶというもくろみ。

Screen Shot 2016-03-09 at 1.52.53 PM.png

もしくは、RasPiにVirtualHereとVPNを乗せる方法を使えばさらに安く上げられるかも。

SoftEtherでVPN構築

VPNの構築にはこれまで何回か使ったことのあるSoftEtherを使用することに。

GCE上にSoftEther VPN ServerとClientを作成

SoftEtherでVPNを構築するには、VPN Server上に仮想ハブを作成して、そこへVPN ClientやVPN Bridgeを接続してネットワークを構成する。まずは、GCE上にVPN Serverをインストール、仮想ハブを作成する。

Screen Shot 2016-03-09 at 1.59.00 PM.png

さらに、GCPの管理コンソールでNetwork - Firewall rulesを選択し、SoftEtherが使うTCPポートの穴を開けておく。

Screen Shot 2016-03-09 at 2.00.07 PM.png

さらに、GCEにはVPN Clientもインストールする。これで、GCE自体も仮想ハブに1台のマシンとして接続できる。

これでクラウド側のVPN設定はOK。

自宅のWindowsマシンにVPN Bridgeをインストール

一方、自宅側にはUSBデバイスサーバーとVPN間を中継するVPN Bridgeを用意する。そのためにはVPN Bridgeをインストールできる適当なマシンが1台必要となるのだけど、今回は手っ取り早く安いスティック型のWindows PCをポチることにした。LinuxやMacでも行けるはずだ。

Screen Shot 2016-03-09 at 2.02.50 PM.png

このWindows PCにVPN Bridgeをインストールして、先ほどの仮想ハブに接続する設定を行う。

Screen Shot 2016-03-09 at 2.08.15 PM.png

自宅からGCE、およびGCEから自宅へpingしてみて、VPNが開通していることを確認。

QuartusのProgrammerから使ってみる

GCE上でUSBデバイスサーバーの管理ツールを起動すると、DE0が認識された!

Screen Shot 2016-03-09 at 2.09.58 PM.png

さっそく使ってみよう。QuartusでLチカのコードを書いてビルドする。ちなみにQuartus Prime Liteでは3コアしか使えない制限があるらしい。有償版なら、もっと多くのコアを使ったビルドもできるはず。

ProgrammerでAuto Detectをクリックしてデバイスが認識されるのを待つ。出てきた出てきた。

Screen Shot 2016-03-09 at 2.11.28 PM.png

Startボタンをクリックすると、Successfulと表示され、手元のFPGAのLEDがチカチカした。やったぜ!

クラウドでFPGA開発しようぜ!

クラウドならば、1時間あたり50円以下で快適なFPGA開発環境を利用できる。プロフェッショナルな方はビルドに一晩かけたりされてるので、例えば16コア+50GBくらいの大きなインスタンスタイプを使えばビルド時間を短縮できるはず。使わないときは仮想マシンを止めておけばほとんどコストはかからないし。クラウドでFPGA開発やりましょう。


Disclaimer この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。

145
140
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
145
140

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?