0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

FPGA入門之FPGA 開發(fā)流程

jf_78858299 ? 來(lái)源:CSDN ? 作者:原來(lái)如此呀 ? 2023-03-21 10:26 ? 次閱讀

FPGA 的設(shè)計(jì)流程就是利用 EDA 開發(fā)軟件和編程工具對(duì) FPGA 芯片進(jìn)行開發(fā)的過(guò)程。原理圖和HDL(Hardware description language,硬件描述語(yǔ)言)是兩種最常用的數(shù)字硬件電路描述方法。其中,運(yùn)用 HDL 設(shè)計(jì)方法具有更好的移植性、通用性以及利于模塊劃分的特點(diǎn),在工作學(xué)習(xí)中被廣泛使用。典型 FPGA 的開發(fā)流程一般如下圖所示, 其包括功能定義/器件選型、設(shè)計(jì)輸入、功能仿真、綜合優(yōu)化、綜合后仿真、實(shí)現(xiàn)、布線后仿真、板級(jí)仿真以及芯片編程與調(diào)試等主要步驟。

第1節(jié) 功能定義/器件選型

在 FPGA 設(shè)計(jì)項(xiàng)目開始之前需要進(jìn)行方案論證、系統(tǒng)設(shè)計(jì)和 FPGA 芯片的選型等準(zhǔn)備性工作,在確定并評(píng)估好方案后需要進(jìn)行系統(tǒng)功能的定義和模塊的劃分。根據(jù)方案中任務(wù)要求,如方案中所確定的系統(tǒng)功能以及復(fù)雜度,對(duì)硬件的工作速度和器件自身的資源、成本、以及性能指標(biāo)等各個(gè)方面進(jìn)行綜合考慮,選擇出較合適的器件類型。

**在設(shè)計(jì)方法上,一般都采用自頂向下的設(shè)計(jì)方法,首先將整個(gè)系統(tǒng)劃分成若干個(gè)基本模塊,然后再將每個(gè)基本模塊劃分為下一層次的基本單元,這樣依次劃分后確定好各個(gè)模塊的功能以及各個(gè)模塊需要設(shè)計(jì)的輸入輸出信號(hào),再通過(guò) EDA 工具進(jìn)行各個(gè)模塊的設(shè)計(jì)。**最終要實(shí)現(xiàn)的目標(biāo)是:針對(duì)每個(gè)輸入信號(hào),利用 EDA 工具以及 FPGA 的資源設(shè)計(jì)出需要的輸出信號(hào)邏輯。

第2節(jié) 設(shè)計(jì)輸入( Design Entry)

設(shè)計(jì)輸入是指在 EDA 工具中,通過(guò)使用該開發(fā)軟件設(shè)計(jì)出所希望得到的系統(tǒng)或電路的一個(gè)過(guò)程。在日常工作學(xué)習(xí)中 最常使用的方式是通過(guò)硬件描述語(yǔ)言( HDL)的方式來(lái)描繪設(shè)計(jì)出最終的數(shù)字電路 。以此方式設(shè)計(jì)電路的過(guò)程需要在 EDA 軟件上通過(guò)文本描述,將實(shí)際的電路用硬件語(yǔ)言表述出來(lái)。

設(shè)計(jì)好文本后,編譯器會(huì)將硬件語(yǔ)言進(jìn)行綜合、布局布線,最后轉(zhuǎn)換成一個(gè)個(gè)的邏輯門、寄存器、數(shù)據(jù)選擇器等實(shí)際電路。 設(shè)計(jì)師接觸比較多的 HDL 語(yǔ)言是行為 HDL,其主流語(yǔ)言是 Verilog HDL 和 VHDL,這兩種語(yǔ)言都是 IEEE 的標(biāo)準(zhǔn),雖然兩者在語(yǔ)法結(jié)構(gòu)以及設(shè)計(jì)標(biāo)準(zhǔn)上存在差別,但是都有一個(gè)共同的特點(diǎn):語(yǔ)言與芯片工藝無(wú)關(guān)。在任一款 FPGA 芯片上,使用任何一種語(yǔ)言都可以設(shè)計(jì)出想要的數(shù)字電路。

另一種設(shè)計(jì)方式是使用原理圖輸入的方法進(jìn)行設(shè)計(jì)輸入。原理圖輸入方式是一種最直接的描述方式,通過(guò)從元件庫(kù)中調(diào)出來(lái)需要的器件,畫出原理圖。

這一方式有點(diǎn)類似于硬件開發(fā)過(guò)程中設(shè)計(jì)原理圖的過(guò)程, 其在可編程邏輯陣列發(fā)展的前期應(yīng)用的比較廣泛。使用這種方法具有設(shè)計(jì)直觀且易于仿真的優(yōu)勢(shì),但是設(shè)計(jì)效率不高,且難以維護(hù)改動(dòng),對(duì)模塊的構(gòu)造和重用的支持度極不友好。當(dāng)芯片升級(jí)后,所有的原理圖需要重新進(jìn)行一定的改動(dòng),可移植性很差。

除了這 IEEE 標(biāo)準(zhǔn)語(yǔ)言外還有廠商自己的語(yǔ)言, 在實(shí)際的設(shè)計(jì)中也可以用 HDL 為主,原理圖為輔的混合設(shè)計(jì)方式,以發(fā)揮兩者的各自特色與優(yōu)勢(shì)。

第3節(jié) 功能仿真( RTL-Simulation)

功能仿真也稱為綜合前仿真,用戶設(shè)計(jì)好數(shù)字邏輯后需要檢查自己的設(shè)計(jì)是否符合預(yù)期,在不需要綜合之前通過(guò)仿真軟件對(duì)電路進(jìn)行邏輯驗(yàn)證。

在功能仿真器件電路可以不用考慮延遲等因素,僅對(duì)初步的功能進(jìn)行檢驗(yàn)。通過(guò)建立測(cè)試平臺(tái)即 Testbench,利用波形編譯器(仿真軟件)和硬件描述語(yǔ)言建立好波形文件和激勵(lì)信號(hào),在仿真軟件上會(huì)模擬實(shí)際電路的波形顯示出輸出波形信號(hào),并生成報(bào)告文件。用戶通過(guò)觀察各個(gè)時(shí)間點(diǎn)信號(hào)的變化情況來(lái)驗(yàn)證自己所設(shè)計(jì)邏輯的正確性。

綜合前仿真在 FPGA 開發(fā)過(guò)程中不是一定要進(jìn)行的步驟,但卻是極為關(guān)鍵的一步。在實(shí)際的工作學(xué)習(xí)中,充分利用好仿真工具,能夠提高設(shè)計(jì)的效率并及時(shí)發(fā)現(xiàn)設(shè)計(jì)缺陷,從而為后續(xù)的開發(fā)過(guò)程提供保障。常用的硬件描述語(yǔ)言的仿真工具有 Model Tech 公司的 ModelSim、 VCS、 Ncsim 以及 NC-VHDL 等軟件。

第4節(jié) 綜合優(yōu)化( Synthesis)

綜合即針對(duì)給定的電路實(shí)現(xiàn)功能和實(shí)現(xiàn)該電路的約束條件,如速度、功耗、成本及電路類型等,通過(guò)計(jì)算機(jī)進(jìn)行優(yōu)化處理獲得一個(gè)能滿足上述要求的電路設(shè)計(jì)方案。

也就是說(shuō),被綜合的文件是HDL 文件(或其他相應(yīng)文件),綜合的依據(jù)是邏輯設(shè)計(jì)的描述和各種約束條件,綜合的結(jié)果則是一個(gè)硬件電路的實(shí)現(xiàn)方案,該方案必須同時(shí)滿足預(yù)期的功能和約束條件。

對(duì)于綜合來(lái)說(shuō),滿足要求的方案可能有多個(gè),綜合器將產(chǎn)生一個(gè)最優(yōu)的或接近最優(yōu)的結(jié)果。因此,綜合的過(guò)程也就是設(shè)計(jì)目標(biāo)的優(yōu)化過(guò)程,最后獲得的結(jié)構(gòu)與綜合器的工作性能有關(guān)。 常用的綜合工具有 Synplicity 公司的 Synplify/Synplify Pro 軟件以及各個(gè) FPGA 廠家自己推出的綜合開發(fā)工具。

第5節(jié) 綜合后仿真

綜合后仿真是用來(lái)檢查綜合結(jié)果是否和原設(shè)計(jì)一致。后仿真與前仿真的區(qū)別在于: 前仿真是指綜合前的仿真,如在 Modelsim 對(duì)撰寫的代碼直接進(jìn)行仿真,而后仿真是綜合后的仿真,也就是功能仿真。

假設(shè)設(shè)計(jì)師在 Modelsim 中用 HDL 編寫了一個(gè)計(jì)數(shù)器代碼, 其通過(guò)了行為級(jí)的仿真后被加載到 quartus 或者其他的綜合工具中進(jìn)行綜合, 完成綜合后會(huì)生成功能網(wǎng)表, 將行為語(yǔ)言轉(zhuǎn)換成寄存器傳送級(jí)語(yǔ)言, 此時(shí)設(shè)計(jì)師再將其加載到 Modelsim 中進(jìn)行的仿真被叫做后仿真。

后仿真成功后還需要在 quartus 中進(jìn)行映射和布局布線, 并進(jìn)行時(shí)序分析生成時(shí)序網(wǎng)表,描述器件里門或者布線的延時(shí)。 最后將延時(shí)網(wǎng)表和功能網(wǎng)表一起加載到 Modelsim 中仿真,這一仿真為門級(jí)仿真,而在實(shí)際的設(shè)計(jì)過(guò)程中,一般來(lái)說(shuō)不做綜合后仿真也不會(huì)帶來(lái)太大的影響。

第6節(jié) 布局布線( Place & Routes)

布局布線可理解為利用實(shí)現(xiàn)工具把邏輯映射到目標(biāo)器件結(jié)構(gòu)的資源中從而決定邏輯的最佳布局,選擇邏輯與輸入輸出功能鏈接的布線通道進(jìn)行連線,并產(chǎn)生相應(yīng)文件(如配置文件與相關(guān)報(bào)告)。

實(shí)現(xiàn)是 將綜合生成的邏輯網(wǎng)表配置到具體的 FPGA 芯片上,布局布線是其中最重要的過(guò)程 。在完成綜合之后,就是相當(dāng)于有了各種元件, 但如何建立元件之間的連接,就像在 PCB 上把元件放在哪里,元件之間的連接以及相連關(guān)系又是怎么樣的,這個(gè)都是布局布線完成的工作,綜合的結(jié)果可能每次都一樣,但是布局布線的結(jié)構(gòu)基本每次都不會(huì)一樣。

布局將邏輯網(wǎng)表中的硬件原語(yǔ)和底層單元合理地配置到芯片內(nèi)部的固有硬件結(jié)構(gòu)上,并且往往需要在速度最優(yōu)和面積最優(yōu)之間作出選擇。布線根據(jù)布局的拓?fù)浣Y(jié)構(gòu),利用芯片內(nèi)部的各種連線資源,合理正確地連接各個(gè)元件。

目前, FPGA 的結(jié)構(gòu)非常復(fù)雜,特別是在有時(shí)序約束條件時(shí),需要利用時(shí)序驅(qū)動(dòng)的引擎進(jìn)行布局布線。布線結(jié)束后,軟件工具會(huì)自動(dòng)生成報(bào)告,提供有關(guān)設(shè)計(jì)中各部分資源的使用情況。由于只有 FPGA 芯片生產(chǎn)商對(duì)芯片結(jié)構(gòu)最為了解,所以布局布線必須選擇芯片開發(fā)商提供的工具。

第7節(jié) 時(shí)序仿真( Timing)

時(shí)序仿真,也稱為后仿真,是指將布局布線的延時(shí)信息反標(biāo)注到設(shè)計(jì)網(wǎng)表中來(lái)檢測(cè)有無(wú)時(shí)序違規(guī)(即不滿足時(shí)序約束條件或器件固有的時(shí)序規(guī)則,如建立時(shí)間、保持時(shí)間等)現(xiàn)象。

時(shí)序仿真使用布局布線后器件給出的模塊和連線的延時(shí)信息, 在最壞的情況下對(duì)電路的行為作出實(shí)際地估計(jì)。時(shí)序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激勵(lì)也是相同的,唯一的差別是: 時(shí)序仿真加載到仿真器的設(shè)計(jì)包括基于實(shí)際布局布線設(shè)計(jì)的最壞情況的布局布線延時(shí),并且在仿真結(jié)果波形圖中時(shí)序仿真后的信號(hào)加載了時(shí)延,而功能仿真沒(méi)有。

由于不同芯片的內(nèi)部延時(shí)不一樣,不同的布局布線方案也給延時(shí)帶來(lái)不同的影響。因此在布局布線后,通過(guò)對(duì)系統(tǒng)和各個(gè)模塊進(jìn)行時(shí)序仿真,分析其時(shí)序關(guān)系,估計(jì)系統(tǒng)性能,以及檢查和消除競(jìng)爭(zhēng)冒險(xiǎn)是非常有必要的。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。

第8節(jié) 板級(jí)仿真與驗(yàn)證

板級(jí)仿真主要應(yīng)用于高速電路設(shè)計(jì)中,對(duì)高速系統(tǒng)的信號(hào)完整性、電磁干擾等特征進(jìn)行分析,一般都以第三方工具進(jìn)行仿真和驗(yàn)證,在實(shí)際的工作中一般接觸較少。

第9節(jié) 編程與調(diào)試

設(shè)計(jì)的最后一步就是芯片的編程與調(diào)試。編程是指將 FPGA 開發(fā)工具最后產(chǎn)生使用的數(shù)據(jù)文件(位數(shù)據(jù)流文件, Bitstream Generation)加載到 FPGA 芯片中。

其中,芯片編程需要滿足一定的條件,如編程電壓、 編程時(shí)序和編程算法等,而這些條件一般廠家都會(huì)事先完成設(shè)計(jì), 設(shè)計(jì)師直接按照規(guī)范操作即可。

數(shù)據(jù)文件下載到 FPGA 芯片中以后還需要進(jìn)行調(diào)試驗(yàn)證,=邏輯分析儀(Logic Analyzer, LA)便是 FPGA 設(shè)計(jì)的主要調(diào)試工具。使用 LA 需要引出大量的測(cè)試管腳,且 LA 價(jià)格昂貴,但是當(dāng)工程較大、所需要調(diào)試觀察的信號(hào)過(guò)多時(shí),仍舊需要 LA 來(lái)對(duì)芯片內(nèi)部的信號(hào)進(jìn)行觀察驗(yàn)證。

目前,主流的 FPGA 芯片生產(chǎn)商都提供了內(nèi)嵌的在線邏輯分析儀(如 Xilinx ISE 中的 ChipScope、 Altera QuartusII 中的 SignalTapII 以及 SignalProb),它們只需要占用芯片少量的邏輯資源便可達(dá)到同樣的效果,在實(shí)際的工程調(diào)試中發(fā)揮了極大的作用。之后將會(huì)詳細(xì)介紹 SIGNALTAP 工具的使用。

版權(quán)聲明:本文為CSDN博主「原來(lái)如此呀」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/Royalic/article/details/120995615

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

    關(guān)注

    1629

    文章

    21738

    瀏覽量

    603463
  • 芯片
    +關(guān)注

    關(guān)注

    455

    文章

    50818

    瀏覽量

    423720
  • eda
    eda
    +關(guān)注

    關(guān)注

    71

    文章

    2759

    瀏覽量

    173283
  • HDL
    HDL
    +關(guān)注

    關(guān)注

    8

    文章

    327

    瀏覽量

    47392
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA開發(fā)流程簡(jiǎn)介

    FPGA開發(fā)基本流程包括:設(shè)計(jì)輸入、設(shè)計(jì)仿真、設(shè)計(jì)綜合、布局布線,它們的連接關(guān)系如圖1 所示。
    發(fā)表于 06-10 08:24 ?1742次閱讀

    FPGA開發(fā)流程及仿真技術(shù)解析

    FPGA開發(fā)流程是遵循著ASIC的開發(fā)流程發(fā)展的,發(fā)展到目前為止,FPGA
    發(fā)表于 01-06 11:19 ?1910次閱讀

    FPGA入門教程

    FPGA入門教程 FPGA 入門教程 1 .?dāng)?shù)字電路設(shè)計(jì)入門 2 .FPGA 簡(jiǎn)介 3
    發(fā)表于 08-11 11:40

    FPGA入門:基本開發(fā)流程概述

    FPGA入門:基本開發(fā)流程概述 本文節(jié)選自特權(quán)同學(xué)的圖書《FPGA/CPLD邊練邊學(xué)——快速入門
    發(fā)表于 02-09 20:14

    FPGA基本開發(fā)流程概述

    FPGA入門:基本開發(fā)流程概述 在第一章中,已經(jīng)給出了FPGA/CPLD的基本開發(fā)
    發(fā)表于 01-28 02:29

    FPGA開發(fā)流程

    ??偠灾?,FPGA開發(fā)流程雖然有些復(fù)雜,但是隨著學(xué)習(xí)的逐步深入,對(duì)流程全貌由更深入的認(rèn)知,你會(huì)發(fā)現(xiàn)其實(shí)FPGA
    發(fā)表于 01-28 04:24

    FPGA入門開發(fā)具體流程有哪些?求過(guò)程

    FPGA入門開發(fā)具體流程有哪些?求過(guò)程
    發(fā)表于 07-26 06:44

    FPGA-SOPC入門中文教程V2.03

    SOPC FPGA 快速入門教程 本教程以豐富的實(shí)例和詳細(xì)的步驟講解基于QuartusII的FPGA開發(fā)流程和基于Nios II的SOPC
    發(fā)表于 06-05 18:47 ?308次下載

    FPGA/SOPC開發(fā)快速入門教程

    FPGA/SOPC開發(fā)快速入門教程
    發(fā)表于 08-06 16:56 ?79次下載
    <b class='flag-5'>FPGA</b>/SOPC<b class='flag-5'>開發(fā)</b>快速<b class='flag-5'>入門</b>教程

    FPGA開發(fā)流程及編程思想

    FPGA開發(fā)流程及編程思想,好東西,喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 01-18 15:17 ?31次下載

    FPGA開發(fā)流程

    FPGA開發(fā)流程,好東西,喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 01-18 15:17 ?33次下載

    Xilin ISE設(shè)計(jì)流程FPGA系統(tǒng)設(shè)計(jì)入門免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Xilin ISE設(shè)計(jì)流程FPGA系統(tǒng)設(shè)計(jì)入門免費(fèi)下載。
    發(fā)表于 10-29 08:00 ?9次下載
    Xilin ISE設(shè)計(jì)<b class='flag-5'>流程</b><b class='flag-5'>FPGA</b>系統(tǒng)設(shè)計(jì)<b class='flag-5'>入門</b>免費(fèi)下載

    關(guān)于FPGA它的開發(fā)流程是怎樣的

    FPGA的設(shè)計(jì)流程就是利用EDA開發(fā)軟件和編程工具對(duì)FPGA芯片進(jìn)行開發(fā)的過(guò)程。FPGA
    發(fā)表于 11-06 15:17 ?2467次閱讀

    FPGA基礎(chǔ)知識(shí)----第二章 FPGA 開發(fā)流程

    第二章 FPGA 開發(fā)流程FPGA 的設(shè)計(jì)流程就是利用 EDA 開發(fā)軟件和編程工具對(duì)
    發(fā)表于 12-29 19:40 ?9次下載
    <b class='flag-5'>FPGA</b>基礎(chǔ)知識(shí)----第二章 <b class='flag-5'>FPGA</b> <b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>

    FPGA的詳細(xì)開發(fā)流程

    ??FPGA 的詳細(xì)開發(fā)流程就是利用 EDA 開發(fā)工具對(duì) FPGA 芯片進(jìn)行開發(fā)的過(guò)程,所以
    的頭像 發(fā)表于 07-04 14:37 ?5080次閱讀
    <b class='flag-5'>FPGA</b>的詳細(xì)<b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>