本系列將帶來FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開始,最詳細(xì)操作步驟,最直白的言語描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場小白及打算進(jìn)階提升的職業(yè)開發(fā)者都可以有系統(tǒng)性學(xué)習(xí)的機(jī)會。
系統(tǒng)性的掌握技術(shù)開發(fā)以及相關(guān)要求,對個人就業(yè)以及職業(yè)發(fā)展都有著潛在的幫助,希望對大家有所幫助。后續(xù)會陸續(xù)更新 Xilinx 的 Vivado、ISE 及相關(guān)操作軟件的開發(fā)的相關(guān)內(nèi)容,學(xué)習(xí)FPGA設(shè)計(jì)方法及設(shè)計(jì)思想的同時,實(shí)操結(jié)合各類操作軟件,會讓你在技術(shù)學(xué)習(xí)道路上無比的順暢,告別技術(shù)學(xué)習(xí)小BUG卡破腦殼,告別目前忽悠性的培訓(xùn)誘導(dǎo),真正的去學(xué)習(xí)去實(shí)戰(zhàn)應(yīng)用,這種快樂試試你就會懂的。話不多說,上貨。
在FPGA中,同步信號、異步信號和亞穩(wěn)態(tài)的理解
PGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列。主要是利用內(nèi)部的可編程邏輯實(shí)現(xiàn)設(shè)計(jì)者想要的功能。FPGA屬于數(shù)字邏輯芯片,其中也有可能會集成一部分模擬電路的功能,大多數(shù)模擬電路都是當(dāng)做asic進(jìn)行工作的,可編程的部分大多數(shù)都是數(shù)字邏輯部分。
數(shù)字邏輯電路是由組合邏輯和時序邏輯器件構(gòu)成,在時序邏輯器件中,常用就是時鐘觸發(fā)的寄存器。
如果在設(shè)計(jì)中,所有的寄存器的時鐘端都是連接的同一個時鐘,那么稱之為同步電路設(shè)計(jì)。所謂同步也就是所有的寄存器的輸出端都是由同一個時鐘端驅(qū)動出來的,所有的寄存器在同一個步調(diào)上進(jìn)行更新。
同步電路中的信號,我們稱之為同步信號。
如果在設(shè)計(jì)中,寄存器的時鐘端連接在不同的時鐘上,那么稱之為異步電路設(shè)計(jì)。
在異步電路中,被clk1驅(qū)動的寄存器和組合邏輯電路構(gòu)成時鐘域clk1的電路,被clk2驅(qū)動的寄存器和組合邏輯電路構(gòu)成時鐘域clk2的電路。信號從clk1的時鐘域到clk2的時鐘域,被稱為跨時鐘域。而對于信號D5來說,我們認(rèn)為它是clk1時鐘域的信號,那么對于clk2時鐘域來說,就是異步信號,因?yàn)樗慌cclk2的驅(qū)動沿對齊。
寄存器有一種特性,在clk的有效邊沿時,采樣數(shù)據(jù)D,輸出到Q,此過程如果想要穩(wěn)定進(jìn)行,那么要求,數(shù)據(jù)D在clk有效邊沿之前一段時間保持穩(wěn)定(建立時間),在clk有效邊沿之后一段時間保持穩(wěn)定(保持時間),如果任何一個不滿足,就會導(dǎo)致此過程失敗,結(jié)果就是clk的有效邊沿過去后,Q的值可能就不會出現(xiàn)預(yù)想值。那么是什么呢?先不著急,后面慢慢談。
在真實(shí)的電路中,各部分元器件都是有延遲的。對于同步電路來說,Q的更新都是在clk上上升沿之后的一段時間(Tco:輸出延遲),輸出的數(shù)據(jù)經(jīng)過組合邏輯或者線路也會有延遲(delay:線路延遲),到達(dá)下一個寄存器。此時,信號早就偏離了clk的上升沿。所以對于下級寄存器來說,這個信號也是“異步信號”。所以說真實(shí)電路中,全部的信號都是“異步信號”。
那么為什么在同步電路中,我們都稱為同步信號呢?
因?yàn)樵陔娐分校械难舆t都是已知的(TCO、delay等等),我們可以通過擴(kuò)大clk的周期,確保clk的周期大于TCO等等之類延遲之和,那么就可以保證下級寄存器采樣到數(shù)據(jù)。所以這種電路中的信號,我們依然把他稱之為同步信號。
在跨時鐘域時,由于兩個時鐘之間沒有任何關(guān)系,無論怎么調(diào)整周期,都不一定能滿足下級寄存器采樣到數(shù)據(jù),肯定不能調(diào)成一致周期,那就變成了同步設(shè)計(jì)。例:用寄存器采樣外部按鍵的輸入,那么此時外部按鍵的信號對于寄存器來說就是異步信號,因?yàn)橥獠啃盘柺请S時都有可能有效,所以無論怎么調(diào)整,都不一定能夠保證信號滿足寄存器的建立保持時間。
那么既然在很多情況下,無論如何也避免不了異步信號帶的壞處,那么能不能全部采用同步設(shè)計(jì)?顯然是不太現(xiàn)實(shí),不同接口或者存儲器等都有自己頻率,全部采用同步電路設(shè)計(jì)的方式將失去很多功能。例如:千兆以太網(wǎng)的GMII接口,采用125M接口,1080P的HDMI接口采用148.5MHz的接口。
既然無法避免,那就勇敢面對。
當(dāng)信號不滿足建立和保持時間時,寄存器會輸出什么值呢?
在上圖中,輸入信號在clock的上升沿左右有了一個從高到低的變化,即不滿足建立和保持時間。那么寄存器的輸出端就會輸出一個既不是高電平也是低電平的一個電平。
在數(shù)字電路中,高電平和低電平是兩個穩(wěn)定的電平值,能夠一直維持不變化。如果不滿足建立或者保持時間的話,輸出的電平值不高也不低,但是此電平不穩(wěn)定,稱為亞穩(wěn)態(tài)(類似于健康和亞健康)。亞穩(wěn)定是不穩(wěn)定的,終究要向高或者低電平進(jìn)行變化。
那么有人說,亞穩(wěn)態(tài)終究會走向穩(wěn)態(tài),那么豈不是沒有影響了。答案是錯誤的??梢韵胂?,亞穩(wěn)態(tài)走向穩(wěn)態(tài)是必然趨勢,可是需要一定的時間,如果在這一段時間內(nèi),被其他電路所引用,那么就會造成亞穩(wěn)態(tài)的傳播,進(jìn)而導(dǎo)致整個電路的癱瘓(因?yàn)檎麄€電路都會變成非高非低的信號在運(yùn)行)。
那么應(yīng)該如何處理呢?
對于單bit信號,我們一般采用同步寄存器鏈來進(jìn)行處理。
對于同步寄存器鏈的要求有三點(diǎn):
第一:在同步寄存器鏈中,所有的寄存器都必須用同一個或者相關(guān)(例如:一個時鐘是另外一個時鐘的相位延遲180度)時鐘驅(qū)動。
第二:第一個寄存器的輸入為外部的異步信號。
第三:在同步寄存器鏈中,所有的輸出只能給下一級使用。只有最后一級寄存器可以給其他的電路使用。
對于第一點(diǎn)和第二點(diǎn),不再解釋。下面解釋一下第三點(diǎn)。
D3信號為clk2時鐘域的異步信號,那么D4信號就有可能出現(xiàn)亞穩(wěn)態(tài)。假設(shè)D4信號出現(xiàn)亞穩(wěn)態(tài)后,恢復(fù)至穩(wěn)態(tài)的時間為T1,組合邏輯2的延遲為T2,那么D5信號得到穩(wěn)態(tài)的時間為T1+T2。如果沒有組合邏輯2時,D5信號得到穩(wěn)態(tài)的時間為T1。如果clk2的周期大于T1+T2,那么有無組合邏輯2,將不受影響;如果clk2的周期大于T1且小于T1+T2,那么有組合邏輯2,就會造成亞穩(wěn)態(tài)的傳播。如果clk2的周期小于T1,也會亞穩(wěn)態(tài)的傳播。
綜上所述,組合邏輯2,還是不要有的好,能夠大大增加D5得到穩(wěn)態(tài)的幾率。
在上述敘述中,我們只是提高了得到穩(wěn)態(tài)的幾率,但是還是有亞穩(wěn)態(tài)傳播的幾率。
在實(shí)際電路中,一般同步寄存器鏈會有兩級甚至多級。那么多級的同步寄存器鏈會有什么作用呢?
在上述敘述中得知,亞穩(wěn)態(tài)是一種不穩(wěn)定的狀態(tài),會向穩(wěn)定狀態(tài)過渡。如果第一級寄存器輸出亞穩(wěn)態(tài),恢復(fù)時間為T1,如果clk的周期小于T1,那么亞穩(wěn)態(tài)將會在第二級寄存器輸出,由于第一級亞穩(wěn)態(tài)已經(jīng)經(jīng)過clk一個周期的恢復(fù),所以在第二級寄存器輸出時,亞穩(wěn)態(tài)恢復(fù)至穩(wěn)態(tài)的時間T2將會縮短。T2< T1。
再多級的寄存器,也無法避免亞穩(wěn)態(tài),只是級數(shù)越多,最后一級輸出亞穩(wěn)態(tài)的幾率將會越低。
在實(shí)際電路中,一般采用兩級或者三級即可。
更多熱點(diǎn)文章閱讀
RK3568!四核64位ARMv8.2A架構(gòu),匯聚編譯源碼及實(shí)戰(zhàn)樣例
尺寸僅有21mm*51mm,板邊采用郵票孔設(shè)計(jì),合宙 Air105 核心板開發(fā)總結(jié)
基于ESP32芯片,搭載OpenHarmony操作系統(tǒng),NiobeU4開發(fā)板應(yīng)用實(shí)例
-
電子技術(shù)
+關(guān)注
關(guān)注
18文章
917瀏覽量
56244 -
電子發(fā)燒友論壇
+關(guān)注
關(guān)注
4文章
197瀏覽量
1137
原文標(biāo)題:【教程分享】在FPGA中,同步信號、異步信號和亞穩(wěn)態(tài)的理解
文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論