Toggle synchronizer Explained!! Why 2 flop synchronizers cannot synchronize a pulse? | CDC

  Рет қаралды 25,174

Karthik Vippala

Karthik Vippala

Күн бұрын

In this video , I have discussed about toggle synchronizer , and draw back of 2 flop synchronizers . If you have any doubts feel free to comment , I will respond back. Please Do subscribe it will help me a lot.

Пікірлер: 102
@jayparekh9768
@jayparekh9768 3 жыл бұрын
Nice video Man..Kudos! Two things to remember.. 1) You can't pass pulse faithfully from fast to slow using 2FF synchroniser 2) convert pulse to level in sending domain and then again create pulse from level in receiver domain
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Thanks for the summary 😊🙏
@tuhinkarak4927
@tuhinkarak4927 11 күн бұрын
Really Really Nice Video Man........I have seen many videos of FIFO, but this one cleared all my doubts.... Kudos man
@onkardesai30
@onkardesai30 3 жыл бұрын
Nice video! but QA will be sampled as soon as (+propagation delay) the positive edge of CLKA comes. In video, it is sampled on the next cycle which is not correct.
@ankitsingh-wg3cn
@ankitsingh-wg3cn Жыл бұрын
yes, but in the video, its not sampling time, its the sampled output Qa shown in diag which will be once cycle delayed.
@real4788
@real4788 Жыл бұрын
output of Q1 is wrong. It should be 1 as soon as there is posedge clock. In your timing diagrams, there is 1 clock period delay
@tyogarasa
@tyogarasa Ай бұрын
Great video. Thank you!
@KarthikVippala
@KarthikVippala Ай бұрын
Your welcome ☺
@trilokjt2118
@trilokjt2118 4 жыл бұрын
Hey Karthik, great video. Keep doing good work 👍
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Thanks for the support brother 👊
@ankitasharma9841
@ankitasharma9841 3 жыл бұрын
How will the signal Qb come out of the metastable state on its own ?
@kedharguhan
@kedharguhan 2 жыл бұрын
Great topic and video, thanks! In practice, is this technique more useful in the ASIC domain or in the FPGA designs? Or is this equally used in both?
@BonBonShrimp
@BonBonShrimp 2 жыл бұрын
Nice video. I think it needs to be mentioned that if clkA is generating more than one pulse, the gap between them should be at least 2 clkB cycles wide (if using a 2-stage synchronizer).
@ankitsingh-wg3cn
@ankitsingh-wg3cn Жыл бұрын
it will work in case of 1010 also.
@Shrawankumar-oc2vj
@Shrawankumar-oc2vj Жыл бұрын
Thank you
@krishvamsi9787
@krishvamsi9787 2 жыл бұрын
is toggle synchronisation works only for single bit ?or can we use this technique for multiple bits ?
@uday5786
@uday5786 4 жыл бұрын
excellent explanation
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Glad you liked it!
@bhuvskaya8898
@bhuvskaya8898 2 жыл бұрын
Can we use this for array / data synchroniser? Fast to Slow clock sampling
@uday5786
@uday5786 4 жыл бұрын
thanks for video
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Thank you for your feedback 👍
@OneKyox
@OneKyox 4 ай бұрын
Is the mux functionality not the same as a T-FlipFlop?
@InterestingTopics2103
@InterestingTopics2103 3 жыл бұрын
Well explained...only issue is Q is modified at next edge instead of present edge in timing diagrams
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Namaskaram 🙏 Manoj Kumar , thanks for the support , thanks for pointing, good luck & great health 👍😊
@krishvamsi9787
@krishvamsi9787 2 жыл бұрын
why it should modified at present edge..?? can u plz ans me..
@InterestingTopics2103
@InterestingTopics2103 2 жыл бұрын
@@krishvamsi9787 that's basic thing bro....any flip flop will capture the data at its input if data is ready at it's active edge
@AdrianoLeszkowicz
@AdrianoLeszkowicz 2 жыл бұрын
Tks , great video Something you miss : what will help if the pulse is too long ( i.e. more than 1 clock period ) , also what about consecutive pulses ( that must be limited by the slower clock )
@KarthikVippala
@KarthikVippala 2 жыл бұрын
Namaste Adriano 🙏 , I have covered it next video , please check it out in CDC playlist of my channel, thanks for watching and the suggestion , good luck & great health 👍😊
@gym_monk6822
@gym_monk6822 3 жыл бұрын
y Qa ll capture i/p after 1 clk cycle . i sud capture the ip asa it sees a posedge isnt it?
@gauravshukla9452
@gauravshukla9452 3 жыл бұрын
1)how to detect back to back pulse? 2) if my pulse width in source clock domain is N*src_clk_period. then how to generate pulse in destination clock domain of N*dst_clk_domain?
@abhijitkumar5696
@abhijitkumar5696 2 жыл бұрын
when qa is initially 1 , then design wont work?
@ankitasharma9841
@ankitasharma9841 3 жыл бұрын
Hi Can you also make some video on how to calculate FIFO buffer depth.
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Namaskarm Ankita, Kindly checkout my channel ,I have discussed on how to calculate depth of FIFO. Thanks for the asking , good luck & great health, Take care :)
@sanamkala8795
@sanamkala8795 Жыл бұрын
Hi Karthik, If I use T-FF instead of mux and D-FF, will it be ok?
@ankitsingh-wg3cn
@ankitsingh-wg3cn Жыл бұрын
yes, it will work
@hrishikesh97
@hrishikesh97 3 жыл бұрын
hello, I have a doubt. @8:45 time, Why is Qc not capturing metastability glitch from QB?
@ankitamohanty199
@ankitamohanty199 3 жыл бұрын
This is bcoz the output at qB has already got stabilised, i.e. it does not violate the setup time of f/f C
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Namaskarm Ankita, . Thanks for Commenting , good luck & great health, Take care :)
@ankushchavhan3382
@ankushchavhan3382 3 жыл бұрын
Nicely explained, can we use xor gate instead of a mux, where 1 input is q and other input is pulse.
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Namaskaram Ankush 🙏, thanks for asking, you can use it , mux is universal gate any gate can be formed. Good luck & great health 👍😊 take care.
@venkatm5443
@venkatm5443 3 жыл бұрын
What happens if source flop is reset but destination is not ..the latched signal will toggle and destination will detect erroneous pulse
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Yes Venkat , you are correct both need to be reset at same time
@vijayshreeadhikari3989
@vijayshreeadhikari3989 2 жыл бұрын
The pulse we transmit from clock domain A is of 10 ns but what we receive at clock domain B is of 20 ns .But it should be of 10 ns ideally .How to resolve this?
@KarthikVippala
@KarthikVippala 2 жыл бұрын
Namaste Vijayshree 🙏, it's moving from fast clock to slow Clock , we can use fifo to synchronise the domain crossing and depth will be calculated accordingly, thanks for asking good luck and great health 👍😊
@RajeevKumaryadav24
@RajeevKumaryadav24 3 жыл бұрын
which case it is used: 1.Pulse going from high to low 2. pulse going from low to high 3. Both case
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Hey Rajeev thanks for asking, Yes we can use it for both cases . Good luck, good health 👍
@shilpa4600
@shilpa4600 3 жыл бұрын
Hi Karthik, When does this level will go to low? once it detects pulse, it is becoming level and then stay as continuous level, what if we want to synchronize another pulse which is coming much later than first pulse? in that case we need to make the level to zero at some point to re-initiate the next pulse synchronization. Pls suggest.
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Pls check out clock domain crossing playlist in my channel , in that pls watch handshake synchronizer , it is used for the issue you asked. Good luck, good health 👍
@shilpa4600
@shilpa4600 3 жыл бұрын
@@KarthikVippala Thank you so much.
@shilpa4600
@shilpa4600 3 жыл бұрын
Hi Karthik, in the handshake based pulse synchronizer, u have explained when multiple pulses to be synchronized, but the input pulse is getting controlled by busy signal. Here my question is, if we don't have control over input pulse generation ( multiple pulses getting generated , and if we have enough clocks to synchronize them). in that case how do we make the level low, so that next pulse can be initiated for synchronization.
@KarthikVippala
@KarthikVippala 3 жыл бұрын
There is one restriction in pulse synchronizer that back to back (one clock gap) pulses cannot be handled. To make sure the next generated pulse in source clock domain gets definitely transferred and synchronized in the destination clock domain, the handshake based pulse synchronizer generates a “Busy” signal by ORing A1 and A3 flip-flop outputs. Thus the logic generating the pulse shall not generate another pulse till the busy signal is asserted. Thanks for asking the question, good luck, good health 👍😊, excuse me I missed the question ,since there is no notification for new comments in old comment , please do comment newly when you want to ask👍
@abhijitkumar5696
@abhijitkumar5696 2 жыл бұрын
@@KarthikVippala His question is regarding toggle synchronizer asking when will the level go back to 0 to synchronize next pulse
@kaustubhrajvaidya6355
@kaustubhrajvaidya6355 10 ай бұрын
Hi Karthik, Nice explaination. One doubt what if the output of Qb settles at 0 instead of 1 in that case we wont see any pulse , is this correct understanding? in that case pulse will be lost . Or do we have always "assume" that Qb will settle at 1 only.
@dipenjivani2619
@dipenjivani2619 3 ай бұрын
If Qb is not settled with '1' in first cycle then no worry as it will be settle with '1' in next cycle as it's input QA level is set to '1' and its continue to '1'
@ManishKumar-pl3dq
@ManishKumar-pl3dq 2 жыл бұрын
I feel output of Q1 is wrong it will be one clock before @ time(1.24),,,,,,,,well rest thing nicely explained
@uday5786
@uday5786 4 жыл бұрын
why the delay of first flip flop u have taken is one clock period
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Delay can be considered or may not be considered , it depends on when then the mux output arrives ,it won't be a issue even if you start a clock period ahead .
@PradeepSingh-kp6tu
@PradeepSingh-kp6tu 2 жыл бұрын
the pulse width is increased here at ouptut
@vivekkumarbharti6633
@vivekkumarbharti6633 3 жыл бұрын
Hi Karthik, thanks for great explanation Does it possible that pulse can be generated by noice?
@vivekkumarbharti6633
@vivekkumarbharti6633 3 жыл бұрын
Just asking 😉 i am noob here.
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Didn't get u , can you elaborate 👍
@akshayraj.amudala708
@akshayraj.amudala708 Жыл бұрын
When input is back to 0 from 1 , Qa will again change to 0 right. How is it still 1.?
@kritijaiswal4219
@kritijaiswal4219 4 жыл бұрын
What is another technique to transfer multibit data in asynchronous clock domain apart from FIFO? IF tha data is changing frequently
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Hey kirti, thanks for asking the question. Handshake synchronization, mux synchronization are some other techniques which I know. You can check them out in my channel , name of playlist clock domain crossing. If you have any questions please feel free to comment 👍
@kritijaiswal4219
@kritijaiswal4219 4 жыл бұрын
@@KarthikVippalaHey thanks for replying. yes but these techniques have greater latency than FIFO and also they are not suitable if the data is changing frequently.
@KarthikVippala
@KarthikVippala 4 жыл бұрын
@@kritijaiswal4219 Yes ,latency is high, this methods can be used when there is shortage of area and data must not change so frequently. FIFO is best method for CDC if requirements are met, as per my knowledge.
@kritijaiswal4219
@kritijaiswal4219 4 жыл бұрын
@@KarthikVippala okay, thankyou Karthik
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Your welcome, good luck 👍
@gauravsoni91
@gauravsoni91 4 жыл бұрын
How to synchronize when multiple pulses come?
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Gourav Soni hey thanks for asking the question. If we have many pulses in our design to synchronise we use handshake synchronise to avoid metastability . Check out handshake synchronizer in my playlists of synchronizer , if that doesn't clears your doubt , feel free to ask 👍
@shaikon5617
@shaikon5617 2 жыл бұрын
Instead of "Why 2 flop synchronizers cannot synchronize a pulse" - A more accurate statement would be. "In order to synchronize correctly with 2 DFFs - the Nyquist criteria must be satisfied"
@kishandubal211
@kishandubal211 3 жыл бұрын
how will it give single pulse ? i think it will give 2 pulses over o/p because of xor.
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Hey kishan thanks for asking, here o/p will give single pulse only not two pulse , please check it once again 👍
@kishandubal6709
@kishandubal6709 3 жыл бұрын
@@KarthikVippala So, here whenever b2 is high at the same time b3 is low. So, one pulse o/p over it. Now the same pulse comes to b3, that time b2 will be low, so again another pulse will come to output. So, definitely it will give 2 pulse. By the way method is useful for single bit to streach as level with higher to lower freq synch.
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Hey kishan you are correct if b2, b3 gets low but here we may not make them low again.
@kishandubal211
@kishandubal211 3 жыл бұрын
@@KarthikVippala ok. but it doesnt matter if requires to make it as low or not. in any case it will give 2 pulses. i think xor is not required. it can take output from b2 or b3 flop as per latency requirement.
@KarthikVippala
@KarthikVippala 3 жыл бұрын
Thanks for asking , good luck brother 👊
@rajavardhanreddyg3360
@rajavardhanreddyg3360 4 жыл бұрын
How to synchronize if pulses are coming back to back? Could you please explain ?
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Hey Rajavardhan ,thank you so much for asking the question . Now coming to the explanation , since you said two pulses are back to back ie there is clock period between two pulses. I am explaining this on circuit shown in the video ie flops A,B,C,D and QA,QB,QC, QD as respective outputs. When circuits see the first pulse the we will get a high at QA , when second pulse is seen then QA will be toggled QA will be a level of two clock period . At QB we will have a metastability , this will settle after certain time and passed to QC , QC will be similar to QA and that is passed to D FLOP and we will get QD which is delayed version of QC . Now we will XOR QC and QD we will get our pulses back .
@KarthikVippala
@KarthikVippala 4 жыл бұрын
_________________________ QC _____________________| |_______________________ _________________________ QD ____________________________________| |_______________________ hey rajavardhan thank you once again for asking the question , please stay connected by smashing that subscribe button and I hope this clear's your doubt.
@rajavardhanreddyg3360
@rajavardhanreddyg3360 4 жыл бұрын
Karthik Vippala Thank you for the clear explanation.pls make videos on mux Synchronizer and handshake Synchronizer also
@KarthikVippala
@KarthikVippala 4 жыл бұрын
@@rajavardhanreddyg3360 Thank you for replying back , for sure I will make videos on other synchronizers too 🙏👍 but need some time 🤗
@KarthikVippala
@KarthikVippala 4 жыл бұрын
@@vivekvashisht3190 Hey Vivek thanks for asking the question , now coming to explaination , If we have that slow clock that if 4 times slower ,then we can delay the the level and perform an OR operation so that other clock can see the signal at posedge . This is a practical approach , for this case we need to carefully analyze the timing and then need to design. This explanation is kinda rough , but hope you pick what you need . Thanks for asking 👍
@bobbiliraghuvenkatanaresh7599
@bobbiliraghuvenkatanaresh7599 2 жыл бұрын
Give hdl code for this implementation
@KarthikVippala
@KarthikVippala 2 жыл бұрын
Sure will cover in later video's , thanks for asking, good luck and great health 👍😊
@uday5786
@uday5786 4 жыл бұрын
can u do on handshake pulse synchronizer and fifo synchronization
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Yes , but need some time 🙏
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Hey uday I have done a video on asynchronous FIFO , pls check it out , there is synchronization in it.👍
@uday5786
@uday5786 4 жыл бұрын
@@KarthikVippala can you do it before Friday..as I have seminar on that topic on Friday..plz
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Ok , I can do handshake pulse synchronizer , but for FIFO please refer this link below kzbin.info/www/bejne/Zn25eYOIos5rbsU
@KarthikVippala
@KarthikVippala 4 жыл бұрын
Hey uday , sorry man I can't do the video before or on Friday 🙏 , I have some personal work , hope you understand , need some more time .
Handshake based pulse synchronizer Explained!!
8:40
Karthik Vippala
Рет қаралды 14 М.
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 153 МЛН
THEY made a RAINBOW M&M 🤩😳 LeoNata family #shorts
00:49
LeoNata Family
Рет қаралды 12 МЛН
БОЛЬШОЙ ПЕТУШОК #shorts
00:21
Паша Осадчий
Рет қаралды 8 МЛН
MEU IRMÃO FICOU FAMOSO
00:52
Matheus Kriwat
Рет қаралды 43 МЛН
I 3D Printed a $1,224 Chair
23:56
Morley Kert
Рет қаралды 45 М.
60 - Metastability and Synchronizers
11:15
Anas Salah Eddin
Рет қаралды 6 М.
Crossing Clock Domains in an FPGA
16:38
nandland
Рет қаралды 66 М.
JK flip-flop
10:03
Ben Eater
Рет қаралды 546 М.
SPI: The serial peripheral interface
33:00
Ben Eater
Рет қаралды 669 М.
What is PCIe?
10:03
Texas Instruments
Рет қаралды 101 М.
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 153 МЛН