在同步電路設(shè)計(jì)中,邊沿檢測(cè)是必不可少的!
例如:在一個(gè)時(shí)鐘頻率16MHz的同步串行總線接收電路里,串行總線波特率為1Mbps。在串行總線的發(fā)送端是在同步時(shí)鐘(1MHz)的上升沿輸出數(shù)據(jù),在接收端在同步時(shí)鐘的下降沿對(duì)輸入數(shù)據(jù)進(jìn)行接收采樣。在這個(gè)接收電路里檢測(cè)同步時(shí)鐘的下降沿是必不可少的。假設(shè)主時(shí)鐘-clk,同步時(shí)鐘-rck,同步數(shù)據(jù)-data。
有些人在邊沿檢測(cè)的時(shí)候就喜歡這樣做:
但是大家忽略了一種情況,就是clk與rck之間比沒(méi)有必然的同步關(guān)系,當(dāng)rck的下降沿剛好略滯后于clk的上升沿(大概幾個(gè)ns),這樣就會(huì)使高電平 保持時(shí)間不足,就會(huì)發(fā)現(xiàn)在本時(shí)鐘上升沿時(shí)還是rck_dly=‘1’ and rck=‘1’,而在下一個(gè)時(shí)鐘的上升沿來(lái)的時(shí)候,就會(huì)出現(xiàn)rck_dly=‘0’ and rck=‘0’,所以就不會(huì)有rck_dly=‘1’ and rck=‘0’的情況出現(xiàn)??! 從而導(dǎo)致丟失數(shù)據(jù)。
如果用下面的方法就可以避免上面的情況,并且可以做到正確無(wú)誤地接收數(shù)據(jù):
至于以上電路為什么就可以克服上面出現(xiàn)的情況,就留給大家分析了。
不得不承認(rèn)后一種方法所耗的資源要比前一種方法多(一個(gè)觸發(fā)器),但是就可以大大提高可靠性,這絕對(duì)是物有所值!!