建立时间与保持时间
建立時間與保持時間
概述: 建立時間、保持時間模型展現(xiàn);建立時間余量、保持時間余量的計算;以及系統(tǒng)允許時鐘頻率的最大頻率計算。
文章目錄
- 1、建立時間與保持時間概述及模型
- 2、寄存器之間數(shù)據(jù)傳輸時建立時間與保持時間
- 3、寄存器之間數(shù)據(jù)傳輸時建立時間余量與保持時間余量計算
- 4、 FPGA允許的最大時鐘頻率或最小時鐘周期
- 5、計算FPGA時鐘所允許的最大頻率或最小時鐘周期
- 6、違反建立和保持時間會發(fā)生什么?
- 7、Vivado中建立時間余量與保持時間余量的計算。
1、建立時間與保持時間概述及模型
建立時間(Tsu): 在時鐘采樣沿之前,數(shù)據(jù)必須保持穩(wěn)定的時間,該時間量稱為建立時間。
保持時間(Th): 在時鐘采樣沿之后,數(shù)據(jù)必須保持穩(wěn)定的最短時間。
理想最優(yōu)的建立時間和保持時間出現(xiàn)在數(shù)據(jù)中間采樣的位置,如下所示,實質(zhì)就是使觸發(fā)器在采樣沿得到穩(wěn)定的數(shù)據(jù),如果數(shù)據(jù)在時鐘上升沿的建立保持時間內(nèi){latch edge-setup,latch edge+hold time}發(fā)生跳變,則會產(chǎn)生亞穩(wěn)態(tài)輸出,即輸出值在短時間內(nèi)處于不確定態(tài),有可能是1,有可能是0,也可能什么都不是,處于中間態(tài)。
在出現(xiàn)沿打沿的現(xiàn)象時會出現(xiàn)建立時間最大值或者保持時間最大值。
理想建立時間最大值:
理想保持時間最大值:
2、寄存器之間數(shù)據(jù)傳輸時建立時間與保持時間
??寄存器數(shù)據(jù)傳輸?shù)哪P?#xff1a;數(shù)據(jù)從在Reg1到Reg2,理想情況下采樣沿到達Reg2時,數(shù)據(jù)的中間位置到達Reg2的數(shù)據(jù)端,這樣出現(xiàn)最優(yōu)的建立時間和保持時間,此時采樣的數(shù)據(jù)也是最穩(wěn)定的,如果時鐘早到或者數(shù)據(jù)早到就會產(chǎn)生余量,嚴重的情況下就會產(chǎn)生時序為例。
數(shù)據(jù)和時鐘到達Reg2最優(yōu)情況,采樣沿位于數(shù)據(jù)的中間位置:
出現(xiàn)保持時間最大值采樣沿,采樣沿與數(shù)據(jù)起始位置對齊:
出現(xiàn)建立時間最大值,采樣沿與數(shù)據(jù)結束為止對齊:
3、寄存器之間數(shù)據(jù)傳輸時建立時間余量與保持時間余量計算
在實際的數(shù)據(jù)傳輸中器件和線路均會存在延遲,寄存器間數(shù)據(jù)傳輸模型如下所示:
Tclk1 :時鐘到達Reg1的時鐘延時。
Tco?:數(shù)據(jù)從Reg1器件D到Q的物理延時。
Tclk2 :時鐘到達Reg2的時鐘延時。
Tdata:數(shù)據(jù)從Reg1的Q端到Reg2的D端的線路延時。
Tsu/Th:保持時間/建立時間。
建立時間余量(Setup Slack): 要求數(shù)據(jù)到達時間和數(shù)據(jù)實際到達時間的差值。
實際考慮線路延時時數(shù)據(jù)從Reg1到Reg2的時序圖如下所示:
Clk_in:輸入時鐘。
Clk_Reg1:Clk_in經(jīng)過Tclk1時延到達Reg1的時鐘。
Reg1 Q :數(shù)據(jù)從Reg1的D端進入到達Q端經(jīng)過Tco時延的數(shù)據(jù)。
Reg1 D :數(shù)據(jù)從Reg1的Q端輸出經(jīng)過Tdata時延到達Reg2的D端的數(shù)據(jù)。
Clk_Reg2:Clk_in經(jīng)過Tclk2時延到達Reg2的時鐘。
通過上圖觀察:(Tcycle為一個時鐘周期)
要求數(shù)據(jù)達到的時間 = Tcycle + Tclk2 - Tsu。(圖中②)
實際數(shù)據(jù)到達的時間 = Tclk1 + Tco + Tdata。(圖中①)
建立時間余量(Setup Slack)= Tcycle + Tclk2 - Tsu - (Tclk1 + Tco + Tdata)。
保持時間余量(Hold Slack): 數(shù)據(jù)實際結束位置和要求數(shù)據(jù)結束位置的差值。
實際考慮線路延時時數(shù)據(jù)從Reg1到Reg2的時序圖如下所示:
Clk_in :輸入時鐘。
Clk_Reg1:Clk_in經(jīng)過Tclk1時延到達Reg1的時鐘。
Reg1 Q :數(shù)據(jù)從Reg1的D端進入到達Q端經(jīng)過Tco時延的數(shù)據(jù)。
Reg1 D :數(shù)據(jù)從Reg1的Q端輸出經(jīng)過Tdata時延到達Reg2的D端的數(shù)據(jù)。
Clk_Reg2:Clk_in經(jīng)過Tclk2時延到達Reg2的時鐘。
通過上圖觀察:(Tcycle為一個時鐘周期)
實際數(shù)據(jù)結束的時間 = Tcycle + Tclk1 + Tco + Tdata。(圖中②)
要求數(shù)據(jù)結束的時間 = Tcycle + Tclk2 + Th。(圖中①)
保持時間余量(Told Slack)= Tcycle + Tclk1 + Tco + Tdata - (Tcycle + Tclk2 + Th)。
從上面的公式中可以看出建立時間余量(Told Slack)與時鐘周期Tcycle 無關,所以時鐘頻率也與保持時間余量無關。
4、 FPGA允許的最大時鐘頻率或最小時鐘周期
通過上面的推導時鐘周期和頻率與保持時間無關,所以在 建立時間余量為0時取得最大時鐘頻率即最小時鐘周期。
5、計算FPGA時鐘所允許的最大頻率或最小時鐘周期
例: 計算建立時間余量Setup Slack 與 系統(tǒng)時鐘允許的最大時鐘頻率 Fmax。
??時鐘周期為10ns;Clk in到Reg1的時延為3ns;Clk in到Reg2的時延為2ns;Reg1 Q端到Reg2 D端的時延為3ns;Tus=0.5ns;Tco=1ns;建立時間余量?FPGA允許的最大時鐘頻率?
建立時間余量(Setup Slack)= Tcycle + Tclk2 - Tsu - (Tclk1 + Tco + Tdata)。
Setup Slack = 10 + 2 - 0.5 -(3 + 1 +3)= 4.5ns
建立時間余量為0時取得最大時鐘頻率即最小時鐘周期。
Fmax = 1/(Tcycle - Setup Slack)= 1/(10 - 4.5)。
例: 計算保持時間余量Hold Slack 與 系統(tǒng)時鐘允許的最大時鐘頻率 Fmax。
??時鐘周期為10ns;Clk in到Reg1的時延為3ns;Clk in到Reg2的時延為2ns;Reg1 Q端到Reg2 D端的時延為3ns;Th=0.5ns;Tco=1ns;保持時間余量?FPGA允許的最大時鐘頻率?
保持時間余量(Told Slack)= Tcycle + Tclk1 + Tco + Tdata - (Tcycle + Tclk2 + Th)=Tclk1 + Tco + Tdata - Tclk2 - Th。
Told Slack = 3 + 1 + 3 -2 - 0.5 = 4.5。
Fmax與保持時間余量無關。
6、違反建立和保持時間會發(fā)生什么?
??在觸發(fā)器建立期間,如果數(shù)據(jù)在時鐘上升沿的建立保持時間內(nèi){latch edge-setup,latch edge+hold time}發(fā)生跳變,則會產(chǎn)生亞穩(wěn)態(tài)輸出,即輸出值在短時間內(nèi)處于不確定態(tài),有可能是1,有可能是0,也可能什么都不是,處于中間態(tài)。
7、Vivado中建立時間余量與保持時間余量的計算。
建立時間余量分析:
如下打開時序分析報告:
在報告中建立時間顯示紅色,表明建立時間余量不滿足時序要求。
雙擊該路徑:
數(shù)據(jù)實際到達的時間為19.592。
要求數(shù)據(jù)到達的時間為18.145。
建立時間余量 = 要求數(shù)據(jù)到達的時間 - 實際數(shù)據(jù)到達的施加 = 18.145-19.592= -1.447。
負值,則要求達不到。
保持時間余量分析:
數(shù)據(jù)實際結束的時間為-0.287。
數(shù)據(jù)要求結束的時間為-0.336.
保持時間余量 = 數(shù)據(jù)實際結束的時間 - 數(shù)據(jù)要求結束的時間 = -0.287-(-0.336)=0.049ns。
為正值,時序要求可以達到。
★★★如有錯誤,歡迎指導!!!
總結
- 上一篇: 7723java版_刺马_JAVA游戏免
- 下一篇: 嵌入式ARM下使用ALSA USB声卡