時序分析是FPGA設計中永恒的話題,也是FPGA開發人員設計進階的必由之路。慢慢來,先介紹時序分析中的一些基本概念。
時鐘的時序特性主要分為抖動(Jitter)、偏移(Skew)、占空比失真(Duty Cycle Distortion)3點。對于低速設計,基本不用考慮這些特征;對于高速設計,由于時鐘本身的原因造成的時序問題很普遍,因此必須關注。
時鐘抖動 (clock jitter)
理想的時鐘信号應該是理想的方波,但是現實中的時鐘的邊沿變化不可能是瞬變的,它有個從低到高 / 從高到低的變化過程,如下圖所示。
常見的抖動參數有3種:
時鐘抖動的原因就是噪聲。時鐘抖動是永遠存在的,當其大到可以和時鐘周期相比拟的時候,會影響到設計,這樣的抖動是不可接受的。
時鐘偏斜 (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。扇出過大意味着管理模塊過于複雜,需要控制和協調過多的下級。解決的辦法是适當增加中間層次。一個模塊的扇入是指有多少個上級模塊調用它。
扇人越大,表示該模塊被更多的上級模塊共享。這當然是我們所希望的。但是不能為了獲得高扇人而不惜代價,例如把彼此無關的功能湊在一起構成一個模塊,雖然扇人數高了,但這樣的模塊内聚程度必然低,這是我們應避免的。設計得好的系統,上層模塊有較高的扇出,下層模塊有較高的扇人。其結構圖像清真寺的塔,上面尖,中間寬,下面小。
時序分析起點和終點
數據輸出延時 (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表示數據需求時間小于數據到達時間,不滿足時序(時序的欠缺量)。
最大時鐘頻率
時鐘最小周期:系統時鐘能運行的最高頻率。
最小時鐘周期為數據到達時間等于數據需求時間。
時序分析
分析上圖,數據傳播的路徑從上一級觸發器到下一級觸發器建立經過的數據時延總和為:Tclk1 Tco Tdata Tsetup - slack Tsu。
在兩級寄存器之間,時鐘間隔為:Tclk Tclk2。
根據建立時間要求(在下一個時鐘上升沿到來的時候,數據必須穩定,且保持一定的時間Tsu)可以列一個不等式:數據時延時鐘間隔,即:Tclk1 Tco Tdata Tsetup - slack Tsu = Tclk Tclk2。
同理,根據保持時間要求(時鐘上升沿到來後,寄存器鎖存數據的時候,數據要保持一定的穩定時間Th)可以列出:Tco Tdata = Th。
随着系統時鐘 fclk 變大時,Tclk變小,則要求 Tco Tdata 也變小,當 Tco Tdata 不滿足第一個不等式時,不滿足建立時間要求;但是,Tco Tdata 也不是越小越好,當其太小時,不滿足第二個不等式時,觸發器不能正常鎖存數據,即不滿足保持時間要求。從某種意義上說,Th限制了數據傳輸速率。
對于設計者來說最大的目的是提高時序的裕量,這樣即使信号完整性上出現一點問題,或者外界環境發生一定的變化,系統仍然能正常工作,這就是一個設計優良的系統應該體現出的超強的穩定性。
-END-
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!