2019年10月3日木曜日

FPGAマイニングをやってみて

ここまでVivadoの勉強をしたりして随分遠回りしてしまった。
本来の目的の一つ、PYNQ-Z1ボードを使ったマイニングに取り掛かる。


FPGAのソースコードは、ここからリンクを辿りGithubへ行きGETする。

Vivadoで新しいプロジェクトを作成して、自作IPを作る。そしてソースファイルを追加したり、修正したりしてIPを完成させる。
次にブロックデザインに自作したIPを追加してコネクションする。この時、自作IPのクロックは、「クロックウィザード」を経由して供給。こうしないとIPのクロックとLPのクロックが合わなくてエラーになるので。
Generate Output Product、Create HDL Wrapperを実行して、最後にGenerate Bitstream、Export HardwareでFPGAのHWが完成。Lanch SDKして、プロジェクトを作る。

このあと、Linuxでの作業に入る。上記のSDKをフォルダー丸ごとSCP。
そしてVivadoの練習でやったように、VirtualBoxでpetalinux-createしてプロジェクトを作成。
petalinux-config、petalinux-build、petalinux-packageと続く。
出来上がったBOOT.BINとimage.ubをSDカードのMSDOSパーティッション側に書き込む。これでFPGAにマイニング回路が組み込まれるようになる。

なお、練習ではrootfsのビルドからSDへの書き込みまでやっているが、この作業は不要。
petalinux自体がbusyboxをベースにしているものらしく、コマンドが貧弱すぎて使えない。代わりに一番最初のPYNQ-Z1動作確認に使ったisoイメージの中の物を使う。これはubuntuが入っていて、Linuxが普通に使える。
したがってext4パーティッション側のみ、isoイメージのrootfsを書き込む。(実際にはisoイメージを書き込むと、SDが全て書き換えられてしまう。だから、もう一度上記のVirtualBoxで作ったBOOT.BINとimage.ubを書き込むこととなった。)
ブートがbusyboxベースのLinuxでツールなどの入っているrootfsがubuntuなので心配にもなったが、問題なかった。
この記事が参考になった)

最後にSDカードでPYNQ-Z1を起動し、ここからマイニングソフトを取得しREADMEに書かれているようにビルドする。

これでビットコイン専用のFPGAマイニングマシンが完成。


さあ、マイニングを始めるぞ!!とWalletやプールマイニングの準備をするのだが、、、なんと、すでに旬な時期は過ぎていたようで、プールマイニングでビットコインが見当たらない。なんてことだろう。

すでにビットコインは8割以上採掘済みだし、ASICマイニングの圧倒的パワーに押されて見向きもされなくなったということのようだ。

他の仮想通貨をマイニングするとなると、本腰を入れてVerilogでコーディングしなければならない。しかし、今はそんな時間的余裕がない。

ひとまずFPGAはここまでにして、テスラ スイッチの方に取り掛かってみたいと思う。
電気代がタダなら、GPUマイニングが可能になるのでまだまだ諦めずに頑張ってみる。

今回、FPGAマイニングとはどういうものなのかについて、とても勉強になったし、この貴重な情報ソース・貴重な体験を与えてくださったBOSUKEさんには感謝です。