<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺談FPGA的時序約束四大步驟

潘文明 ? 來源:明德揚吳老師 ? 作者:明德揚吳老師 ? 2022-07-02 10:56 ? 次閱讀

本文章探討一下FPGA的時序約束步驟,本文章內容,來源于配置的明德揚時序約束專題視頻。

時序約束是一個非常重要的內容,而且內容比較多,比較雜。因此,很多讀者對于怎么進行約束,約束的步驟過程有哪些等,不是很清楚。明德揚根據以往項目的經驗,把時序約束的步驟,概括分成四大步,分別是時鐘的約束、input delays的約束、output delays的約束和時序例外。

時序約束是有先后的,首先要做時鐘約束、其次是input delays約束、再次是output delays約束,最后才是時序例外的約束。這是一個完整的大步驟,也就是說我們在項目開始階段就可以約束我們的時鐘,把我們時鐘的頻率、周期、來源等等定義好。這一步做完之后,先不要做二三四步。這時候我們要完成我們的設計,要把我們內部的時序都完成之后才做第二步設置“input delays”,比如說我們從外部進來的一個情況。第三步output delays,也就是說要往下游器件發送的一個時序情況。當這一二三步都做完之后,我們在最后項目的階段才做一個時序例外的情況。時序例外也就是說哪些時序是不需要分析的,這種情況要設置好。最后我們才能把整個時序約束完成。

以上是大的步驟,但事實上每一個步驟又可以細分成很多種情況。例如時鐘約束,時鐘可以分很多種,一種是差分時鐘,一種是管腳進來的時鐘、還有我們PLL產生時鐘等等。還有一種是有數據但沒有時鐘的情況。input delays、output delays 也有很多種,我們到底要怎么樣去分析,怎么去看。明德揚就把這四個步驟再進行細化,就是根據情況來分別列出來。

poYBAGIxOR6AEX5NAAEi5lvVtsI752.png


下面分別展開描述。

第1節 時鐘

時鐘約束可以分成很多種情況,不同的情況就有不同的約束方法,一般有哪幾種情況呢?

pYYBAGIxOT-AXVJWAACkvQnVQ8w607.png


如上圖,時鐘約束概括地,可以分成三種情況,分別是輸入時鐘、PLL等衍生時鐘以及自己分步的時鐘。

1.1 輸入時鐘

輸入時鐘是指時鐘從FPGA管腳進來的情形,這也是最常見的情況。根據輸入的管腳的不同,輸入時鐘情況又可以分成:輸入管腳是單端的、輸入管腳是差分的,以及GT或者恢復時鐘三種情況。

第一種:輸入管腳是單端的,即時鐘直接從管腳進來、并且是單端信號。例如普通低速晶振,大部分是這種情況,明德揚的FPGA ALTERA學習板,如MP801、MP603,其時鐘均是由晶振產生,送到FPGA,并且是單端的信號。

第二種:輸入管腳是差分的,即時鐘直接從管腳進來,并且是差分信號。大部分高速晶振、LVDS接口等,屬于此情形。例如明德揚FPGA XILINX學習板,如MP802,其包含了PCIE管腳,其輸入的時鐘就是差分的;這個板子的DDR的驅動時鐘,時鐘頻率在200M左右,也是屬于此種以情形。

第三種:GT或者恢復時鐘,即使用了高速收發器的情形。在高速收發器管腳中,是沒有時鐘的,時鐘已經嵌入到數據里面,使用FPGA的GTX IP核接收數據,并且從數據恢復出時鐘。這個恢復出來的時鐘就是此種情形。最常見的就是光纖接口。

1.2 PLL等衍生時鐘

那假如說我不是輸入管腳,而是PLL產生的輸出時鐘,這個 就是PLL等衍生時鐘。這種時鐘,FPGA的工具,會自行推導,一般無需約束,但實質應用中,強烈建議約束,會有好處的,好處在下一篇文章中說明。

1.3 自己分頻的時鐘

還有一種情況是自己分頻的時鐘,假如說我們自己寫了一個計數器,把它二分頻、四分頻、八分頻等,分頻出來的信號當為時鐘,這種情況就是自己分頻的時鐘。

首先說明,明德揚不推薦使用此方法來產生時鐘。但確實要用到分頻時鐘時,那就要記得做時鐘約束。這種情況下要怎么進行約束呢?

以上概括了說明了時鐘的幾種情況,每種情況下,其約束方法都有些不同以及注意點。具體約束方法,可以看后續文章的內容。

第2節 input delays

input delay約束,即輸入延時約束,是時序約束的重點,input delay 又分幾種呢?

pYYBAGIxObOAMQQ0AABxgVEq8MA420.png


如上圖,input delay約束概括地,可以分成三種情況,分別是系統同步、源同步和有數據無時鐘。

2.1 系統同步

第一個是系統同步方式,也就是說整個電路板上FPGA以及上游器件都共用一個時鐘,并且相位嚴格相同,這個就是系統同步的方式。

2.2 源同步

第二種是源同步的方式,源同步是怎么樣?就是上游器件,把數據和時鐘信號一起送到FPGA上來的,那這種就是源同步。

源同步是更常用的一種方式,系統同步比較少用,為什么呢?因為要做到上游器件跟FPGA的相位差為0,沒有一點時鐘差,這種要求非常高。而源同步是數據跟時鐘都是從上游器件一起輸送過來給FPGA,這是一種更常用的方式。

這個源同步,又有很多種,具體SDR、DDR和有數據無時鐘三種情況。

第一種:SDR。SDR是指時鐘是單沿有效的方式,比如說我只用上升延或者下降延的一個方式,SDR約束的參數,其獲取的方法有兩種:查看上游器件手冊(通過查看上游器的數據手冊,獲取參數)以及通過示波器測量(通過示波器測量信號的相位差,獲取參數)。

第二種:DDR。DDR是另一種方式,它是一種時鐘雙沿有效的一個方式。也就說即用它的上升延,也用它的下降延。例如說我們的DDR2、DDR3的時鐘,都是上下降沿一直采數據的;包括千兆網的RGMII接口,也是通過雙沿的方式。

DDR的這種情況,我們還可以繼續劃分成中心對齊和邊沿對齊兩種情況。

中心對齊是指:時鐘邊沿始終在數據的中間,時鐘上升沿的左右兩邊,數據都是穩定的。邊沿對齊是指:時鐘和數據邊沿對齊的,在時鐘變化沿兩邊,其數據是不穩定的。

第三種:有數據無時鐘。第三種就是有數據無時鐘的情況。例如說常見的串口。串口是直接數據過來的,它是沒有隨路時鐘過來的。而我們用本地時鐘去采樣,就會出現有數據無時鐘。那對于這種我們應該怎么去約束,又是另一種情況。

第3節 output delays

輸出延時約束和輸入延時一樣,也是約束的重點。output delay 我們主要分兩種,系統同步和源同步。

pYYBAGIxOf-AT5UKAABkCb7sxs8975.png


3.1 系統同步

整個電路板上FPGA以及下游器件都共用一個時鐘,并且相位嚴格相同,這個就是系統同步的方式。此時FPGA往下游器件發送數據,這時候只傳送數據線就可以了。而時鐘跟FPGA共用一個的,不需要傳時鐘。

3.2 源同步

源同步就是FPGA往這個器件發數據,在發數據過程中也發一個時鐘過去,這是一個隨路時鐘的一個方式,是源同步。

源同步我們還分SDR和DDR。

第一種:SDR。SDR是指時鐘是單沿有效的方式,比如說我只用上升延或者下降延的一個方式,SDR約束的參數,其獲取的方法有兩種:查看上游器件手冊(通過查看上游器的數據手冊,獲取參數)以及通過示波器測量(通過示波器測量信號的相位差,獲取參數)。示波器測量比較少用。

第二種:DDR。DDR是另一種方式,它是一種時鐘雙沿有效的一個方式。也就說即用它的上升延,也用它的下降延。例如說我們的DDR2、DDR3的時鐘,都是上下降沿一直采數據的;包括千兆網的RGMII接口,也是通過雙沿的方式。

DDR的這種情況,我們還可以繼續劃分成中心對齊和邊沿對齊兩種情況。

中心對齊是指:時鐘邊沿始終在數據的中間,時鐘上升沿的左右兩邊,數據都是穩定的。邊沿對齊是指:時鐘和數據邊沿對齊的,在時鐘變化沿兩邊,其數據是不穩定的。

第4節 時序例外

時序例外一般用在clock與IO都約束后,還是不滿足時序要求的情況下。主要包括多周期路徑、不需要檢查的路徑和組合電路延時等三種情況,如下圖。

poYBAGIxOjiAC4IqAACLOMkVj8Q842.png


4.1 多周期路徑

多周期路徑是指完成一個運算需要超過1個時鐘周期的情形,多周期路徑在IC設計領域運用較多,但在FPGA里應用較少。

4.2 不需要檢查的路徑

有一些路徑是不需要分析的,具體可以分成三種:常量或偽常量信號、互斥路徑和異步時鐘。

第一種:常量或偽常量信號。某些信號雖然不滿足時序要求,但實質上該信號在應用場景中,是不會改變的,例如某個開關信號,它在上電時打開后,就一直保持打開狀態,不會變來變去。那么這個信號就可以認為是偽常量信號。假設它不滿足時序要求,也是無所謂的,因為不會變,不會變就意味著建立時間和保持時間肯定滿足,所以不存在問題。這種信號是不需要檢查 的。

第二種:互斥的路徑??梢院唵握J為是雙向端口,即代碼中,使用inout定義的信號。

第三種:異步時鐘。即信號從一個時鐘域,跨到另一個時鐘域的情況。這也是不需要檢查 的。注意,這里說不用檢查,是指完成異步信號同步化后,不用檢查的意思。

4.3 組合電路延時

還有一種是組合電路的延時。組合電路延時就是說我從這個管腳到另一個管腳之間,另一個管腳進來,這個管腳出去中間沒有任何一個時鐘,這是組合電路給延時的一種情況。

第5節 總結與建議

前面我們講了時鐘約束、輸入延時、輸出延時還時序例外的情況。每一種情況又分了很多種,根據它的不同類型來區分,每次約束的時候都是其中的一種情況。比如說CLK差分,就去找時鐘,然后根據差分管腳怎么約束,來找到對應情況,按照要求進行約束。這相當于我已經提供一個表給你,你按照這個表去核對。找到對應的情況,按要求進行約束就可以了。

記?。洪_始的時候,只是配置時鐘,不配置input delay 、 output delays和持續例外。因為我們開始的時候是專心于內部電路,我們時序的一個設計,滿足內部要求之后,再去配置我們的接口。在時鐘完全通過之后再配置input delay 和output delays 。

時序例外是最后差不多要完工了再進行配置的。而且這個配置是要很小心。因為我們實際例外,比如說不用檢查,我們set false path這種情況,設置好就是表示不用檢查。如果在開始的時候,就設置好了,萬一中間又要改變,你改變的話,那你忘了把這個約束給干掉了,這種情況就會出現有錯誤也提示不出來的情況。所以說時序例外應該是最后情況下進行的。

這個順序是明德揚經驗的一個順序,我們的項目基本上是按照這個順序做的。但是不同的公司也會有不同的做法。例如說我一開始全部都不約束,到最后再生約束,這也是可以的。這種做法沒有統一標準,反正學明德揚的課程,你就按這個步驟做,去到其他公司,再根據公司要求去做就可以了。

本文章是基于賽靈思的一個時序約束,ALTERA也是相似的,甚至IC芯片設計領域,也是同樣的思路。

有句話講的很好,我們的時序是設計出來的,不是約束出來的。所以說時序重要還是不重要?當然重要。但是它不是非常重要,更重要的是假如說我時序出現例外,不滿足的時候,更重要是改變你的設計,而不是要求約束。

下一篇文章,我們將具體探討“時鐘約束”的內容,講解各種情況下的時序約束方法。需要更多更詳細的資料和原文檔的,可以找作者了解和領取。

明德揚(MDY)除了培訓課程外,還可為客戶提供承接項目、FPGA芯片、電源芯片、AD芯片等元器件,可找我們了解。18922344178(電話微信同步) 作者:明德揚FPGA科教 https://www.bilibili.com/read/cv17370937 出處:bilibili

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1610

    文章

    21374

    瀏覽量

    595031
  • 開發板
    +關注

    關注

    25

    文章

    4578

    瀏覽量

    94979
收藏 人收藏

    評論

    相關推薦

    FPGA的IO口時序約束分析

      在高速系統中FPGA時序約束不止包括內部時鐘約束,還應包括完整的IO時序約束
    發表于 09-27 09:56 ?1518次閱讀

    FPGA時序約束之衍生時鐘約束和時鐘分組約束

    FPGA設計中,時序約束對于電路性能和可靠性非常重要。在上一篇的文章中,已經詳細介紹了FPGA時序約束
    發表于 06-12 17:29 ?1662次閱讀

    FPGA I/O口時序約束講解

    前面講解了時序約束的理論知識FPGA時序約束理論篇,本章講解時序
    發表于 08-14 18:22 ?1062次閱讀
    <b class='flag-5'>FPGA</b> I/O口<b class='flag-5'>時序</b><b class='flag-5'>約束</b>講解

    FPGA時序優化高級研修班

    FPGA時序優化高級研修班通知通過設立四大專題,幫助工程師更加深入理解FPGA時序,并掌握時序
    發表于 03-27 15:20

    FPGA時序約束方法

    FPGA時序約束方法很好地資料,兩大主流的時序約束都講了!
    發表于 12-14 14:21 ?19次下載

    賽靈思FPGA設計時序約束指南

    賽靈思FPGA設計時序約束指南,下來看看
    發表于 05-11 11:30 ?48次下載

    FPGA中的時序約束設計

    一個好的FPGA設計一定是包含兩個層面:良好的代碼風格和合理的約束。時序約束作為FPGA設計中不可或缺的一部分,已發揮著越來越重要的作用。毋
    發表于 11-17 07:54 ?2402次閱讀
    <b class='flag-5'>FPGA</b>中的<b class='flag-5'>時序</b><b class='flag-5'>約束</b>設計

    時序約束四大步驟的具體介紹

    FPGA中的時序問題是一個比較重要的問題,時序違例,尤其喜歡在資源利用率較高、時鐘頻率較高或者是位寬較寬的情況下出現。建立時間和保持時間是FPGA
    的頭像 發表于 12-23 07:02 ?4182次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b>的<b class='flag-5'>四大步驟</b>的具體介紹

    時序約束步驟分析

    FPGA中的時序問題是一個比較重要的問題,時序違例,尤其喜歡在資源利用率較高、時鐘頻率較高或者是位寬較寬的情況下出現。建立時間和保持時間是FPGA
    的頭像 發表于 12-23 07:01 ?1971次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b>的<b class='flag-5'>步驟</b>分析

    在寫Verilog時對時序約束四大步驟的詳細資料說明

    本文檔的主要內容詳細介紹的是在寫Verilog時對時序約束四大步驟的詳細資料說明包括了:一、 時鐘,二、 Input delays,三、 Output delays,四、 時序例外
    發表于 08-30 08:00 ?32次下載
    在寫Verilog時對<b class='flag-5'>時序</b><b class='flag-5'>約束</b>的<b class='flag-5'>四大步驟</b>的詳細資料說明

    FPGA設計之時序約束四大步驟

    本文章探討一下FPGA時序約束步驟,本文章內容,來源于配置的明德揚時序約束專題課視頻。
    發表于 03-16 09:17 ?3345次閱讀
    <b class='flag-5'>FPGA</b>設計之<b class='flag-5'>時序</b><b class='flag-5'>約束</b><b class='flag-5'>四大步驟</b>

    FPGA設計之時序約束

    上一篇《FPGA時序約束分享01_約束四大步驟》一文中,介紹了時序
    發表于 03-18 10:29 ?1427次閱讀
    <b class='flag-5'>FPGA</b>設計之<b class='flag-5'>時序</b><b class='flag-5'>約束</b>

    FPGA時序input delay約束

    本文章探討一下FPGA時序input delay約束,本文章內容,來源于明德揚時序約束專題課視頻。
    的頭像 發表于 07-25 15:37 ?2592次閱讀
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>時序</b>input delay<b class='flag-5'>約束</b>

    淺談時序設計和時序約束

    ??本文主要介紹了時序設計和時序約束。
    的頭像 發表于 07-04 14:43 ?929次閱讀

    時序約束連載02~時序例外

    本文繼續講解時序約束的第四大步驟——時序例外
    的頭像 發表于 07-11 17:17 ?492次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b>連載02~<b class='flag-5'>時序</b>例外
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>