日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

建立时间与保持时间

發布時間:2024/3/12 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 建立时间与保持时间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建立時間與保持時間

概述: 建立時間、保持時間模型展現;建立時間余量、保持時間余量的計算;以及系統允許時鐘頻率的最大頻率計算。

文章目錄

    • 1、建立時間與保持時間概述及模型
    • 2、寄存器之間數據傳輸時建立時間與保持時間
    • 3、寄存器之間數據傳輸時建立時間余量與保持時間余量計算
    • 4、 FPGA允許的最大時鐘頻率或最小時鐘周期
    • 5、計算FPGA時鐘所允許的最大頻率或最小時鐘周期
    • 6、違反建立和保持時間會發生什么?
    • 7、Vivado中建立時間余量與保持時間余量的計算。


1、建立時間與保持時間概述及模型

建立時間(Tsu): 在時鐘采樣沿之前,數據必須保持穩定的時間,該時間量稱為建立時間。

保持時間(Th): 在時鐘采樣沿之后,數據必須保持穩定的最短時間。

理想最優的建立時間和保持時間出現在數據中間采樣的位置,如下所示,實質就是使觸發器在采樣沿得到穩定的數據,如果數據在時鐘上升沿的建立保持時間內{latch edge-setup,latch edge+hold time}發生跳變,則會產生亞穩態輸出,即輸出值在短時間內處于不確定態,有可能是1,有可能是0,也可能什么都不是,處于中間態。

在出現沿打沿的現象時會出現建立時間最大值或者保持時間最大值。
理想建立時間最大值:

理想保持時間最大值:

2、寄存器之間數據傳輸時建立時間與保持時間

??寄存器數據傳輸的模型:數據從在Reg1到Reg2,理想情況下采樣沿到達Reg2時,數據的中間位置到達Reg2的數據端,這樣出現最優的建立時間和保持時間,此時采樣的數據也是最穩定的,如果時鐘早到或者數據早到就會產生余量,嚴重的情況下就會產生時序為例。

數據和時鐘到達Reg2最優情況,采樣沿位于數據的中間位置:

出現保持時間最大值采樣沿,采樣沿與數據起始位置對齊:

出現建立時間最大值,采樣沿與數據結束為止對齊:

3、寄存器之間數據傳輸時建立時間余量與保持時間余量計算

在實際的數據傳輸中器件和線路均會存在延遲,寄存器間數據傳輸模型如下所示:

Tclk1 :時鐘到達Reg1的時鐘延時。
Tco?:數據從Reg1器件D到Q的物理延時。
Tclk2 :時鐘到達Reg2的時鐘延時。
Tdata:數據從Reg1的Q端到Reg2的D端的線路延時。
Tsu/Th:保持時間/建立時間。
建立時間余量(Setup Slack): 要求數據到達時間和數據實際到達時間的差值。

實際考慮線路延時時數據從Reg1到Reg2的時序圖如下所示:

Clk_in:輸入時鐘。
Clk_Reg1:Clk_in經過Tclk1時延到達Reg1的時鐘。
Reg1 Q :數據從Reg1的D端進入到達Q端經過Tco時延的數據。
Reg1 D :數據從Reg1的Q端輸出經過Tdata時延到達Reg2的D端的數據。
Clk_Reg2:Clk_in經過Tclk2時延到達Reg2的時鐘。

通過上圖觀察:(Tcycle為一個時鐘周期)
要求數據達到的時間 = Tcycle + Tclk2 - Tsu。(圖中②)
實際數據到達的時間 = Tclk1 + Tco + Tdata。(圖中①)
建立時間余量(Setup Slack)= Tcycle + Tclk2 - Tsu - (Tclk1 + Tco + Tdata)。

保持時間余量(Hold Slack): 數據實際結束位置和要求數據結束位置的差值。

實際考慮線路延時時數據從Reg1到Reg2的時序圖如下所示:

Clk_in :輸入時鐘。
Clk_Reg1:Clk_in經過Tclk1時延到達Reg1的時鐘。
Reg1 Q :數據從Reg1的D端進入到達Q端經過Tco時延的數據。
Reg1 D :數據從Reg1的Q端輸出經過Tdata時延到達Reg2的D端的數據。
Clk_Reg2:Clk_in經過Tclk2時延到達Reg2的時鐘。

通過上圖觀察:(Tcycle為一個時鐘周期)
實際數據結束的時間 = Tcycle + Tclk1 + Tco + Tdata。(圖中②)
要求數據結束的時間 = Tcycle + Tclk2 + Th。(圖中①)

保持時間余量(Told Slack)= Tcycle + Tclk1 + Tco + Tdata - (Tcycle + Tclk2 + Th)。
從上面的公式中可以看出建立時間余量(Told Slack)與時鐘周期Tcycle 無關,所以時鐘頻率也與保持時間余量無關。

4、 FPGA允許的最大時鐘頻率或最小時鐘周期


通過上面的推導時鐘周期和頻率與保持時間無關,所以在 建立時間余量為0時取得最大時鐘頻率即最小時鐘周期。

5、計算FPGA時鐘所允許的最大頻率或最小時鐘周期

例: 計算建立時間余量Setup Slack 與 系統時鐘允許的最大時鐘頻率 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 與 系統時鐘允許的最大時鐘頻率 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、違反建立和保持時間會發生什么?

??在觸發器建立期間,如果數據在時鐘上升沿的建立保持時間內{latch edge-setup,latch edge+hold time}發生跳變,則會產生亞穩態輸出,即輸出值在短時間內處于不確定態,有可能是1,有可能是0,也可能什么都不是,處于中間態。

7、Vivado中建立時間余量與保持時間余量的計算。

建立時間余量分析:
如下打開時序分析報告:



在報告中建立時間顯示紅色,表明建立時間余量不滿足時序要求。

雙擊該路徑:


數據實際到達的時間為19.592。

要求數據到達的時間為18.145。

建立時間余量 = 要求數據到達的時間 - 實際數據到達的施加 = 18.145-19.592= -1.447。
負值,則要求達不到。

保持時間余量分析:

數據實際結束的時間為-0.287。

數據要求結束的時間為-0.336.

保持時間余量 = 數據實際結束的時間 - 數據要求結束的時間 = -0.287-(-0.336)=0.049ns。

為正值,時序要求可以達到。

★★★如有錯誤,歡迎指導!!!

總結

以上是生活随笔為你收集整理的建立时间与保持时间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。