Recording ~512 16 bit channels at 2mhz.

Discussion in 'Embedded Systems and Microcontrollers' started by gomipile, Jun 23, 2012.

  1. gomipile

    Thread Starter New Member

    Jun 23, 2012
    4
    0
    It's been about 15 years since I've done any work with microcontrollers, so I figured I'd sign up to a good forum and ask y'all for some direction.

    I have an application where I'll have 512 or more analog inputs which I need to record for short bursts at a time resolution of about 2 mhz simultaneously.

    Basically, I need to build a system which can record those 512 (or more) analog channels at 16 bit accuracy and 2mhz time resolution for about half a second. The time sync on each channel must be within about 250 nanoseconds of any other channel.

    The data does not need to be reported to the server computer in realtime, but once it gets to the server and is compiled into a data file, I need to know that every channel is synced to every other channel within that error of 250 nanoseconds.

    So, how many microcontrollers will I need, what ones work well for this type of application, what is the most cost effective type of microcontroller to use, etc? For example, comparing 3 microcontrollers, one of which can handle one input and costs $10 per, one that can handle 8 inputs simultaneously and costs $30, and one that can handle 32 inputs and costs $150 each, I'd want to go with the $30 8 input ones. As long as, of course, they can be synced to each other well enough to get within that 250 ns error after all the wire length errors, signal travel time errors, etc. are accounted for.

    So, if you can help me, that's be great!
     
    Last edited: Jun 23, 2012
  2. gomipile

    Thread Starter New Member

    Jun 23, 2012
    4
    0
    I do, of course, realize that this would mean that almost a gigabyte of data would be recorded. I'd probably have to do some on the fly data pruning and mild signal processing in each microcontroller to ameliorate the effects of that.
     
  3. kubeek

    AAC Fanatic!

    Sep 20, 2005
    4,670
    804
    To me this seems to be more suitable for FPGA rather than CPU. I would imagine that each fpga would have say 8-16 A/D converters around it and one DRAM for local storage of data. Then after the measurement is done the master controller downloads each dram for processing.

    I don´t think you can find a cpu with 2M samples per second in 16bit, you will need not very cheap standalone A/D converters. Also you don´t say how short is that short burst, i.e. how much data you will actually be storing. Also you should realize that even though you want it to be as cheap as possilbe (everyone wants that), even just 512x the analog front end for each channel will cost a LOT. The thing should definitely be modular so that you can make a say 32 channel board running and then stack them up. For this you need to think first about the synchronization between the boards, because 250ns is not a lot of time, I would imagine some master clock with coax cable running to each board.
     
  4. gomipile

    Thread Starter New Member

    Jun 23, 2012
    4
    0
    Ok, consider just a single channel. Here's a practical example that falls within the parameters of the type of data I'm dealing with:

    Imagine a single ultrasonic microphone with a range up to 2mhz. How would you build a digital audio recorder which could record up to 2mhz sound using that microphone?
     
  5. kubeek

    AAC Fanatic!

    Sep 20, 2005
    4,670
    804
    I depending on level etc. there would be input buffer going into A/D converter, which is clocked by fpga and with parallel output into fpga as well. Fpga stores samples into some intermediate buffers and then gives them to memory controller which puts it into dram.
    Mind you that instead of fpga you can freely put cpu, but I think that a single fpga will be able to handle more of the A/Ds than a cpu with the same price.
     
Loading...