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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...