--- Quote Start ---
As you notice by now, I am not a FPGA designer. Just an RF analog engineer contracted to company called Revera.
--- Quote End ---
Thanks for describing your background, it makes it easier to help you.
--- Quote Start ---
This is really a simple 16 channels event counter with coincident detector. But I need to detect if two channels receive trigger within 1nS and considers as being a single event that trigger both channels. If it is determined the trigger of the channels to be coincident, then I need to count as one event even though more than one channel receives a trigger.
So I need to sample 16 separate channels input at 1GHz as I need to determine coincidence between the channels. After that, it's just simple to sum the total events within 5uS and be read out.
--- Quote End ---
What is the signal you are sampling at 1GHz? Is it an analog signal that needs a multi-bit ADC, or is it a signal that can be run through a high-speed comparator, and then that comparator output sampled?
You will face two issues with your external signal; you have to make it compatible with the digital FPGA pins, you have to synchronize it to the FPGA clock domain.
--- Quote Start ---
It is very simple
--- Quote End ---
No, its not simple. You have 16 different channels in 16 potentially different clock domains that you want to compare ...
--- Quote Start ---
I need to read all 16 channels at the same time with a 1nS clock. That will be at least one register being clocked at 1Ghz.
--- Quote End ---
But what about metastability? Does it matter if 16 FPGA registers sampling that same signal at 1GHz actually generate a change in logic state 1 clock apart due to metastability?
--- Quote Start ---
After that, I can quickly demux it out to say 8 different 16bit registers to perform coincident screening and add the total counts at 125MHz. BUT those 8 16 bit registers still have to meet the setup and hold time for 1GHz clocking even though it is being clocked at 125MHz.
Also, I need a 5 stage shift register right at the input of each of the 16 channels to generate signal to prevent retriggering and other things. those 5 X16 DFF has to be clocked synchronously at 1GHz before even performing demuxing and adding.
--- Quote End ---
The trigger filtering can be in the parallel domain, so I don't see this as an issue.
--- Quote Start ---
Please advice what FPGA can do what I want. I suspect I need a FPGA that have enough registers and FF to do the job and the rest are quite empty!!!
--- Quote End ---
The advice depends on what the external analog signal looks like.
For example, this board ...
https://www.ovro.caltech.edu/~dwh/carma_board/ contains an e2v 8-bit 1GHz ADC. This is what would be needed if your external signal was really "analog" and you had to look for a signal buried in noise, eg., a radar return pulse.
The FPGA on this board is the Stratix II. Altera has Stratix V devices now.
The features you can exploit on the FPGA are; the LVDS receivers operating at 1GHz, or the high-speed SERDES channel receivers operated in lock-to-refclk mode, so that the receivers are synchronously sampling. The SERDES might be a good option if you wanted to oversample the external signal, eg., operate at 4Gbps to sample the signal at 4GHz, and then use logic to detect the pulse and maybe decimate the sample stream. For both of these cases, your external signal needs to be converted to differential format with an amplitude of around 350mVpp to 400mVpp.
You could also use an external high-speed comparator and SERDES. In-Phi used to have a part with a 12Gbps comparator followed by a SERDES.
Cheers,
Dave