Forum Discussion
Altera_Forum
Honored Contributor
11 years agoHi again,
I did just read something about not using 3 stage syncs for parallel data and have come to the conclusion that DSL has just mentioned. I can tell you a little more, and should've mentioned in my first post. The ADC recieves its clock from the FPGA in the first place. I have a PLL generating a 40MHz clock which is sent as a single ended signal to the ADC. The ADC then generates the LVDS streams, Data Clock (DDR) and frame clock all of which are differential and are fed back to the CYclone III FPGA on its diffio in banks 5 and 6. This is then fed into the LVDS mega-function (except the frame clock) which de-serializes the data according to the data clock, and the frame clock is used simply to make sure I get the word boundaries correct when reading the values. The logic that then requires this data and frame clock is being clocked at 400MHz from the same PLL. This suggests to me that this would meet 3) in the list Kaz provided. Because the clocks are not the same freq but are related (phase and skew may have occured). Does that sound about right? IF so would this be a suitable solution:? I latch the de-serialized data into a register using the un-syncd frame clock (which is in sync with the adc data clock), The un-syncd frame clock is also fed to a 3 stage sync which will inevitably delay it by 2-3 sysclks (400MHz), I then latch the data from the first register into a second register but on the syncd frame clock? As the sysclock is 10times faster than the frame clock, all this should occur before the next frame is presented from the ADC... does this sound reasonable? Or have I missed something else? Thanks for all your advice btw, all this metastability stuff is new to me and sometimes the info out on that there web can be as confusing as it is enlightening! D