ACRi ルームではリモートで FPGA を利用できる環境が提供されています。セットアップ済みの開発ツールを使ってすぐに FPGA 開発をはじめることができます。…と言われても、さて何からはじめてみよう、という人もいるかもしれません。身近な問題から FPGA に向くものを選んで実装するというのは (残念ながら) 簡単ではないので仕方ないことだと思います。
そこで、楽しく FPGA 開発をはじめてみる題材としてゲームを作ってみるのはいかがでしょう。この連載では、FPGA を使った○×ゲームを作ることを題材に FPGA 開発をはじめてみることにします。リソースは○×ゲームで FPGA 開発をはじめてみようにあります。
○×ゲーム
○×ゲームは二人のプレーヤーで遊ぶゲームです。3×3 のマスに交互に○と×の印を付け、縦、横、斜めの1ラインを先に作った方が勝ちです。
子供のときに遊んだ、という人も多いのではないでしょうか。
ACRi ルームの FPGA で○×ゲーム
ACRi ルームの FPGA は、シリアル通信 (UART) で開発サーバとの通信ができます。この UART を使って FPGA からゲーム盤面を出力、またユーザ入力を受け付けることにしましょう。
次のスクリーンショットが実際に遊んでいる様子です。ターミナルソフトウェアに FPGA から出力されている盤面が表示されていて、ユーザからの入力を待っています。
二種類の作り方
FPGA でゲームを作ろうとすると、大きく2つのアプローチが考えられます。
- FPGA 上のハードウェアとして実装する
- FPGA 上にプロセッサを実装して、その上のソフトウェアで実装する
○×ゲームで FPGA 開発をはじめてみようでは、1.のアプローチとして○×ゲームで FPGA 開発をはじめてみよう (RTL編)と○×ゲームで FPGA 開発をはじめてみよう (HLS編)を、2のアプローチとして○×ゲームで FPGA 開発をはじめてみよう (C編)を用意しています。
どちらからはじめても構いません。ただし、どのアプローチでも基本的な FPGA の開発ツールである Vivado を利用する必要があります。はじめて FPGA を使ってみる、という場合には、ツールの動作確認も兼ねて ○×ゲームで FPGA 開発をはじめてみよう (RTL編)の手順でツールに慣れことからはじめるのがおすすめです。
○×ゲーム作ってどうするの?
○×ゲームは単純な題材ですが、デザインしたロジックを合成と配置配線で FPGA 上で動作可能なビットストリームに変換して動作させる、という一連の開発フローに慣れるには適度な分量なのではないかと思います。一通り試してみるとツールの使い方や FPGA を使って何かを作るイメージが身近になることでしょう。
○×ゲームを動かしたら、たとえば、
- 3マスx3マスを5マスx5マスに拡張してみる
- 3目続きではなく5目続きを作るゲームに修正する
といった軽微な変更をしてみると、設計方法への理解が深まることでしょう。
また、
- モンテカルロなプレーヤを実装してみる
- ディープラーニングっぽい実装にしてみる
- 自分でプロセッサ (RISC-V とか) つくって動かしてみる
といった拡張をして楽しんでみようとすると、もう少し複雑な回路設計の挑戦することになります。
FPGA ベンダ (Xilinx) の提供するツールを使うばかりではなく、自分の好きなプログラミング言語を使って FPGA 上に○×ゲームを実装してみるのも楽しいかもしれません。
○×ゲームで FPGA 開発をはじめてみよう (Java編)は、Java で書いたプログラムを Synthesijer を使って FPGA 上のハードウェアにしてみる例です。
もちろん、もっと身近な題材をFPGA上の回路として実装するというステップに進んでもらえると嬉しいです。
次回予告
今回は、ACRi ルームで何をしてみようかな?という人向けに用意した○×ゲームで FPGA 開発をはじめてみようを紹介しました。是非試してみてください。次回は、FPGA の上で○×ゲームがどういう風に動いているかを紹介する予定です。
わさらぼ・みよしたけふみ