[sdiy] FPGA As Synth and DSP Development Environment
Scott Gravenhorst
music.maker at gte.net
Fri Jan 23 16:06:35 CET 2009
This post is regarding my own personal experience developing DSP and digital synthesizers in an FPGA.
I should mention that I am not a degreed engineer for those who do not know that. I did not have any DSP experience before starting in on my projects. My math skills are only to first level Calculus and I really don't understand _all_ of that, but I have a fair understanding of limits, summation, integration and differentiation. I have learned everything I know about DSP from reading information posted freely on the internet and from the gracious and intelligent members of this forum, FPGA-Synth and USE
NET newsgroups such as comp.dsp, comp.arch.fpga and others, again, all freely and graciously posted information.
To see some of what I have done in the last 3 years with FPGAs and DSP sound synthesis, please visit my FPGA synth information page at:
http://home1.gte.net/res0658s/FPGA_synth/
The complete source code for these projects is provided in most cases. There are also sound clips available for most of them.
My own understanding of what an FPGA is would be the most popular type - the SRAM type, specifically those made by Xilinx (this is NOT meant to disparage any other manufacturer, only that I have no other experience). Until the recent DSP development board thread, I had never heard of fused types, but I had heard of Flash based ones. AFAIK, even the Flash type is not the most prevalent type used in room temperature and nonmilitary DSP.
These synthesizer projects are about as complete as they can be, all of them running on one or another "low-cost" development board. The boards I use range in price from $39.00 to $295.00. The projects contain the synth sound generation logic, a soft embedded microcontroller for MIDI including it's object code, the MIDI UART logic (thanks to Jim Patchell), DAC driver logic (thanks to Eric Brombaugh), display logic - essentially everything. The internal calculations are performed with no less than 18 bit
s signed arithmetic and in some cases, as many as 35 bits. Output sample rates range from ~ 200 KHz to 1.0 MHz. The only pieces of hard electronics that I have had to add are MIDI UART receive electronics (amounts to an optoisolator and some resisistors), an audio output interface (consists of a resistor and a capacitor per channel) and in some cases a DAC. I mention this array of internally implemented parts because in all of my designs, I still have not filled the target devices completely and IMO, I
have acheived a rather good level of synthesizer logic complexity in spite of the fact that some of the FPGA fabric is dedicated to parts that do not directly produce sound. Indeed, the footprints of these ancillary parts turned out to be surprisingly small. This is not to disparage any other methods, but to demonstrate that it can be done, mainly inside of a single FPGA package (though my chosen packages are of fairly repectable size). Certainly, if you add an external microcontroller, additional FPGA
fabric is freed for yet more sound generation logic.
I chose to use development boards for a few reasons:
1) They are essentially complete.
2) They came with free software for compile and download to the device.
3) They are tested and known to work and have some limited warrantee.
4) Due to at least some mfr. subsidy, they are fairly inexpensive.
5) I suck at soldering eensy teensy itsy bitsy stuff because of my eyes.
As far as any "fixed design" paradigm is concerned, these RAM based FPGAs load their bitfile in seconds (like you can count them on one hand). And if you need fixed, these boards all have a Flash RAM that can program the FPGA on power up - I have used this capability and it works nicely.
So in my opinion, for those with interest, an FPGA is most definately a valid and desirable environment for DSP development with robust complexity in terms of features and voice count.
-- ScottG
________________________________________________________________________
-- Scott Gravenhorst
-- FPGA MIDI Synthesizer Information: home1.gte.net/res0658s/FPGA_synth/
-- FatMan: home1.gte.net/res0658s/fatman/
-- NonFatMan: home1.gte.net/res0658s/electronics/
-- When the going gets tough, the tough use the command line.
More information about the Synth-diy
mailing list