What are the applications or Pros/Cons of using real-time vs non-real time when reading an ADC? For example, let's say you're reading a sine wave from a CT. As far as I know, if you’re processing in non-real time, and the signal data is acquired in blocks (fixed-length sequences) of block length N, some math get kind of straightforward compared to continuous data acquisition. In what applications you would choose one or another?

  • \$\begingroup\$ What is a CT? I would say it would depend very much on your implementation and what you are trying to achieve. You can sample the ADC in real-time provided you have sufficient time to do any required processing between samples. Or you could buffer up samples asynchronously using hardware or software for follow on processing e.g. in a ring buffer. I suppose the main advantage of real-time is that you can immediately react to a significant event. \$\endgroup\$
    – mhaselup
    Sep 23 '20 at 4:17
  • \$\begingroup\$ guess into the blue: CT = Computer Tomograph ? \$\endgroup\$
    – schnedan
    Sep 23 '20 at 8:04
  • \$\begingroup\$ CT = Current Transformer in this case \$\endgroup\$
    – user115094
    Sep 23 '20 at 14:33

Its basically a trade between time and memory.

If you have more memory then you have more time to process the samples before the memory is full. If you have enough memory to buffer an entire data set (and the system doesn't need the data right away for anything else) then you are only restricted by how long the user is willing to wait. Having more time available reduces the required amount of processing power. Both processing power and memory both cost something so which one is better depends on the specific scenario.


  1. Might require more processing power, which can be more expensive.
    a) How much extra processing is application dependent.
    b) In some cases you can do the processing with the hardware you already have and the added cost is zero.
    c) In other cases you may find yourself putting down an FPGA or high end CPU and the cost can be thousands of dollars.

  2. May need very little memory (possibly just a few samples worth). Although, you may need more if the algorithms require access to many samples at once.


  1. Requires the same processing power as above.
    a) Though you are putting the data in blocks you still need to process data (on average) as fast as it comes in, otherwise the buffer will eventually overflow.
    b) But if samples come in at an irregular rate then having a buffer can reduce the peak processing power requirements.

  2. Requires some memory for a buffer. If you already have the memory then the added cost may be zero. If the blocks are larger then the cost increases.


  1. If you don't process the data as fast as you sample it then you have to have memory to store it. This could mean adding hardware which will can increase cost. Especially when...
    a) Samples are taken at a high rate.
    b) Data is taken for a long time.
    c) Both a and b.

  2. If you don't process the data immediately then you have to wait to use the data (obviously).
    a) For a control loop this would probably be unacceptable.
    b) For something like a data log it might be acceptable.

  3. If the data comes in at a high enough rate or the processing is complex enough then there may be no CPU, FPGA or ASIC that can process the data in real time. You may have no choice but to store the data for post processing. These types of applications tend to be expensive.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy