[sdiy] Another FPGA synthesis project [resent]

Eric Brombaugh ebrombaugh1 at cox.net
Thu Nov 19 20:12:04 CET 2009


On 11/19/2009 10:43 AM, Scott Gravenhorst wrote:
> Eric Brombaugh<ebrombaugh1 at cox.net>  wrote:
>>
>> The dsPIC can indeed to a certain amount of wavetable synthesis, but the
>> processor bandwidth imposes a fairly serious limitation on the sample
>> rate vs computational complexity. For this board the FPGA will have
>> access to a huge wavetable space stored in the 32Mbit SPI Flash memory
>> and sufficient bandwidth to run multiple voices at high sample rates
>> with some fancy interpolation.
>
> I guess my lack of experience with a dsPIC prevents me from understanding how the dsPIC and FPGA
> would work together...  Can you give a kind of 50,000 foot level description?
>
> I'm going to guess - the FPGA does the actual wavetable work and presents the oscillator outputs to
> the dsPIC for further and more complex processing - such as filters, waveshapers, etc?

On this board the dsPIC is connected to:

* 4 12-bit ADC channels that are driven by CV & offset pots
* 1 micro SD card
* Miscellaneous digital I/O.
* FPGA - via either SPI or a byte-wide parallel bus

The FPGA is connected to:

* dsPIC (see above)
* 32Mbit SPI Flash
* Stereo DAC
* 3 auxiliary I/O ports
* 4 misc user control bits.

The general idea is that on power up the dsPIC boots itself, loads the 
FPGA configuration from the SD card using either slave parallel or 
serial modes and then goes into an infinite loop reading the ADC inputs, 
massaging them into parameters for the FPGA and feeding them to the FPGA 
via the common serial/parallel interface. Once the FPGA is up and 
running, the dsPIC can also do things like load up the SPI flash from 
the SD card, so user programmable tables are possible. Miscellaneous 
digital I/O provides for the possibility of other interfaces, like MIDI, 
encoders, buttons, some sort of external graphic UI via SPI or UART, etc.

The FPGA design can be any kind of digital oscillator design, changeable 
just by popping out the SD card, shoving it into your ISE development PC 
and rewriting the bitstream file. The bandwidth of the SPI flash 
interface is sufficient to do 384kHz 16-bit interpolated wavetable 
lookups - divide that up among an arbitrary number of oscillators as 
desired. Any other type of operations are possible too - FM, filtering, 
etc. External interfaces via the Aux connectors allow additional 
operations, like extra ADCs / DACs for more I/O, or more memories.

Eric



More information about the Synth-diy mailing list