Question: How do I detect the time between a train of pulses that are on the order of nanoseconds with my Intel Edison?
I want to see if it is possible to detect a set of pulses with my Intel Edison. I do not have much experience with electronics, so this project is intended to be a big learning experience for me.
About the pulse train: I have a photon detector that emits a pulse when it receives a photon. This pulse will remain in a high voltage for 30ns, and there is a minimum of 50ns of dead time between pulses. Pulse dead/low voltage is 0-0.8V; pulse high voltage is 3.5-5.25V. The important data to measure is the **time between each pulse**.
I have done some research on time-to-digital converters and I think I want to build something on the Edison that has a similar structure to the wikipedia page. I think that the idea I have is standard for these types of devices:
First, convert the pulse train with a schmitt trigger to voltages that the later components can use. Then, have a counter count clock cycles until a pulse arrives. When a pulse arrives, capture the counter in an output register and send this data serially to the Edison. Then, reset the counter.
I have several hurdles that I am trying to overcome to build said device:
1. 30ns + 50ns = 80ns. With cycles at a minimum of 80ns, we will need some kind of fast clock resolution in order to process this data. I know that the Intel Edison has a fast clock, but from my understanding the GPIO pins can only detect pulses that are five clock cycles long. As well, the Edison can only output a clock at a rate of 19.2 MHz. This means that it has a resolution of 260 ns, which is far too slow to process said data. I think my understanding of the best way for the Edison to receive the data is wrong since I am new to this. Is my understanding correct that I cannot use this, or is there a way that I can?
2. When the counter is captured and sent through the output register, does it need any type of encoding (UART for example)?
3. What kind of mechanism can I use to stop & reset the counter and shift the data to an output register?
Two possible answers to my question:
1. Help me to overcome my hurdles
2. Make a different suggestion that also works.
If anyone can help me overcome these hurdles then I would be very happy. Or, if there is a better/more efficient way to measure the time between each pulse, I am all ears. Is it possible to program the counter into the Edison? That would remove several parts, however, I have done research to no avail.