商品タイプで探す

Designers' Tips

2026年01月15日号

技術で探す

著者/講師で探す

Access:71

1万円FPGAキットで始めるRISC-V CPUの設計

コンピュータ対戦型Tic-Tac-Toeゲームの製作

Efinix社のFPGAはTrionとTitaniumシリーズを展開し,Quantumファブリック技術で効率的なロジック再構成を実現し,超小型のXyloniボードは趣味の電子工作や実験に最適でRISC 〈著:圓山 宗智〉 出典:米国 Efinix社製 FPGAスタータキット “Xyloni”入門[RISC-V編]
画像クリックで動画を見る.または記事を読む

Efinix社のFPGAとQuantumファブリック技術

Efinix社は2012年に設立された米国の新興FPGAメーカです.主力製品としてTrionシリーズとTitaniumシリーズのFPGAを展開しています.TrionシリーズはモバイルやIoT向けの小ー中規模FPGAで,40nmプロセスで製造されています.内部はQuantumテクノロジをベースにしたプログラマブル・ロジックとルーティング配線から構成され,内蔵メモリや乗算ブロックも備えています.I/OインターフェースはLVTTLに加え,MIPI,LVDS,DDRなど多様な規格をサポートします.

Trionシリーズの特徴の1つがMPM(Mask Program Memory)です.通常FPGAのコンフィグレーション・データは外部のシリアル・フラッシュ・メモリに格納しますが,MPMはFPGA内部のオンチップ・マスクROMに記憶します.これにより低コスト化と部品点数削減が可能となり,大量生産に適した構成になります.パッケージはFBGAとLQFPが用意されています.

Quantumファブリックは従来のFPGAとは異なり,ロジックセルと配線スイッチを独立させず,XLR(eXchangeable Logic and Routing)セルで統合しています.XLRセルはLUTベースのロジックセルと配線スイッチの両方として機能し,ゲート過多や配線過多の設計に対して柔軟にリソースを再構成できます.さらに単一のLUTを分割したり加算器やシフトレジスタに設定したりと,多様な機能に変化可能です.

この構造によりQuantumファブリックは面積を1/2ー1/4に削減し,消費電力も1/2以下に抑えられます.100万LE以上の拡張性や幅広なデータ・バス構成,パイプライン化も容易です.すべてCMOSパス・ゲートで実現し,シリコンプロセスに依存しない点も大きな特徴です.Efinix社はFPGAブロックをIPコアとしてSoCベンダに提供し,柔軟なSoC設計を支援しています.

超小型開発ボードXyloniとRISC-V CPU設計

Efinix社のTrion FPGA搭載の評価用ボードの中でも特に小型なのがXyloniボードです.サイズは50mm×33mmのマッチ箱大で,Trionシリーズの小規模品T8を搭載しています.81ボールのFBGAパッケージに7,384個のロジック・エレメント,77kbのメモリ,8個の18×18乗算器,5個のPLLを内蔵し,趣味の電子工作や簡単な実験に十分な性能をもちます.RISC-V Sapphire SoCも実装可能なため幅広い応用が期待できます.

本稿では,このXyloniボード上にRISC-V CPUコアを実装し,コンピュータ対戦型のTic-Tac-Toeゲームを制作します.ゲームはUARTを介してPCのターミナルソフトと通信し,人間がRISC-V CPUと対戦する形式です.Tic-Tac-Toeはすべての手が最適に打たれると必ず引き分けになる二人零和有限確定完全情報ゲームであり,MiniMax法による全探索が短時間で可能です.

RISC-Vで実現するMiniMax法によるTic-Tac-Toeゲーム

ゲーム盤面は9マスの1次元配列board[9]で管理します.左上を0,右下を8とし,人間の石は+1,CPUの石は-1,空きは0で表します.盤面表示はUART経由で行い,人間の石は“O”,CPUの石は“X”,空きは“-”で示します.UART通信は8N1,115,200bpsで設定します.

勝敗判定はWinner_Check()関数で行います.3連続同じ石が揃っているか判定し,人間の勝ちなら+1,CPUの勝ちなら-1,決着がなければ0を返します.CPUの思考ルーチンはMiniMax法を用いています.MiniMax法はゲーム木を再帰的に探索し,自分にとって最善の手を評価値で決定します.評価値は勝ちなら+100から深さ分を引いた値,負けなら-100に深さ分を足した値,引き分けは0です.再帰探索では手を仮に打ち,相手の最善手を想定して評価値を符号反転しながら戻します.

CPUの手を決めるMove_by_CPU()関数は,打てるすべての手を試しMiniMaxで評価値を求め,もっとも高い評価値の手を実際に盤面に反映します.人間の手はUARTからの入力で受け取り,空きマスなら盤面を更新します.ゲームはmain()関数で管理し,先攻後攻を選択した後,交互に手を進めて勝敗判定を行います.勝敗が決まるか盤面が埋まるまで繰り返します.

このプロジェクトはEfinity統合開発環境を用い,Xyloni_TicTacToe.cの1ファイルだけで構成されています.ビルド後のRAM使用量は約2.6KBで,Sapphire SoCのメモリ容量内に収まります.MiniMaxの再帰呼び出しは深さが浅いため,スタック領域も十分確保可能です.UARTを活用したシンプルな入出力とMiniMax法の組み合わせにより,RISC-V CPU上で効率的に3目並べゲームを実装できています.

〈ZEPマガジン〉

動画を見る,または記事を読む

参考文献

  1. [VOD/KIT]実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT/data]新人技術者のためのRISC-V CPU設計 初めの一歩,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]Zynqで初めてのFPGA×Linux I/O搭載カスタムSoC製作,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編&実践編】,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門,ZEPエンジニアリング株式会社.


Translate »