30 |
BSVにおけるコマンドバッファ制御 |
外部投稿記事において、2つのFSM(Finite State Machine)の調停を図るコマンドバッファOneStageを設計しました。このコマンドバッファもFSMであり、GameFSMからくるサウンドコマンドを一時保持し、SoundFSMがそれを引き取り当該サウンドを鳴らすというものです。実際には中間バッファは省略し、制御のみでコマンドバッファ制御を実行しています。

実はBSVはこのような調停の仕組みを自動で持っていて、bscはそれを自動生成することができます。ChatGPTの助けを借りて、これを実装します。
また、中間バッファとしてFIFOが必要かどうかも助言を受けます。以前の記事中にあるとおり、FIFOは付ければ良いというものではなく、付ければ付けるほど遅延が大きくなります。
なるべくSoundFSMがbusyとなることを避けるため、基本的には全てのコマンドをプリエンプティブにしています。これは割り込み可能ということで、サウンド演奏中にコマンドが入るとそれを検出し、最初から演奏するものです。
Leave a Comment