Electronic – ADC sampling rate to MCU clock speed relationship

adcclock-speedmicrocontrollerspi

How can I determine the clock speed requirements of a mCU to manage a given ADC input?

This application is very simple – I just want to take an SPI stream from an ADC into a mCU and spit it out the mCU. No major DSP happening or anything like that on board. [added] The mCU is ultimately there to push the video out a USB port.

In this scenario I have a 40,000 kSPS (40 MSPS) 10bit ADC that I need to push through a 16 bit micro. Do I use a 40MHz micro? Can I use a slower micro?

Best Answer

Your question suggests that the SPI is the input from the ADC. However, the ADS825E is a parallel output device. So, is the SPI the output from the microcontroller? I'll presume it is.

You'll always need a faster clock. Even for a RISC controller running 1MIPS/MHz a 40MHz clock will allow you to execute 40M read instructions per second, but you have extra code, at least a jump instruction to create a loop. So at 80MHz you can read, and jump to the read instruction. But that's not all. If you want to shift the read data out through SPI that will need to be clocked as well. At least 10 clock pulses per read sample, to be precise. Unless you're using an asynchronous microcontroller (I don't know if they already exist outside of the lab yet) that means 400MHz. At least.
You can do this with some high end ARM controllers, but if you just want to read and shift out there are better solutions. Oli mentions an FPGA, but a CPLD will probably do.