MP3 Player Project

I am thinking of building a fully functional mp3 player with an FPGA. I will appreciate any help if your guys can give me any suggestion. I want the design to be as original as possible. For example: I prefer to implement mp3 decoding mechanism inside an FPGA by myself, rather than purchasing an off the shelf mp3 decoder. My preliminary spec is a simple mp3 player with an FPGA, USB memory stick, an LCD display, a keypad and whatever other external components necessary to build a complete system.

  1. If I use USB memory stick, is it significantly more difficult than using IDE harddrive?
  2. Where can I download the mp3 specification and algorithm? Is it in public domain, or is it a copyright secret?
  3. What kind of other external components needed to implement this project?
  4. Do I need an advanced knowledge in DSP for this project? I have basic background in DSP, but not at advanced level. Thanks in advance!


Reply to
Loading thread data ...

Why do you want to re-invent the wheel when there are perfectly good mp3 decoder chips which will do the job? As for usb memory sticks they are designed to use IDE under the USB interface so the problem of driving them is the same as a IDE disk plus the USB driver. If you don't know anything about the mp3 alogo then what makes you think that its a suitable project?

Reply to


Doing the whole MP3 decoding in hardware is a huge amount of work, you might instead consider doing some hard-soft co-design, and put in hardware only the most time consuming kernel of the App. Even though this is still a *very* ambitious project.

What type of FPGA ?

Yes, since you will have to handle the USB protocol stack, and handle a filesystem on the USB stick. This must be done in software.

You could start from a simple C code application (others implementation such as libmad exist, but there a much more complex) :

formatting link

A digital to analog converter for sound output !

You have to be able to understand the use of fixed point arithmetci, since floating point will be very difficult to implement in an FPGA.

You are welcome,


Reply to
Steven Derrien

Hi Hendra,

Oh yes. Writing an USB host is definitely not trivial, even if you only write for a bulk-class device like an USB stick.

There's lots of free implementations. Just Google around a bit.

Well, a DAC and an amplifier circuit would be good. Then of course there's the switches, LCD connector etc.

To start from scratch I'd say you would. However, if you pick one of the libraries floating around the web I don't think you need a very high degree of DSP technology.

I know for a fact that there's a new MP3 player reference design for Altera's NIOS II development kit. The sound is pretty horrible due to the output being generated by a PWM, but if you stick a DAC onto one of the expansion connectors you'd have something workable. The kit comes with a CompactFlash connector so refreshing your song list wouldn't be too hard using a cardreader, and one of the expansion headers could even function as an IDE interface, so an FPGA-based IPod is within grasp ;-)

Best regards,


Reply to
Ben Twijnstra

Why did you learn how to make a full adder in college while an off the shelf calculator can do a much better job? It's for LEARNING experience. Otherwise I can just buy an IPOD and forget about my project.

I understand that this is a very challenging project. Nevertheless, I want to build it. When it's done, I will include the project in my resume and my website for prospective employer to see.


Reply to

Hi Hendra, May be You can look into

formatting link
and there is an example on the xilinx web site for mp3 player.

Reply to

Don't. AFAIK there is no free USB host IP for FPGAs available and you do not want to build your own. Use compact flash cards. They are simple to interface to, cheap and it is reasonably simple to purchase connectors.

It is an open standard. You might be able to access the original standard through your universities library. You can also download sources for one of the myriad open source implementations of the decoder.

I would suggest that you rip the decoder algorithm source code from some open source decode and first try to build a PC software that decodes mp3 into audio files so that you are sure that everything works as expected and that you are sure that you understand how to apply the algorithm.

Then I would build a system on a chip in your FPGA with some processor from

formatting link
that can run the software decoder. (Some of these cores should come close to real time decoding allready, but realtime is not necessary at this step)

When this works you can replace some of the simple bu time consuming parts of the algorithm by a coprocessor to your CPU to achieve real time decoding.

A development board that has audio output, a compact flash connector, LCD, remote control input and switches is this one:

formatting link

Have fun,

Kolja Sulimma

Reply to
Kolja Sulimma

(snip regarding FPGA based MP3 player)

This sounds like a good start. In many cases, the appropriate FPGA algorithm is very different than the software algorithm, but that is usually because you want to use more logic to run it faster. With MP3 there isn't much reason to run it faster.

Or find a faster FPGA based processor.

-- glen

Reply to
glen herrmannsfeldt

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.