[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