Analogue Pocketが本格的なMP3プレーヤーに! FPGA内のRISC-V CPUで音楽をソフトウェアデコードするopenFPGAコアが登場

Analogue Pocketが本格的なMP3プレーヤーに! FPGA内のRISC-V CPUで音楽をソフトウェアデコードするopenFPGAコアが登場

Analogue Pocket(アナログポケット)を本格的な音楽プレーヤーとして利用できるopenFPGAコア『MP3 Player』v1.1.0が、HarpMudd氏よりリリースされました。

●MP3 Player — Analogue Pocket
https://github.com/harpmudd/HarpMudd.mp3player

このコアでは、microSDカードに保存したMP3ファイルやM3U形式のプレイリストを読み込み、Analogue Pocket本体で音楽を再生することができます。

単にMP3が再生できるだけではなく、ID3タグから取得した曲名やアーティスト名、JPEG形式のジャケット画像を画面に表示。再生時間を示すプログレスバーに加えて、バー、ウォーターフォール、オシロスコープ、アナログVUメーターなど、9種類のメーター表示も用意されています。

イコライザーは「FLAT」「BASS」「ROCK」「POP」「JAZZ」「CLASSICAL」「VOCAL」「TREBLE」の8種類。リピート、シャッフル、曲送り、早送り・巻き戻し、再生位置のレジューム、12色のアクセントカラー切り替えなどにも対応しており、携帯音楽プレーヤーとして一通りの機能がそろっています。

また、音声コンテンツ向けに1.2倍速再生も搭載。再生速度を上げると音程も高くなるため音楽向きではありませんが、ポッドキャストやオーディオブックを聴くときに利用できます。

FPGAの中にRISC-V CPUを作ってMP3を再生

このコアでとくに面白いのが、MP3を再生する仕組みです。

Analogue PocketにはMP3専用のデコーダーチップが搭載されていません。そこで『MP3 Player』では、Analogue PocketのFPGA内に60MHzで動作するRISC-VのソフトCPU「VexRiscv」を構築。そのCPU上でHelix MP3 Decoderを動かし、MP3をソフトウェアでデコードしています。

一方、デコードした音声を受け取るオーディオキューやイコライザーはハードウェアとして実装されています。また、画面描画もCPUが直接ピクセルを書き込むのではなく、専用のフレームバッファエンジンに描画命令を送る方式を採用。画面描画によってMP3のデコード処理が圧迫され、音声にジッターが発生することを防いでいるとのこと。

開発時には別のRISC-V CPU「PicoRV32」もテストされましたが、リアルタイムデコードには114~351MHzが必要で、Analogue Pocketでは実用にならなかったそうです。これに対してVexRiscvは、シミュレーション上では約46MHzからリアルタイム再生が可能で、60MHz動作でも余裕を確保できました。

ちなみに、Analogue Pocket向けのMP3プレーヤーコアとしては、neoge氏が2026年7月にリリースしたPure-HDL方式の『MP3 Player』がすでに存在します。今回のコアはそれとは別のプロジェクトで、RISC-V CPUによるソフトウェアデコードと、ジャケット表示やイコライザー、レジュームなどの多機能なUIが特徴です。

インストール方法

手動でインストールする場合は、GitHubで配布されている「Cores」「Platforms」「Assets」の各フォルダーを、Analogue PocketのmicroSDカード直下にコピーします。また、コアの起動にはファームウェアにあたる「mp3player.rom」が必要です。

MP3ファイルはmicroSDカード内のどこに置いても読み込めますが、公式の説明では次のフォルダーが推奨されています。

/Assets/mp3player/common/

同じフォルダーに「playlist.m3u」を置いておくと、コアの起動時にプレイリストの先頭から自動的に再生が始まります。プレイリストは最大128曲、またはM3Uファイルの容量が16KBに達するまで利用可能です。

対応形式はMPEG-1 Layer IIIのCBR/VBRで、標準的なビットレートとサンプリングレート、モノラル/ステレオに対応しています。一方で、MPEG-2/2.5やLayer I/IIには対応していません。ジャケット画像もJPEGのみで、PNG画像は表示されないので注意が必要です。

画面を一定時間後に黒くするスクリーンブランク機能も用意されていますが、これは液晶の表示を黒くするだけでバックライトを消すものではなく、バッテリーの節約効果はありません。

ゲーム機やコンピューターを再現することが多いopenFPGAですが、今回はFPGA内に新たなCPUを作り、その上で音楽再生ソフトを動かすという少し変わったアプローチが採用されています。Analogue Pocketの可能性を、ゲーム以外の方向に広げるユニークなコアといえそうです。

●openFPGA Library
https://openfpga-library.github.io/analogue-pocket/

via. Reddit

ABOUT US
アバター画像
retrogamer