本系列將帶來FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開始,最詳細(xì)操作步驟,最直白的言語描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場小白及打算進(jìn)階提升的職業(yè)開發(fā)者都可以有系統(tǒng)性學(xué)習(xí)的機(jī)會(huì)。
系統(tǒng)性的掌握技術(shù)開發(fā)以及相關(guān)要求,對個(gè)人就業(yè)以及職業(yè)發(fā)展都有著潛在的幫助,希望對大家有所幫助。后續(xù)會(huì)陸續(xù)更新 Xilinx 的 Vivado、ISE 及相關(guān)操作軟件的開發(fā)的相關(guān)內(nèi)容,學(xué)習(xí)FPGA設(shè)計(jì)方法及設(shè)計(jì)思想的同時(shí),實(shí)操結(jié)合各類操作軟件,會(huì)讓你在技術(shù)學(xué)習(xí)道路上無比的順暢,告別技術(shù)學(xué)習(xí)小BUG卡破腦殼,告別目前忽悠性的培訓(xùn)誘導(dǎo),真正的去學(xué)習(xí)去實(shí)戰(zhàn)應(yīng)用,這種快樂試試你就會(huì)懂的。話不多說,上貨。
在FPGA中,同步信號(hào)、異步信號(hào)和亞穩(wěn)態(tài)的理解
PGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列。主要是利用內(nèi)部的可編程邏輯實(shí)現(xiàn)設(shè)計(jì)者想要的功能。FPGA屬于數(shù)字邏輯芯片,其中也有可能會(huì)集成一部分模擬電路的功能,大多數(shù)模擬電路都是當(dāng)做asic進(jìn)行工作的,可編程的部分大多數(shù)都是數(shù)字邏輯部分。
數(shù)字邏輯電路是由組合邏輯和時(shí)序邏輯器件構(gòu)成,在時(shí)序邏輯器件中,常用就是時(shí)鐘觸發(fā)的寄存器。

如果在設(shè)計(jì)中,所有的寄存器的時(shí)鐘端都是連接的同一個(gè)時(shí)鐘,那么稱之為同步電路設(shè)計(jì)。所謂同步也就是所有的寄存器的輸出端都是由同一個(gè)時(shí)鐘端驅(qū)動(dòng)出來的,所有的寄存器在同一個(gè)步調(diào)上進(jìn)行更新。
同步電路中的信號(hào),我們稱之為同步信號(hào)。
如果在設(shè)計(jì)中,寄存器的時(shí)鐘端連接在不同的時(shí)鐘上,那么稱之為異步電路設(shè)計(jì)。

在異步電路中,被clk1驅(qū)動(dòng)的寄存器和組合邏輯電路構(gòu)成時(shí)鐘域clk1的電路,被clk2驅(qū)動(dòng)的寄存器和組合邏輯電路構(gòu)成時(shí)鐘域clk2的電路。信號(hào)從clk1的時(shí)鐘域到clk2的時(shí)鐘域,被稱為跨時(shí)鐘域。而對于信號(hào)D5來說,我們認(rèn)為它是clk1時(shí)鐘域的信號(hào),那么對于clk2時(shí)鐘域來說,就是異步信號(hào),因?yàn)樗慌cclk2的驅(qū)動(dòng)沿對齊。
寄存器有一種特性,在clk的有效邊沿時(shí),采樣數(shù)據(jù)D,輸出到Q,此過程如果想要穩(wěn)定進(jìn)行,那么要求,數(shù)據(jù)D在clk有效邊沿之前一段時(shí)間保持穩(wěn)定(建立時(shí)間),在clk有效邊沿之后一段時(shí)間保持穩(wěn)定(保持時(shí)間),如果任何一個(gè)不滿足,就會(huì)導(dǎo)致此過程失敗,結(jié)果就是clk的有效邊沿過去后,Q的值可能就不會(huì)出現(xiàn)預(yù)想值。那么是什么呢?先不著急,后面慢慢談。
在真實(shí)的電路中,各部分元器件都是有延遲的。對于同步電路來說,Q的更新都是在clk上上升沿之后的一段時(shí)間(Tco:輸出延遲),輸出的數(shù)據(jù)經(jīng)過組合邏輯或者線路也會(huì)有延遲(delay:線路延遲),到達(dá)下一個(gè)寄存器。此時(shí),信號(hào)早就偏離了clk的上升沿。所以對于下級寄存器來說,這個(gè)信號(hào)也是“異步信號(hào)”。所以說真實(shí)電路中,全部的信號(hào)都是“異步信號(hào)”。
那么為什么在同步電路中,我們都稱為同步信號(hào)呢?
因?yàn)樵陔娐分?,所有的延遲都是已知的(TCO、delay等等),我們可以通過擴(kuò)大clk的周期,確保clk的周期大于TCO等等之類延遲之和,那么就可以保證下級寄存器采樣到數(shù)據(jù)。所以這種電路中的信號(hào),我們依然把他稱之為同步信號(hào)。
在跨時(shí)鐘域時(shí),由于兩個(gè)時(shí)鐘之間沒有任何關(guān)系,無論怎么調(diào)整周期,都不一定能滿足下級寄存器采樣到數(shù)據(jù),肯定不能調(diào)成一致周期,那就變成了同步設(shè)計(jì)。例:用寄存器采樣外部按鍵的輸入,那么此時(shí)外部按鍵的信號(hào)對于寄存器來說就是異步信號(hào),因?yàn)橥獠啃盘?hào)是隨時(shí)都有可能有效,所以無論怎么調(diào)整,都不一定能夠保證信號(hào)滿足寄存器的建立保持時(shí)間。
那么既然在很多情況下,無論如何也避免不了異步信號(hào)帶的壞處,那么能不能全部采用同步設(shè)計(jì)?顯然是不太現(xiàn)實(shí),不同接口或者存儲(chǔ)器等都有自己頻率,全部采用同步電路設(shè)計(jì)的方式將失去很多功能。例如:千兆以太網(wǎng)的GMII接口,采用125M接口,1080P的HDMI接口采用148.5MHz的接口。
既然無法避免,那就勇敢面對。
當(dāng)信號(hào)不滿足建立和保持時(shí)間時(shí),寄存器會(huì)輸出什么值呢?

在上圖中,輸入信號(hào)在clock的上升沿左右有了一個(gè)從高到低的變化,即不滿足建立和保持時(shí)間。那么寄存器的輸出端就會(huì)輸出一個(gè)既不是高電平也是低電平的一個(gè)電平。
在數(shù)字電路中,高電平和低電平是兩個(gè)穩(wěn)定的電平值,能夠一直維持不變化。如果不滿足建立或者保持時(shí)間的話,輸出的電平值不高也不低,但是此電平不穩(wěn)定,稱為亞穩(wěn)態(tài)(類似于健康和亞健康)。亞穩(wěn)定是不穩(wěn)定的,終究要向高或者低電平進(jìn)行變化。
那么有人說,亞穩(wěn)態(tài)終究會(huì)走向穩(wěn)態(tài),那么豈不是沒有影響了。答案是錯(cuò)誤的??梢韵胂螅瑏喎€(wěn)態(tài)走向穩(wěn)態(tài)是必然趨勢,可是需要一定的時(shí)間,如果在這一段時(shí)間內(nèi),被其他電路所引用,那么就會(huì)造成亞穩(wěn)態(tài)的傳播,進(jìn)而導(dǎo)致整個(gè)電路的癱瘓(因?yàn)檎麄€(gè)電路都會(huì)變成非高非低的信號(hào)在運(yùn)行)。
那么應(yīng)該如何處理呢?
對于單bit信號(hào),我們一般采用同步寄存器鏈來進(jìn)行處理。

對于同步寄存器鏈的要求有三點(diǎn):

第一:在同步寄存器鏈中,所有的寄存器都必須用同一個(gè)或者相關(guān)(例如:一個(gè)時(shí)鐘是另外一個(gè)時(shí)鐘的相位延遲180度)時(shí)鐘驅(qū)動(dòng)。
第二:第一個(gè)寄存器的輸入為外部的異步信號(hào)。
第三:在同步寄存器鏈中,所有的輸出只能給下一級使用。只有最后一級寄存器可以給其他的電路使用。
對于第一點(diǎn)和第二點(diǎn),不再解釋。下面解釋一下第三點(diǎn)。

D3信號(hào)為clk2時(shí)鐘域的異步信號(hào),那么D4信號(hào)就有可能出現(xiàn)亞穩(wěn)態(tài)。假設(shè)D4信號(hào)出現(xiàn)亞穩(wěn)態(tài)后,恢復(fù)至穩(wěn)態(tài)的時(shí)間為T1,組合邏輯2的延遲為T2,那么D5信號(hào)得到穩(wěn)態(tài)的時(shí)間為T1+T2。如果沒有組合邏輯2時(shí),D5信號(hào)得到穩(wěn)態(tài)的時(shí)間為T1。如果clk2的周期大于T1+T2,那么有無組合邏輯2,將不受影響;如果clk2的周期大于T1且小于T1+T2,那么有組合邏輯2,就會(huì)造成亞穩(wěn)態(tài)的傳播。如果clk2的周期小于T1,也會(huì)亞穩(wěn)態(tài)的傳播。
綜上所述,組合邏輯2,還是不要有的好,能夠大大增加D5得到穩(wěn)態(tài)的幾率。
在上述敘述中,我們只是提高了得到穩(wěn)態(tài)的幾率,但是還是有亞穩(wěn)態(tài)傳播的幾率。
在實(shí)際電路中,一般同步寄存器鏈會(huì)有兩級甚至多級。那么多級的同步寄存器鏈會(huì)有什么作用呢?
在上述敘述中得知,亞穩(wěn)態(tài)是一種不穩(wěn)定的狀態(tài),會(huì)向穩(wěn)定狀態(tài)過渡。如果第一級寄存器輸出亞穩(wěn)態(tài),恢復(fù)時(shí)間為T1,如果clk的周期小于T1,那么亞穩(wěn)態(tài)將會(huì)在第二級寄存器輸出,由于第一級亞穩(wěn)態(tài)已經(jīng)經(jīng)過clk一個(gè)周期的恢復(fù),所以在第二級寄存器輸出時(shí),亞穩(wěn)態(tài)恢復(fù)至穩(wěn)態(tài)的時(shí)間T2將會(huì)縮短。T2< T1。
再多級的寄存器,也無法避免亞穩(wěn)態(tài),只是級數(shù)越多,最后一級輸出亞穩(wěn)態(tài)的幾率將會(huì)越低。
在實(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í)例
原文標(biāo)題:【教程分享】在FPGA中,同步信號(hào)、異步信號(hào)和亞穩(wěn)態(tài)的理解
文章出處:【微信公眾號(hào):電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
電子技術(shù)
+關(guān)注
關(guān)注
19文章
930瀏覽量
60047 -
電子發(fā)燒友論壇
+關(guān)注
關(guān)注
5文章
198瀏覽量
1667
原文標(biāo)題:【教程分享】在FPGA中,同步信號(hào)、異步信號(hào)和亞穩(wěn)態(tài)的理解
文章出處:【微信號(hào):gh_9b9470648b3c,微信公眾號(hào):電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
大科學(xué)裝置信號(hào)采集處理解決方案
單片機(jī)中的串口通訊串行同步通信與串行異步通信
DBC解析:信號(hào)位置與物理值計(jì)算
信號(hào)同步控制器 輕松無延時(shí)同步多種設(shè)備信號(hào)
射頻收發(fā)儀 解鎖多衛(wèi)星信號(hào)同步采集的“核心引擎”
泰克信號(hào)發(fā)生器在射頻信號(hào)捕獲測試中的應(yīng)用技巧
AMD FPGA異步模式與同步模式的對比
信號(hào)發(fā)生器AFG31052在多載波信號(hào)生成中的應(yīng)用
AnyWay變頻功率分析儀同步源來自電壓還是電流信號(hào)?
跨異步時(shí)鐘域處理方法大全
AN65974在vivado 2018.2中進(jìn)行仿真時(shí), 無法獲取輸出數(shù)據(jù)信號(hào)是怎么回事?
模擬示波器在信號(hào)處理實(shí)驗(yàn)中有哪些應(yīng)用?
是德示波器在射頻信號(hào)調(diào)制分析中的應(yīng)用
是德示波器在藍(lán)牙信號(hào)測試中的應(yīng)用與優(yōu)勢
信號(hào)發(fā)生器在相位噪聲測量中的應(yīng)用
【教程分享】在FPGA中,同步信號(hào)、異步信號(hào)和亞穩(wěn)態(tài)的理解
評論