nathan@woosteraudio.com | Photos on Flickr | About
I've been doing logic design verification for years but haven't really done my own design since college. I thought doing an FPGA-based synthesizer would be the perfect project to give it a try.
I am using the Xilinx Spartan 3E development kit, which has a Xilinx XC3S500E chip. Audio is output via a I2S DAC board made by Eric Brombaugh. MIDI input is provided by a partially populated MIDI-IR board.
Currently, there are two NCO's which can output a variety of bandlimited waveforms, a Stilson-inspired filter, and two ADSR's.
The design is coded in Verilog. Doing DSP on an FPGA is easier in some ways than doing it on a microprocessor, and harder in others. It is easier because you have 20 multipliers that you can use simultaneously, and very fast access to RAM and lookup-tables. You can do several logic operation in one cycle which might take several cycles on a uP. Mentally I sometimes find it easier to get my head around a Verilog design than C (or especially assembly language) DSP code; maybe it has to do with the differences between modular abstraction and functional abstraction. Also I am a professional verification engineer so I know ALL the mistakes that RTL designers make and don't have to make them myself :)
On the other hand it can be difficult to make efficient use of all of the FPGA's parallelism and of course it is easier to do things like abstract data structures with compiled high level code running on a uP. Most of the DSP code examples you can find online and in books are in C or other software languages, not Verilog or VHDL.
I protoype all of the DSP algorithms in Python before I start writing verilog code, because you don't have to wait for anything to compile/sythesize, and it is easy to output to spreadsheet graphs and/or wave files.
Here is a recording of the synth being processed by my Space Baby digital delay. The drums are Audio Damage Tattoo.
The FPGA Synth website is a great place to learn more about this field, along with the associated wiki and mailing list. In particular, the work of contributors Scott Gravenhorst and Eric Brombaugh has been a huge inspiration