Hi Error 323,
You could look at using a SPI ADC, maybe a
http://www.ti.com/product/ADC128S102. It is an 8-channel 12-bit ADC, fast enough for multi-channel audio frequency work.
I've got example code on how to interface the DAC to the fabric at
http://hamsterworks.co.nz/mediawiki/index.php/SPI_ADC - modify this to read all channels at your desired rate. You could use something like
http://hamsterworks.co.nz/mediawiki/ind ... hum_filter to filter out the Mains hum, but rather than making it a 50/60Hz low pass, invert it to make it a 100Hz high pass filter.
Have a read of chapters 15 through 17 of the PDFs from
http://dspguide.com/ to get your DSP filters nailed.
That would be the data acquisition sorted. You will then need to tag the samples with what channel they were collected on (eg '0' & channel & sample) and write them to a FIFO. Maybe you could use the high bit of the sample as a "sample available" flag - taking it up to 16 bits...
The magic bit will be presenting that FIFO through to the ARM cores, allowing you to stream the samples back from the DAC.
Within your app, the processing will then look a little like this:
// acquire up to buffer_size samples from the ADC in buffer
for(i=0; i < buffer_size; i++)
{
short sample = *IO_PORT_ADDR;
if(sample & 0x8000) = 0)
break; // have run out of data on the FIFO - process what I already have
buffer[i] = sample;
}
As long as your FIFO is large enough, your application's buffer big enough and you don't overwork the ARM core you should be able to make it all work.