Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
20688 Discussions

Is there a proper way to register a pulse that is shorter than the clock period ?

RLand
Beginner
1,376 Views

Is there any way to register a signals edge without feeding that signal into the clock port of a flip-flop ? E.g. you have an asynchronous pulse with on-time that may occur between clock edges. How can this pulse be registered ?

0 Kudos
2 Replies
Tricky
New Contributor II
481 Views

Pretty much not possible. Your clock needs to be faster than the signal you're trying​ sample.

0 Kudos
ak6dn
Valued Contributor III
481 Views

Feed the pulse into an asynchronous SR latch 'S' input such that the presence of the pulse will put the latch into the SET state. Note the pulse must be at least long enough (two gate delays) to allow the SR latch to go to the SET state.

 

Then feed the output of that asynchronous SR latch into a dual rank clocked synchronizer. Now your signal will be in the clock domain as a synchronous signal, and you can use it in logic as desired.

 

The synchronized output should remain set until you go and generate a clear/reset signal and feed it into the 'R' input of the above SR latch, to put it back into the state of 'looking' for the next async pulse.

 

This scheme requires that the input pulse have a minimum pulse width (as mentioned above) to reliably set the input latch, and that the time between pulses be long enough to synchronize the pulse to your target clock signal, process it, and then reset the input latch back to pulse recognizer mode. If the time between pulses is too short, you will end up missing the subsequent pulses while processing is active.

 

Alternatively, if the pulse meets the minimum clock pulse width requirement for a register, feed the pulse into the clock input of the register, and supply a logic high to the data input. Connect the output of the register to the dual rank synchronizer input, as was done above using the SR latch. Connect the feedback clear signal to the async reset input of the register to re-enable it to detect the next input pulse.

0 Kudos
Reply