0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA設(shè)計(jì)流程及原理

e9Zb_gh_8734352 ? 來源:FPGA技術(shù)聯(lián)盟 ? 作者:FPGA技術(shù)聯(lián)盟 ? 2020-11-12 18:22 ? 次閱讀

01

FPGA的設(shè)計(jì)流程

FPGA是可編程芯片,因此FPGA的設(shè)計(jì)內(nèi)容包括硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分。硬件包括FPGA芯片電路、 存儲(chǔ)器、輸入輸出接口電路以及其他設(shè)備,軟件即是相應(yīng)的HDL程序以及最新才流行的嵌入式C程序。

FPGA的開發(fā)流程即是利用EDA開發(fā)軟件以及編程工具對(duì)FPGA芯片進(jìn)行開發(fā)的過程。EDA ( Electronic Design Automation,電子設(shè)計(jì)自動(dòng)化)是充分發(fā)揮LSI性能的關(guān)鍵技術(shù)。理論上,一款FPGA所能達(dá)到的性能上限是由制程等物理因素決定的,而在實(shí)際應(yīng)用中用戶電路的性能很大程度上取決于器件的架構(gòu)和EDA工具。這就像汽車一樣,無論引擎(制程)多么強(qiáng)勁,都需要配合適當(dāng)?shù)能圀w(架構(gòu))和駕駛技術(shù)( EDA工具)才能發(fā)揮出極限速度。尤其是與電路實(shí)現(xiàn)直接相關(guān)的EDA工具,其對(duì)性能的影響不可估量。

FPGA的設(shè)計(jì)流程由HDL源代碼的邏輯綜合開始,經(jīng)過工藝映射、邏輯打包、布局布線等過程,最終生成比特流。邏輯綜合將HDL描述轉(zhuǎn)換為門級(jí)網(wǎng)表,工藝映射將這個(gè)網(wǎng)表轉(zhuǎn)換為查找表級(jí)別的網(wǎng)表。邏輯打包是將多個(gè)查我表和觸發(fā)器集合到一個(gè)邏輯塊的過程。布局布線工具先決定邏輯塊在器件上的位置,然后通過布線結(jié)構(gòu)實(shí)現(xiàn)邏輯塊之間的連接。最終,基于這些布局布線信息可以決定FPGA中各個(gè)開關(guān)的連接關(guān)系,以此生成比特流。

器件上查找表的輸入數(shù)是既定的(查找表能實(shí)現(xiàn)輸人數(shù)不大于自己的任意邏輯),而FPGA的設(shè)計(jì)就是要從目標(biāo)電路的邏輯函數(shù)中不斷分離出既定輸入數(shù)之內(nèi)的邏輯,并將其映射到查找表上。然后將這些查找表通過布線相連, 就可以在FPGA 上實(shí)現(xiàn)目標(biāo)電路。

FPGA和ASIC的區(qū)別在于,ASIC通過組合使用標(biāo)準(zhǔn)單元庫中的邏輯實(shí)現(xiàn)電路,而FPGA則使用統(tǒng)一構(gòu)造的查找表。這種區(qū)別也體現(xiàn)在了EDA工具上。下面我們就對(duì)這種不同于ASIC的EDA技術(shù)原理進(jìn)行詳細(xì)介紹,具體包括上述的工藝映射、邏輯打包、布局布線。

02

工藝映射

工藝映射是指將不依賴于任何工藝的門級(jí)網(wǎng)表轉(zhuǎn)換為由特定FPGA邏輯單元所表示的網(wǎng)表的過程。這里所說的邏輯單元依賴于特定的FPGA架構(gòu),是由查找表或MUX等邏輯電路實(shí)現(xiàn)的FPGA上的最小邏輯單位。工藝映射是從HDL開始的邏輯轉(zhuǎn)換的最后一步,因此對(duì)最終電路實(shí)現(xiàn)的質(zhì)量(面積、速度、功耗等)至關(guān)重要。下面我們就通過工藝映射最具代表性的工具FlowMap,來講解工藝映射的原理。Flow Map是由加州大學(xué)洛杉磯分校叢京生教授(Jason Cong)的研究團(tuán)隊(duì)開發(fā)的工藝映射算法。將目標(biāo)電路網(wǎng)表轉(zhuǎn)換到k輸入的查找表(k-LUT)的工藝映射過程由下面兩個(gè)步驟組成。

(1)分解:門級(jí)網(wǎng)標(biāo)實(shí)際上都是以布爾網(wǎng)絡(luò)的形式來表示的。先將布爾網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)不斷分解,直至輸人數(shù)小于查找表的輸人數(shù)k。

(2)覆蓋:基于過程(1)所得到的布爾網(wǎng)絡(luò),使用某種基準(zhǔn)對(duì)輸入進(jìn)行切分,使用k-LUT覆蓋多個(gè)節(jié)點(diǎn)。

FlowMap第(2)步的覆蓋過程,是一種可以在多項(xiàng)式時(shí)間內(nèi)找到邏輯層數(shù)最優(yōu)解的方法。

03

3、邏輯打包

目前,主流FPGA的邏輯塊都具有多個(gè)查找表,因此將查找表高效地打包到邏輯塊的過程是不可或缺的。邏輯打包主要有兩個(gè)要點(diǎn):第一,邏輯塊內(nèi)部布線(局部布線)和邏輯塊外部布線(布線通道中的布線)的延遲相差很大;第二,如果邏輯塊中有查找表空閑,資源使用率就會(huì)降低(增加邏輯塊的使用量),因此要盡量在每個(gè)邏輯塊內(nèi)填裝更多邏輯。

之前世界上出現(xiàn)了許多可以實(shí)現(xiàn)多種性能優(yōu)化的打包工具,但他們的裝箱算法都只能處理單一的查找表結(jié)構(gòu)。近些年的邏輯塊包含了自適應(yīng)查找表等更為復(fù)雜的結(jié)構(gòu)。自適應(yīng)查找表不僅需要在工藝映射時(shí)選擇最佳輸入數(shù)的查找表,對(duì)裝箱算法也有很大影響。比如,在打包自適應(yīng)查找表的網(wǎng)表時(shí)為了改善布通率和延遲,不能只考慮邏輯塊中查找表的數(shù)量,還要考慮主輸入數(shù)量、邏輯塊所允許的查找表模式組合等因素。因此要找到同時(shí)滿足邏輯塊數(shù)最少、延遲最小、布線數(shù)最少的解是非常困難的。

VTR(Verilog-to-Routing)中集成的AAPack(ArchitectureAware Packer)就是為了挑戰(zhàn)這個(gè)問題而誕生的。VTR系統(tǒng)使用XML的形式建立器件的架構(gòu)模型。其架構(gòu)的定義分為單元結(jié)構(gòu)( physical block,相當(dāng)于邏輯塊內(nèi)的邏輯單元)和布線結(jié)構(gòu)( interconnect,相當(dāng)于physical block間的連接關(guān)系和連接方式)。單元結(jié)構(gòu)的描述方式為嵌套式,可以描還含有多個(gè)邏輯單元的邏輯塊。使用模式單元還可以表達(dá)具有多種模式的結(jié)構(gòu),例如將多輸入查找表拆分為多個(gè)少輸人的查找表(多種模式)等。

AAPack實(shí)現(xiàn)了對(duì)上述架構(gòu)模型的支持,其裝箱算法如下所示。

(1)如果有未打包的查找表,則選其作為種子并確定要插入的邏輯塊。

(2)按照如下算法向當(dāng)前邏輯塊填裝查找表。

(a)尋找可填裝的候補(bǔ)查找表。

(b)將選擇的查找表填入邏輯塊。

(c)如果邏輯塊還有空位,返回到步驟(2)的(a)。

(3)將裝箱完畢的邏輯塊輸出到文件,返回到步驟(1)。

綜上,AAPack可以對(duì)結(jié)構(gòu)復(fù)雜的邏輯塊實(shí)現(xiàn)查找表打包功能。

04

布局布線

布局布線是FPGA設(shè)計(jì)流程的最后一個(gè)步驟——在物理上確定邏輯塊的位置和信號(hào)連接路徑。一般來說首先會(huì)確定邏輯塊的布局,然后再對(duì)邏輯塊間的連接進(jìn)行布線。

多數(shù)FPGA的邏輯塊都呈二維陣列狀排列,因此邏輯塊布局問題可以視為標(biāo)準(zhǔn)的二次分配問題。然而,此類問題也被公認(rèn)為是NP問題,通常只能使用SA ( Simulated Annealing)等算法獲取近似解。

布線過程中主要使用兩種布線方法:全局布線和詳細(xì)布線。全局布線階段主要決定線網(wǎng)的布線路徑,例如通過哪些通道形成連接。詳細(xì)布線則基于全局布線所得的信息,確定路徑具體使用了哪些布線資源、通過了哪些開關(guān)等。

下面我們使用由多倫多大學(xué)開發(fā)、在學(xué)術(shù)界被廣泛應(yīng)用的布局布線工具VPR(Versatile Place and Route)進(jìn)行介紹。VPR的布線過程如下。

(1)先將邏輯塊、I/O塊隨機(jī)放置。

(2)計(jì)算當(dāng)前布局的布線擁擠度。

(3)隨機(jī)選擇兩個(gè)邏輯塊并對(duì)調(diào)其位置。

(4)計(jì)算對(duì)調(diào)后的布線擁擠度。

(5)比較對(duì)調(diào)前后擁擠度的數(shù)值,決定是否接受新的布局。

目前,作為最主要的開源FPGA設(shè)計(jì)框架,VPR已經(jīng)發(fā)展到了7.0的版本了,其中也加入了一些更加實(shí)用的功能和工具,例如支持進(jìn)位信號(hào)等專用連接、多時(shí)鐘域時(shí)序分析、功耗分析等。

責(zé)任編輯:xj

原文標(biāo)題:FPGA設(shè)計(jì)原理

文章出處:【微信公眾號(hào):FPGA技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    459

    文章

    51901

    瀏覽量

    433376
  • FGPA
    +關(guān)注

    關(guān)注

    1

    文章

    25

    瀏覽量

    16181

原文標(biāo)題:FPGA設(shè)計(jì)原理

文章出處:【微信號(hào):gh_873435264fd4,微信公眾號(hào):FPGA技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    FPGA設(shè)計(jì)調(diào)試流程

    調(diào)試,即Debug,有一定開發(fā)經(jīng)驗(yàn)的人一定會(huì)明確這是設(shè)計(jì)中最復(fù)雜最磨人的部分。對(duì)于一個(gè)龐大復(fù)雜的FPGA工程而言,出現(xiàn)問題的概率極大,這時(shí)如果沒有一個(gè)清晰的Debug思路,調(diào)試過程只能是像無頭蒼蠅一樣四處亂撞。
    的頭像 發(fā)表于 03-04 11:02 ?1007次閱讀
    <b class='flag-5'>FPGA</b>設(shè)計(jì)調(diào)試<b class='flag-5'>流程</b>

    【國產(chǎn)FPGA入學(xué)必備】國產(chǎn)FPGA權(quán)威設(shè)計(jì)指南+配套FPGA圖像視頻教程

    》。 本書系統(tǒng)地介紹紫光同創(chuàng)FPGA的開發(fā)與應(yīng)用,詳細(xì)闡述FPGA開發(fā)的各個(gè)方面,從基礎(chǔ)原理到實(shí)際應(yīng)用,從設(shè)計(jì)流程到開發(fā)工具的使用,力求為讀者提供一套完整的學(xué)習(xí)和參考體系。通過閱讀本書,讀者不僅可以掌握紫光
    發(fā)表于 02-20 15:08

    【國產(chǎn)FPGA必備教程】——紫光同創(chuàng)FPGA圖像視頻教程,適用于小眼睛FPGA盤古全系列開發(fā)板

    案例、時(shí)序約束及收斂方法等,教程內(nèi)容豐富,從入門到應(yīng)用提高,覆蓋紫光同創(chuàng)FPGA開發(fā)全流程,教程適用于小眼睛科技盤古系列、泰坦系列全開發(fā)套件。目前,小眼睛科技基于FPGA賽事配套紫光同創(chuàng)FPG
    發(fā)表于 02-19 15:44

    NX CAD軟件:數(shù)字化工作流程解決方案(CAD工作流程)

    NXCAD——數(shù)字化工作流程解決方案(CAD工作流程)使用西門子領(lǐng)先的產(chǎn)品設(shè)計(jì)軟件NXCAD加速執(zhí)行基于工作流程的解決方案。我們?cè)诹私庑袠I(yè)需求方面累積了多年的經(jīng)驗(yàn),并據(jù)此針對(duì)各個(gè)行業(yè)的具體需求提供
    的頭像 發(fā)表于 02-06 18:15 ?230次閱讀
    NX CAD軟件:數(shù)字化工作<b class='flag-5'>流程</b>解決方案(CAD工作<b class='flag-5'>流程</b>)

    PLD設(shè)計(jì)流程的詳細(xì)步驟

    PLD(Programmable Logic Device,可編程邏輯器件)設(shè)計(jì)流程是指從設(shè)計(jì)概念到最終實(shí)現(xiàn)的一系列步驟,用于創(chuàng)建和驗(yàn)證可編程邏輯器件的功能。 1. 需求分析(Requirement
    的頭像 發(fā)表于 01-20 09:46 ?620次閱讀

    數(shù)字設(shè)計(jì)ic芯片流程

    主要介紹芯片的設(shè)計(jì)流程 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? &
    發(fā)表于 11-20 15:57 ?0次下載

    FPGA基礎(chǔ)知識(shí)及設(shè)計(jì)和執(zhí)行FPGA應(yīng)用所需的工具

    本文將首先介紹FPGA的基礎(chǔ)知識(shí),包括FPGA的工作原理以及為什么要使用FPGA等,然后討論設(shè)計(jì)和執(zhí)行FPGA應(yīng)用所需的工具。
    的頭像 發(fā)表于 11-11 11:29 ?1536次閱讀
    <b class='flag-5'>FPGA</b>基礎(chǔ)知識(shí)及設(shè)計(jì)和執(zhí)行<b class='flag-5'>FPGA</b>應(yīng)用所需的工具

    FPGA與ASIC的優(yōu)缺點(diǎn)比較

    適應(yīng)各種應(yīng)用場(chǎng)景。這意味著用戶可以根據(jù)需要,通過編程來更改FPGA的功能,而無需更改硬件設(shè)計(jì)。 設(shè)計(jì)周期短 :與ASIC相比,FPGA的設(shè)計(jì)、驗(yàn)證和生產(chǎn)周期更短。這主要是因?yàn)?b class='flag-5'>FPGA可以通過軟件編程來實(shí)現(xiàn)功能,而無需進(jìn)行復(fù)雜的硬
    的頭像 發(fā)表于 10-25 09:24 ?1378次閱讀

    邏輯組件中的流程塊節(jié)點(diǎn)通常出于什么用途

    邏輯組件中的流程塊節(jié)點(diǎn)是流程圖、狀態(tài)圖、序列圖等圖表中的基本元素,它們用于表示業(yè)務(wù)流程、工作流程、算法步驟、系統(tǒng)狀態(tài)等。這些節(jié)點(diǎn)在軟件開發(fā)、項(xiàng)目管理、自動(dòng)化控制、工程設(shè)計(jì)、科學(xué)研究等領(lǐng)
    的頭像 發(fā)表于 10-15 14:38 ?409次閱讀

    什么~FPGA可以自行二次開發(fā)了?

    什么!FPGA可以自行二次開發(fā)了? 目前市場(chǎng)上的標(biāo)準(zhǔn)采集卡通常不支持用戶自行開發(fā)FPGA。但因?yàn)閼?yīng)用環(huán)境的需要,不僅僅只需要單一的數(shù)據(jù)采集流程,往往還需要在其中嵌入更復(fù)雜的運(yùn)行和分析邏輯。為了解
    的頭像 發(fā)表于 10-14 15:47 ?487次閱讀
    什么~<b class='flag-5'>FPGA</b>可以自行二次開發(fā)了?

    萊迪思Propel工具套件加速FPGA應(yīng)用開發(fā)

    許多嵌入式系統(tǒng)的開發(fā)者都對(duì)使用基于FPGA的SoC系統(tǒng)感興趣,但是基于傳統(tǒng)HDL硬件描述語言的FPGA開發(fā)工具和復(fù)雜流程往往會(huì)令他們望而卻步。為了解決這一問題,萊迪思的Propel工具套件提供了基于圖形化設(shè)計(jì)方法的設(shè)計(jì)環(huán)境,用于
    的頭像 發(fā)表于 08-30 17:23 ?1223次閱讀

    FPGA實(shí)現(xiàn)LeNet-5卷積神經(jīng)網(wǎng)絡(luò)

    ,利用 FPGA 實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)成為了一種高效、低功耗的解決方案,特別適合于邊緣計(jì)算和嵌入式系統(tǒng)。本文將詳細(xì)介紹如何使用 FPGA 實(shí)現(xiàn) LeNet-5 網(wǎng)絡(luò),包括網(wǎng)絡(luò)結(jié)構(gòu)、FPGA 設(shè)計(jì)流程
    的頭像 發(fā)表于 07-11 10:27 ?2931次閱讀

    如何在FPGA上實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)

    可編程門陣列(FPGA)作為一種靈活、高效的硬件實(shí)現(xiàn)方式,為神經(jīng)網(wǎng)絡(luò)的加速提供了新的思路。本文將從FPGA實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的基本原理、關(guān)鍵技術(shù)、實(shí)現(xiàn)流程以及應(yīng)用前景等方面進(jìn)行詳細(xì)闡述。
    的頭像 發(fā)表于 07-10 17:01 ?3109次閱讀

    FPGA的學(xué)習(xí)筆記---FPGA的開發(fā)流程

    與通常的單片機(jī)應(yīng)用開發(fā)不同,FPGA有自己的開發(fā)流程。但具體上怎樣操作,作為初學(xué)者,沒有一點(diǎn)經(jīng)驗(yàn)。網(wǎng)站獎(jiǎng)勵(lì)的清華FPGA需要的開發(fā)軟件,到目前還沒有安裝成功。暫且先看看相關(guān)學(xué)習(xí),慢慢積累這方面的知識(shí)
    發(fā)表于 06-23 14:47

    流程工業(yè)和離散工業(yè)是什么?

    流程工業(yè)和離散工業(yè)是兩種不同類型的工業(yè)生產(chǎn)方式。 流程工業(yè)是指以連續(xù)流程為基礎(chǔ)的生產(chǎn)方式,其生產(chǎn)過程是連續(xù)的、穩(wěn)定的。典型的流程工業(yè)包括石化、化工、制藥和食品加工等行業(yè)。在
    的頭像 發(fā)表于 05-09 14:01 ?1022次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品