How to capture a series of fast pulses?

Thread Starter

pyroartist

Joined Oct 9, 2015
131
I'm trying to design a LIDAR receiver that will capture the (analog) output of my avalanche photo diode (APD)
every 100 nanoseconds for 30 times. After the 30 A/D samples are collected a processor will store them in memory and
another laser pulse will be triggered, followed by collection of another 30 samples. This process repeats for thousands
of times and then the signals in like time bins will be added togther and then scaled for an X-Y display where range
is X and Y is relative signal amplitude. A range squared correction will be applied to correct for signal loss due to distance.
(This processing should help eliminate noise and increase sensitivity.)
So what is the best way to capture such fast signals from my very fast (20M samples per second) A to D? Some kind of scheme
using a FIFO buffer chip? Or is there an easy-to-work-with hobby-type processor that could do it all?
I think the Arduino family is not fast enough to capture data every 100 nanoseconds.
Thanks!
 

crutschow

Joined Mar 14, 2008
38,503
Yes, a fast FIFO with appropriate control circuitry should do what you want.
Doubt there's a common μP that can accept data that fast.
One of these may work for you.
 

Thread Starter

pyroartist

Joined Oct 9, 2015
131
Thanks for the list of FIFOs. Why are they nearly all 9 bits? That is a strange number for digital stuff.
My chosen A/D is 10 bits and I would like to use the full resolution. How can that work?
Have you any example circuits somewhere?
 

AnalogKid

Joined Aug 1, 2013
12,126
How often do the 30-sample bursts happen?

30 x 10 x thousands = 1 M bits of storage minimum. I would go with an FPGA with onboard RAM, or a CPLD state machine with external static RAM. If data collection and playback can overlap, you need a dual-port RAM structure. IDT makes integrated dual port RAM chips, but they are $$$. Last time I did this I used normal RAM parts, grew the dual port controller in a CPLD, and reduced the RAM cost by $250 per board.

ak
 

crutschow

Joined Mar 14, 2008
38,503
My chosen A/D is 10 bits and I would like to use the full resolution. How can that work?
Assuming you can read out the 30 sample between pulse bursts and store Ram, you could go with one of the 64 x 18 FIFOs and just not use 8 of the 18 bits.

This will require logic to generate control signals for the input and output commands to the FIFO as shown on page 5 of the data sheet.
The logic circuits will be commanded by the processor to control when the input and output signals occurs.
To start, generate a block diagram of the all the control signals required
The next step is then to determine how to implement each block.
 

Thread Starter

pyroartist

Joined Oct 9, 2015
131
Thanks crutschow, again. Your are correct that I will have plenty of time between burst to copy the data from the FIFO to the processor RAM.
That will still leave time for thousands more 30 sample bursts all in less than a second.
AK, that way I can clear the 64 memory slots in the FIFO and start again. This way the processor can operate much slower
than the LIDAR system.
I will take a long look at the datasheet to understand the process.
 

KL7AJ

Joined Nov 4, 2008
2,229
I'm trying to design a LIDAR receiver that will capture the (analog) output of my avalanche photo diode (APD)
every 100 nanoseconds for 30 times. After the 30 A/D samples are collected a processor will store them in memory and
another laser pulse will be triggered, followed by collection of another 30 samples. This process repeats for thousands
of times and then the signals in like time bins will be added togther and then scaled for an X-Y display where range
is X and Y is relative signal amplitude. A range squared correction will be applied to correct for signal loss due to distance.
(This processing should help eliminate noise and increase sensitivity.)
So what is the best way to capture such fast signals from my very fast (20M samples per second) A to D? Some kind of scheme
using a FIFO buffer chip? Or is there an easy-to-work-with hobby-type processor that could do it all?
I think the Arduino family is not fast enough to capture data every 100 nanoseconds.
Thanks!
Functionally, this is what you're looking for:
http://www.thinksrs.com/products/Boxcar.htm

But I think you can roll your own a bit cheaper.

Eric
 

Thread Starter

pyroartist

Joined Oct 9, 2015
131
Eric, You are correct. I have read the term "Boxcar Averager" in some LIDAR documents from the 1980s. What a monster instrument. This is way too big and way too expensive. But this paragraph verifies that my intended signal processing works:
"Boxcar Averaging
Boxcar Averaging refers to the practice of averaging the output of the gated integrator over many shots of the experiment. Since any signal present during the gate will add linearly, while noise will add in a "random walk" fashion as the square root of the number of shots, averaging N shots will improve the signal-to-noise ratio by a factor of √N."

Wonder why the name boxcar? Probably refers to a large amount of data (back then it was large).
 
Top