Hmm,
Well there are many FPGA's with enough resources to do exactly that, but be prepared for some serious work.
Simply 'shifting data about' is nothing for an FPGA, and its what their smaller cousins, CPLD's are deisgned for. Also interfacing to a HD. But...the mp3 decoder? I have never attempted to code an mp3 decoder in software so I don't completely understand it. But I do know it requires quite a lot of multiplications, SRAM storage...stuff that is
far beyond 'logic and boolean stuff'. (which IS my forte
). People have done it, and given you essentially create hardware from scratch, its wonderfully efficient and extremely quick. (you can parallel tasks, and run them at 200Mhz+). really not for the faint hearted though.
I have no doubt one could have a nice two chip solution, just with an FPGA and DAC, but the costs would soon add up. The FPGA would be a bit pricey for a start.
It sounds like you want to get into FPGA's and programmable logic anyway, so by all means you could incorperate that into your design, perhaps for interfacing to the hard disk, and DRAM (or SRAM which would be easier). Both those tasks are very I/O hungry, and are well suited to small FPGA's, or large CPLD's. But the mp3 decoder? Given the cost, and ease of use, I would strongly recommend a specific MP3 decoder chip for that.
And I 'think' some have built-in DAC's anyway. Either way, the mp3/DAC side of things would be nice and straight forward for you, where-as all the nasty address/data bus handling could be done by the FPGA.
Ok, so to really answer your question...'practical applications of the FPGA' would be:
-A one chip solution for all interfacing needs, negating any logic buffers, latches etc..
-The ability to customize it completely, from scratch.
-No real limit on speed, as if you do it all in parallel, you could shift large chunks of data with only a few clk cycles.
- Many FPGA's have built in SRAM for the user. This can be utilized negating the need for external memory (also speeding things up as well as freeing up I/O's).
If you google 'DIY mp3 player' which I'm sure you have done, you'll see almost all using SDCARDs or flash memory. Which can reach up to 4GB in size, and can be handled by microcontrollers. But....the ones that use 3.5" hard disks tend to be massive. Either using old computer parts, so essentially building a PC that just plays mp3's, or lots and lots of logic to gather data from the hard disk.
Only true DIY one I could find was this:
PJRC High Capacity MP3 Player Circuit Board Project
Microcontorller, RAM (uses SIMM SRAM I believe), and a small xilinx FPGA. As well as an mp3 decoder chip + dac.
With a modern FPGA, you might be able to shrink that chip count to may 3. A microcontorller is always handy though, for control buttons and LCD display, a user interface, but again, that can be handled by the FPGA.
So ultimately, advantages? The ability to build a small, stand-alone hard-disk MP3 player, cheaply, without large PC motherboards. If you don't need to use a HD, them it becomes a whole lot easier.
Blueteeth