時序分析是fpga設計中永恆的話題,也是fpga開發人員設計高階的必由之路。慢慢來,先介紹時序分析中的一些基本概念。
時鐘的時序特性主要分為抖動(jitter)、偏移(skew)、占空比失真(duty cycle distortion)3點。對於低速設計,基本不用考慮這些特徵;對於高速設計,由於時鐘本身的原因造成的時序問題很普遍,因此必須關注。
時鐘抖動 (clock jitter)
理想的時鐘訊號應該是理想的方波,但是現實中的時鐘的邊沿變化不可能是瞬變的,它有個從低到高 / 從高到低的變化過程,如下圖所示。
常見的抖動引數有3種:
週期抖動(period jitter):週期抖動率(period jitter)測量時鐘輸出傳輸偏離其理想位置的最大偏離。period jitter代表週期差抖動的上下邊界。
週期差抖動(cycle-to-cycle jitter):週期差抖動率(cycle-to-cycle jitter)是兩個相鄰週期的時間偏差。它總是小於週期抖動(period jitter)
長期抖動(long-term jitter):長期抖動率如下圖(long-term jitter)定義為乙個時鐘沿相對於基準週期時鐘沿經過一段時間的延時之後,與其理想位置的偏離。此測量可以捕獲鎖相環低頻週期變化(緩慢的,頻率很低的)。長期抖動對圖形、序列連線通訊系統、印表機和任何光柵掃瞄操作非常重要。
時鐘抖動的原因就是雜訊。時鐘抖動是永遠存在的,當其大到可以和時鐘週期相比擬的時候,會影響到設計,這樣的抖動是不可接受的。
時鐘偏斜 (clock skew)
時鐘訊號要提供給整個電路的時序單元,所以時鐘訊號線非常長,並構成分布式的rc網路。它的延時與時鐘線的長度、時序單元的負載電容、個數有關,所以產生所謂的時鐘偏移。時鐘偏移是指同乙個時鐘訊號到達兩個不同的暫存器之間的時間差值,根據差值可以分為正偏移和負偏移。
時鐘偏移的計算公式:tskew = tclk2 - tclk1
時鐘偏移是永遠存在的,當其大到一定程度會影響電路的時序。解決方法就是在fpga的設計中讓主要的時鐘訊號走全域性時鐘網路。該網路採用全銅工藝和樹狀結構,並設計了專用時鐘緩衝和驅動網路,到所有的io單元、clb和塊ram的偏移非常小,可以忽略不計。
占空比失真dcd (duty cycle distortion)
即時鐘不對稱,時鐘的脈衝寬度發生了變化。dcd會吞噬大量的時序裕量,造成數碼訊號的失真,使過零區間偏離理想的位置。dcd通常是由訊號的上公升沿和下降沿之間時序不同而造成的。
訊號扇入/扇出 (fan-in/fan-out)
扇出(fan-out)是定義單個邏輯門能夠驅動的數碼訊號輸入最大量的術語。大多數ttl邏輯門能夠為10個其他數字門或驅動器提供訊號。因而,乙個典型的ttl邏輯門有10個扇出訊號。
在一些數字系統中,必須有乙個單一的ttl邏輯門來驅動10個以上的其他門或驅動器。這種情況下,被稱為緩衝器(buf)的驅動器可以用在ttl邏輯門與它必須驅動的多重驅動器之間。這種型別的緩衝器有25至30個扇出訊號。邏輯反向器(也被稱為非門)在大多數數位電路中能夠輔助這一功能。
模組的扇出是指模組的直屬下層模組的個數。一般認為,設計得好的系統平均扇出是3或4。乙個模組的扇出數過大或過小都不理想,過大比過小更嚴重。一般認為扇出的上限不超過7。扇出過大意味著管理模組過於複雜,需要控制和協調過多的下級。解決的辦法是適當增加中間層次。乙個模組的扇入是指有多少個上級模組呼叫它。
扇人越大,表示該模組被更多的上級模組共享。這當然是我們所希望的。但是不能為了獲得高扇人而不惜代價,例如把彼此無關的功能湊在一起構成乙個模組,雖然扇人數高了,但這樣的模組內聚程度必然低,這是我們應避免的。設計得好的系統,上層模組有較高的扇出,下層模組有較高的扇人。其結構影象清真寺的塔,上面尖,中間寬,下面小。
時序分析起點和終點
時序分析起點(launch edge):第一級暫存器資料變化的時鐘邊沿,也是靜態時序分析的起點。
時序分析終點(latch edge):資料鎖存的時鐘邊沿,也是靜態時序分析的終點。
資料輸出延時 (tco)
資料輸出延時(tco):這個時間指的是當時鐘有效沿變化後,資料從輸入端到輸出端的最小時間間隔。
建立時間 (setup time)
建立時間(setup time)是指觸發器的時鐘訊號上公升沿到來以前,資料穩定不變的時間。輸入訊號應提前時鐘上公升沿(如上公升沿有效)t 時間到達晶元,這個t就是建立時間。簡而言之,時鐘邊沿觸發前,要求資料必須存在一段時間,這就是器件需要的建立時間。如不滿足建立時間,這個資料就不能被這一時鐘打入觸發器,只有在下乙個時鐘上公升沿,資料才能被打入觸發器。
保持時間 (hold time)
保持時間(hold time)是指觸發器的時鐘訊號上公升沿到來以後,資料穩定不變的時間。簡而言之,時鐘邊沿觸發後,資料也必須保持一段時間,以便能夠穩定讀取,這就是器件需要的保持時間。如果hold time 不夠,資料同樣不能被打入觸發器。
如果不滿足建立和保持時間的話,那麼dff(d type flip-flop/d型別觸發器) 將不能正確地取樣到資料,將會出現亞穩態(metastability )的情況。如果資料訊號在時鐘沿觸發前後持續的時間均超過建立和保持時間,那麼超過量就分別被稱為建立時間裕量和保持時間裕量。
資料到達時間 (data arrival time)
輸入資料在有效時鐘沿后到達所需要的時間。主要分為三部分:時鐘到達暫存器時間(tclk1),暫存器輸出延時(tco)和資料傳輸延時(tdata)。
資料到達時間的計算公式:
data arrival time = launch edge + tclk1 +tco + tdata
時鐘到達時間 (clock arrival time)
時鐘從latch邊沿到達鎖存暫存器時鐘輸入端所消耗的時間為時鐘到達時間。
時鐘到達時間的計算公式:
clock arrival time = lacth edge + tclk2
建立裕量 (setup slack)
當資料需求時間大於資料到達時間時,就說時間有餘量,slack是表示設計是否滿足時序的乙個稱謂。
建立裕量的計算公式:
setup slack = data required time - data arrival time
正的slack表示資料需求時間大於資料到達時間,滿足時序(時序的餘量),負的slack表示資料需求時間小於資料到達時間,不滿足時序(時序的欠缺量)。
最大時鐘頻率
時鐘最小週期:系統時鐘能執行的最高頻率。
當資料需求時間大於資料到達時間時,時鐘具有餘量
當資料需求時間小於資料到達時間時,不滿足時序要求,暫存器經歷亞穩態或者不能正確獲得資料
當資料需求時間等於資料到達時間時,這是最小時鐘執行頻率,剛好滿足時序
最小時鐘週期為資料到達時間等於資料需求時間。
時序分析
在兩級暫存器之間,時鐘間隔為:tclk + tclk2。
根據建立時間要求(在下乙個時鐘上公升沿到來的時候,資料必須穩定,且保持一定的時間tsu)可以列乙個不等式:資料時延時鐘間隔,即:tclk1 + tco + tdata + tsetup - slack + tsu = tclk + tclk2。
同理,根據保持時間要求(時鐘上公升沿到來後,暫存器鎖存資料的時候,資料要保持一定的穩定時間th)可以列出:tco + tdata = th。
隨著系統時鐘 fclk 變大時,tclk變小,則要求 tco + tdata 也變小,當 tco + tdata 不滿足第乙個不等式時,不滿足建立時間要求;但是,tco + tdata 也不是越小越好,當其太小時,不滿足第二個不等式時,觸發器不能正常鎖存資料,即不滿足保持時間要求。從某種意義上說,th限制了資料傳輸速率。
FPGA時序分析的一些理解
2014 12 02 19 29 1048人閱讀收藏 舉報 fpga基礎知識 39 最開始看的一些資料,大家其實講得都差不多,但是我卻看得雲裡霧裡的,應該是還沒真正理解這個東西。今天心血來潮又把 七天玩轉altrea之時序篇 拿出來看了看,應該有些豁然開朗的感覺,在下實屬愚笨,想透徹理解乙個東西太慢...
時序分析中的一些基本概念。
時序分析時fpga設計中永恆的話題,也是fpga開發人員設計高階的必由之路。慢慢來,先介紹時序分析中的一些基本概念。1.時鐘相關時鐘的時序特性主要分為抖動 jitter 偏移 skew 占空比失真 duty cycledistortion 3點。對於低速設計,基本不用考慮這些特徵 對於高速設計,由於...
RabbitMQ RabbitMQ的一些基礎概念
工作中使用的是rabbitmq,需要對其進行熟悉。使用之前,弄清楚它是什麼東西,解決什麼問題。開發中,有一些任務並無須實時執行,比如 如上,儲存日誌表 傳送郵件等任務的實時性並不強,在系統繁忙時有可能阻塞,堵塞容易導致任務失敗。如果我們把它們放入佇列中,輪候執行,減低耦合的同時,是不是也緩解了系統壓...