Skip to content

Releases: neoge/pocket-mp3

Pocket MP3 Player 0.3.2

Choose a tag to compare

@neoge neoge released this 09 Aug 13:47

First public release of the Pocket MP3 Player core.

The decoder is pure hardware. There is no soft CPU and no firmware. The core
reads the bit stream, decodes the Huffman data, requantizes it, does the stereo
processing, the IMDCT and the polyphase synthesis, and resamples the result —
all of it in SystemVerilog on the Cyclone V.

Install

Extract neoge.MP3Player_0.3.2_2026-07-19.zip to the root of the SD card. It
makes this tree:

/Cores/neoge.MP3Player/
/Platforms/pocketmp3.json
/Platforms/_images/pocketmp3.bin
/Assets/pocketmp3/common/        put your .mp3 files here

Then open openFPGA > Media > MP3 Player on the Pocket and select a file.
Playback starts automatically.

If the core does not appear in the menu, delete the files System/*cache*.bin
from the SD card. Then do a full power cycle. Sleep mode is not sufficient.

Features

  • MPEG-1 Layer III decoder, 32–320 kbps
  • 48 kHz plays natively; 44.1 kHz is resampled to 48 kHz
  • Mono, stereo, joint stereo (MS) and dual channel
  • Play, pause, stop, seek with acceleration, and repeat
  • ID3v2.3, ID3v2.4 and ID3v1 tags on screen
  • On-screen display with time, progress bar and codec data
  • File size up to 64 MB

Controls

Button Action
A Play / pause
B Stop
D-pad Left / Right Seek −10 s / +10 s
D-pad Up / Down Seek +20 s / −20 s
Select + D-pad Seek ±1 s
Start Repeat on / off
Seek key pressed again quickly The step becomes two times larger, up to ×32

Limits

  • MPEG-1 Layer III only. Layer I, Layer II, MPEG-2 and MPEG-2.5 do not play.
  • A 32 kHz file decodes, but it plays at the incorrect speed.
  • The track length and the seek position use a constant-bit-rate calculation. A
    VBR file thus shows an incorrect length, and the seek position is not accurate.
  • The core does not decode intensity stereo. It passes those bands through.
  • The core decodes a mixed block as a long block.
  • Sleep mode is not supported.

Resource use

9793 ALMs (53 %), 79 M10K blocks (26 %), 22 DSP blocks (33 %) and 1 PLL.

Checksum

SHA-256  b0c52fc7de497b092cbf603e242ce563e383cb282744cef42167dd0471ee8275