FPGA中的時序分析(一)

来源:http://www.cnblogs.com/raymon-tec/archive/2016/02/13/5188248.html
-Advertisement-
Play Games

談及此部分,多多少少有一定的難度,筆者寫下這篇文章,差不多是在學習FPGA一年之後的成果,儘管當時也是看過類似的文章,但是都沒有引起筆者註意,筆者現在再對此知識進行梳理,也發現了有很多不少的收穫。筆者根據網上現有的資源,作進一步的總結,希望能夠有所幫助。 一個不錯的網站,類似於一個手冊,隨時可以去查


  談及此部分,多多少少有一定的難度,筆者寫下這篇文章,差不多是在學習FPGA一年之後的成果,儘管當時也是看過類似的文章,但是都沒有引起筆者註意,筆者現在再對此知識進行梳理,也發現了有很多不少的收穫。筆者根據網上現有的資源,作進一步的總結,希望能夠有所幫助。

  一個不錯的網站,類似於一個手冊,隨時可以去查詢如何去定義各個時序約束指令怎麼用。http://quartushelp.altera.com/current/mergedProjects/tafs/tafs/tcl_pkg_sdc_ver_1.5.htm

  靜態時序分析(STA,static timing analysis),對於STA的理解,可以想象在FPGA的內部好比一塊PCB,FPGA的邏輯陣列好比PCB板上的一些分立元器件,PCB通過導線將具有相關電氣特性的信號相連接,FPGA也需要通過內部連線將相關的邏輯節點導通,PCB上的信號通過任何一個元器件都會產生一定的延時,FPGA的信號通過內部邏輯門傳輸也有一定的延時,PCB信號走線也有延時,FPGA信號走線也有延時,這就帶來了一系列的問題,一個信號從FPGA的一端輸入,經過一定的邏輯處理後從FPGA的另一端輸出,這期間會產生多大的延時呢?有多個匯流排信號從FPGA的一端輸入,這條匯流排的各個信號經過邏輯處理之後從FPGA的另一端輸出,這條匯流排的各個信號的延時一致嗎?之所以關心這些問題,是因為過長的延時或者一條匯流排多個信號傳輸延時的不一致,不僅會影響FPGA本身會給FPGA之外的電路或者系統帶來諸多的問題。

  所以針對上面的一系列問題,設計者需要提出一些特定的時序要求,針對現有的電路給出時序約束,

  分析時序,本質上是節點對節點之間的時序分析,如果沒有節點,時序也就無從談起。在FPGA中,我們可以把節點當作是寄存器與寄存器之間的時序分析,寄存器與寄存器之間可能還有一些組合邏輯充斥著。所以時序路徑通常有四大類:

(1)寄存器到寄存器類型,即reg2reg;

(2)輸入引腳到寄存器類型,即pin2reg;

(3)寄存器到輸出引腳類型,即reg2pin;

(4)輸入引腳到輸出引腳類型,即pin2pin;

  針對上述四種基本時序路徑,最關心的就是數據信號和時鐘鎖存沿之間的建立時間和保持時間的關係。

  對於四種延時路徑可以用圖1所示,對於signal in,是外部IC到FPGA的輸入信號引腳,一般情況下晶元手冊都會給出各引腳關於時序方面的說明,如Tco、TSU、Th、等信息,這個是在分析時序時會用到。Reg1到reg2之間的時序路徑是相當於在FPGA內部的寄存器到寄存器之間的延時路徑,signal out是相當於FPGA的輸出信號到外部IC之間的引腳信息。

wps1EF2.tmp

圖1 時序路徑分析

  這裡只分析FPGA內部的時序路徑,外部IC的時序路徑需要結合具體的IC數據手冊,然後結合FPGA輸入引腳部分的大概延時進行推測一個值,之後具體再分析。

  所以從寄存器1到寄存器2之間的延遲時間的分析。

wps1F22.tmp

圖16.2 寄存器到寄存器延時

  上圖是考慮各種延遲之後的從輸入數據到輸出數據的時間延遲。

  所以我們引入第一個概念:數據抵達時間(官方視頻上面的概念),也就是實際到達時間,

wps1F23.tmp,     而啟動沿時間往往是按0處理,只考慮後三者。

  引入第二個概念:數據要求時間

wps1F44.tmp

圖16.3 數據要求時間分析

  由於有寄存器建立時間的參與,所以會使得數據鎖存時間由下麵的公式決定,但是在應用時Tsu按照負值代入公式,這樣計算的才正確,可能是官方的bug,所以按照負值計算即可。

wps1F54.tmp

建立餘量

  為了說明怎麼計算得到建立餘量,特舉例如下所示。

wps1F65.tmp

wps1F75.tmp

wps1F86.tmp

wps1F97.tmp

  對於公式上面的鎖存沿時間,其實就是啟動沿和鎖存沿之間的差值,也就是建立時間關係,建立時間關係是理想狀態下,啟動沿與鎖存沿之間的距離,如下圖2所示,這個建立時間關係 = 時鐘周期,所以在計算的時候,可以先計算出建立時間關係值,然後也就確定了鎖存沿時間。

wps1FA7.tmp

圖2 建立時間和時鐘周期的關係

保持餘量

wps1FC8.tmp

  還是用我們的經典的圖來說明保持餘量,那麼數據從寄存器1到寄存器2要經過的時間為

wps1FD8.tmp

wps1FE9.tmp

wps1FF9.tmp

  其中數據周期時間,是以時鐘周期為計算值。

  根據上圖,用一些數字來計算,如下圖

wps200A.tmp

wps202A.tmp

  由此得到了保持餘量值。

//=======================================================================

更多詳細的資料下載可以登錄筆者百度網盤:

網址:http://pan.baidu.com/s/1bnwLaqF

密碼:fgtb

//=======================================================================


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • wait(),notify()和notifyAll()都是Java基類java.lang.Object的方法。 通俗解釋wait():在當前線程等待其它線程喚醒。notify(): 喚醒一個線程正在等待這個對象的監視器。notifyAll(): 喚醒在這個對象監視器上等待的所有線程。這三個方法,都是
  • 在學習Spring框架的時候,我們總是能見到IOC這個單詞,也時常聽到DI這個詞,那麼他們分別是什麼意思呢?接下來就講講個人對於這兩個概念的理解 一、IOC和DI概念 IOC(控制反轉):全稱為:Inverse of Control。從字面上理解就是控制反轉了,將對在自身對象中的一個內置對象的控制反
  • 已知輸入整數14時,運行結果如下,試根據規律編寫程式 #include <stdio.h> int t;//標記i的重覆次數 //void divide(int i,int number) //{ //int k,n=number; //while(n>i) //{ // n=n-i; // if(
  • 寒假這些天在看《The C++ Programming Language, 3rd》。 今天看到Chapter7 Function,裡頭好一些東西是C語言里沒有的,比如overload、passing by reference。這裡不講這些,講C語言也有的 pointer to function。以
  • 在這一系列博客中,主要是記錄在實際開發中會常用的一些Java工具類,方便後續開發中使用。 以下的目錄會隨著後邊具體工具類的添加而改變。 浮點數精確計算 第二章 Java浮點數精確計算
  • 1、實際意義 在實際開發中,如果需要進行float或double的精確計算(尤其是財務計算),直接使用float或double是不行的(具體的例子看下邊的代碼的main方法的測試結果),需要使用BigDecimal。 2、代碼 package com.xxx.util; import java.ma
  • 時序約束實例詳解 本篇博客結合之前的內容,然後實打實的做一個約束實例,通過本實例讀者應該會實用timequest去分析相關的實例。本實例以VGA實驗為基礎,介紹如何去做時序約束。 首先VGA這種情況屬於供源時鐘情況,不明白供源時鐘的可以參看之前博客講解。首先查看ADV7123的數據手冊,查看其時序圖
  • 使用Timequest 筆者對Altera較熟悉,這裡以quartus ii中的timequest作為講解。 Timequest分析時序的核心,也就是在於延遲因數的計算。那麼建立約束文件,去告訴timequest,哪個地方有什麼樣的約束,該怎麼進行約束。 之所以要建立相關網表的概念,是因為我們在利用
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...