FPGA的設計藝術(2)FPGA開發流程

2021-10-19 09:58:20 字數 2896 閱讀 1851

現場可程式設計門陣列(fpga)是一種半導體器件,包含邏輯塊,這些邏輯塊被程式設計為執行一組特定的功能。這些可程式設計邏輯塊在互連矩陣的幫助下相互連線。這些互連負責連線邏輯塊並促進訊號在晶元上的流動。該結構以二維陣列的形式排列,該二維陣列由將其與輸入和輸出訊號連線的邏輯塊,互連和i / o塊組成。邏輯塊本身由查詢表或lut,觸發器或ff和多路復用器組成。

使用fpga的主要好處之一是它們是可重新程式設計的,這意味著可以對其進行修改,以使其功能完全不同於在設計人員每次將新**上傳到fpga之前所執行的功能。

不同廠家有不同的開發工具,當今世界,最有名氣的fpga廠家altera和xilinx都有自己的開發工具,例如,altera的quartues ii,xilinx的早期版本ise(6系列以及6之前系列的fpga)以及後來的開發工具vivado(7系列以及7系列之後的fpga)。現在的fpga朝著異構的方向發展,所謂異構,也就是fpga中嵌入許多其他的嵌入式裝置,例如arm等,fpga 的架構也發生了變化,工具也跟著更新換代,例如xilinx工具推出的vivado hls,以後後面針對人工智慧的vitis。

不同的開發工具,針對自家fpga的開發流程大同小異,本質都是一致的,差異在於編譯(這裡的編譯指的是綜合實現等過程)的過程中生成的檔案不同,例如ise在

綜合過程中生成ngr和ngc網表檔案,其實現(implementation)過程又可細分為翻譯(主要完成統一標準工作,將各種網表檔案(edn、ngc、nmc)及約束檔案翻譯成xilinx 標準的ngd檔案格式,全部由各種ngd原語構成。)對映以及布局佈線過程,在這些過程中生成檔案多樣,例如ncd,ngd等。而公升級之後的vivado工具將翻譯,對映以及布局佈線合併為實現,統一生成不同階段的dcp檔案。下面具體介紹。

當然本文這個小標題起的略有偏頗,這裡的開發指的是設計輸入之後的fpga編譯工具的執行過程,而不是專案開發的流程,例如:fpga之道(16)fpga開發流程之專案方案與fpga設計方案

fpga設計流程包括幾個不同的步驟或階段,包括設計輸入,綜合,實現和器件程式設計。 我們將簡單**每個階段。

設計輸入

可以使用各種技術(例如,原理圖),通過硬體描述語言或hdl進行設計輸入,或者甚至可以結合使用兩種方法,並使用可以將hdl轉換為原理圖的工具,反之亦然,這取決於您的fpga,兩者兼而有之。設計和偏好。通常,對於涉及更多複雜系統的設計,最好選擇hdl,這是一種更快的基於語言的過程,使您無需在較低階別的硬體上進行設計,而示意圖則是希望的人的理想選擇。設計硬體,因為它為整個系統提供了更多可見性。

在以**形式輸入設計之後,此階段將其轉換為包含諸如門,觸發器和乘法器等元素的實際電路。 輸入的hdl實際上已轉換為網表,該網表列出了專案所需的邏輯元素以及特定層次結構中所需的互連。

一旦輸入基於hdl的設計,該過程便從語法檢查開始。 然後,通過減少邏輯,消除冗餘邏輯以及減小設計尺寸來優化它,同時又使它更快地實現。 最後一步是通過將設計連線到邏輯,估計相關時間,並制定出隨後儲存的設計網表,來確定技術。

fpga合成由專用的綜合工具執行。 cadence,synopsys和mentor graphics是eda公司,致力於開發,銷售和銷售fpga綜合工具。

各大fpga廠家都有專用的fpga綜合工具,例如上面提到的vivado,ise等。

在此階段中,將確定設計的布局,該階段包括三個步驟:翻譯,對映以及布局和佈線。該步驟由fpga**商提供,因為他們最了解如何將綜合網表轉換為fpga。

該工具的第一步是收集使用者與網表檔案一起設定的所有約束。這些限制可能涉及引腳的分配和位置,有關時序的要求(例如最大延遲或時鐘的輸入週期)。

然後,該工具通過將檔案中指定的資源需求與所使用的fpga上實際可用的資源進行比較,來制定實現方案。該電路被分為邏輯塊或子塊形式的元件。結果,您的整個設計被放置在特定的邏輯模組中,並被「對映」到fpga中。

下一步是根據使用者設定的約束在所有邏輯塊和io塊之間連線所有訊號。

該過程的最後一步是最終將對映出並完全佈線的設計載入到fpga中。 因此,您將需要生成乙個bitsteam檔案。

這個過程穿插在fpga的開發流程中,例如設計輸入之後可以進行行為**,又叫功能**,在綜合實現過程中可進行靜態時序分析,其實在綜合後,實現後都可以進行功能**,這裡的功能**是加入了真實延遲之後的**,更符合實際情況。在實際操作工程中,一般只進行行為**以及靜態時序分析,即可保證設計的功能與質量。

下面細說:

不用說,驗證實現的設計是否執行了所需的功能是fpga設計流程的重要組成部分。

行為**(在設計入口)

行為**(也稱為rtl**)在綜合之前執行。 這種快速**可用於無限制地檢查設計的功能。 經常使用此**來測試您的**並查詢邏輯錯誤。

功能**(綜合後)

綜合過程完成後,可以使用功能**來驗證設計的功能。 它是網表級別的**,忽略了與時序相關的問題。

時序**(實現時)

此**將為您提供最準確的設計行為圖。 它考慮了目標fpga晶元以及所有邏輯塊的功能,佈線,延遲等等。 時序**需要更長的時間,並且比以前的**提供更多的細節。

靜態時序分析

執行實現設計過程後,您可以使用時序分析工具對fpga設計進行詳細分析。這樣可以確保將指定的時序約束正確傳遞給實現工具。執行詳細的分析包括以下內容:

為了有效地分析時序,建議採用自上而下的方法,首先檢查設計的整體效能,然後檢查不同類別的約束,單個約束,最後檢查設計中的特定路徑。 分析完成後,將建立該分析的詳細報告,可以對其進行自定義以僅包含您需要的資訊。您可以使用時序分析器對fpga設計進行詳細的分析,如下所示:

這篇文章就到這裡,我們下篇文章繼續詳細了解下什麼是靜態時序分析。

FPGA的設計藝術(11)FPGA的構建過程

本文討論fpga的構建過程,由於fpga的過程太多了,恐怕會有歧義,這個過程,不是開發過程,不是開發流程,而是實實在在的fpga編譯的過程,使用編譯恐怕不是太合適,但是大家都叫習慣了,也知道fpga的編譯過程就是指的是fpga實現的中間一系列過程,例如綜合,實現以及最後生成位元流程式設計檔案。這篇文...

FPGA之道(42)FPGA設計的分類

本文摘自 fpga之道 一看來學習下作者的看法。拋開應用背景 科研領域不談,單從fpga設計本身的一些特性出發,就可以將它劃分成若干個基本類別。在動手用hdl 實現fpga設計之前,最好先分析一下待實現的fpga設計具有哪乙個或者哪幾個基本類別的特徵,從而採用更加適合的程式設計思路來編寫hdl 按功...

FPGA重要的設計思想

fpga重要設計思想 1.速度和面積互換原則。以面積換速度可以實現很高的資料吞吐率,其實串 並轉換 就是一種以面積換速度的思想 2.桌球操作。桌球操作的處理流程為 輸入資料流通過 輸入資料選擇單元 將資料流等時分配到兩個資料緩衝區,通過 輸入資料選擇單元 和 輸出資料選擇單元 按節拍 相互配合的切換...