FPGA開(kai)發流(liu)程是(shi)怎樣的(de)?FPGA開(kai)發流(liu)程簡述
時(shi)間:2018-08-15 來源:未(wei)知
之前我們討論過FPGA是什么,也知道了FPGA能(neng)做什么,那么FPGA開發流程是怎樣(yang)的(de)?FPGA開發步驟(zou)有哪些呢?我們一起來(lai)看下。

FPGA開發(fa)流程(cheng)(cheng)就是利(li)用EDA開發(fa)軟件和編程(cheng)(cheng)工具對(dui)FPGA芯片(pian)進行(xing)開發(fa)的(de)過程(cheng)(cheng)。典型的(de)FPGA開發(fa)流程(cheng)(cheng)一般包括功能(neng)定義 / 器件選型、設計輸入、功能(neng)仿真、綜(zong)合優化(hua)、綜(zong)合后(hou)仿真、實現、布 線(xian)后(hou)仿真、板(ban)級仿真以及芯片(pian)編程(cheng)(cheng)與調(diao)試(shi)等主要步驟(zou),如下圖。

FPGA典型設開發(fa)流程(cheng)圖
接下來,我們對FPGA開發的主(zhu)要(yao)步(bu)驟進行一下展開,方便大(da)家進一步(bu)理解。
1、功能定義/器件選型
在開發(fa)FPGA項目(mu)之(zhi)前,必須(xu)有系(xi)統(tong)(tong)功能的(de)(de)定(ding)義(yi)和模(mo)塊的(de)(de)劃分(fen),另外就是(shi)要(yao)根據任務(wu)要(yao)求(qiu),如系(xi)統(tong)(tong)的(de)(de)功能和復雜(za)度,對(dui)工作速(su)度和器件本(ben)身的(de)(de)資源(yuan)、成本(ben)、以及連線的(de)(de)可布性等方(fang)面進行權衡,選(xuan)擇合(he)適的(de)(de)設(she)計方(fang)案(an)和合(he)適的(de)(de)器件類型。 一般都(dou)采用自頂向下的(de)(de)設(she)計方(fang)法,把(ba)系(xi)統(tong)(tong)分(fen)成若干個(ge)基本(ben)單元(yuan),然后再把(ba)每個(ge)基本(ben)單元(yuan) 劃分(fen)為(wei)下一層次(ci)的(de)(de)基本(ben)單元(yuan),一直這樣做下去,直到可以直接使用 EDA 元(yuan)件庫為(wei)止。
2、 設計輸入(ru)
設(she)(she)計(ji)輸(shu)(shu)入是(shi)將所(suo)設(she)(she)計(ji)的(de)(de)系統(tong)或電路以開(kai)發軟件(jian)要(yao)求的(de)(de)某種(zhong)形(xing)式(shi)表示出(chu)(chu)來(lai),并輸(shu)(shu)入給 EDA 工具的(de)(de)過程(cheng)。常用(yong)(yong)(yong)的(de)(de)方(fang)(fang)法有硬件(jian)描述(shu)語言 (HDL) 和(he)原理圖(tu)輸(shu)(shu)入方(fang)(fang)法等(deng)。原理圖(tu)輸(shu)(shu)入方(fang)(fang)式(shi)是(shi)一種(zhong)直(zhi)接的(de)(de)描述(shu)方(fang)(fang)式(shi),在(zai)可(ke)編程(cheng)芯片發展的(de)(de)早期應用(yong)(yong)(yong)比較廣泛,它將所(suo)需(xu)(xu)的(de)(de)器件(jian)從元件(jian)庫(ku)中調出(chu)(chu)來(lai),畫出(chu)(chu)原理圖(tu)。這種(zhong)方(fang)(fang)法雖然直(zhi)觀(guan)并易于仿真(zhen),但效率(lv)很(hen)低(di),且不易維(wei)護,不利于模塊構造和(he)重(zhong)用(yong)(yong)(yong)。更(geng)主(zhu)要(yao)的(de)(de)缺(que)點是(shi)可(ke)移植(zhi)性差(cha),當芯片升級后,所(suo)有的(de)(de)原理圖(tu)都需(xu)(xu)要(yao)作一定的(de)(de)改(gai)動。目前,在(zai)實際開(kai)發中應用(yong)(yong)(yong)廣的(de)(de)就是(shi) HDL 語言輸(shu)(shu)入法,利用(yong)(yong)(yong)文(wen)本描述(shu)設(she)(she)計(ji),可(ke)以分(fen)為普(pu)通 HDL 和(he)行(xing)為 HDL。普(pu)通HDL有ABEL、CUR 等(deng),支持邏輯(ji)方(fang)(fang)程(cheng)、真(zhen)值(zhi)表和(he)狀態機等(deng)表達方(fang)(fang)式(shi),主(zhu)要(yao)用(yong)(yong)(yong)于簡單的(de)(de)小型(xing)設(she)(she)計(ji)。而(er)在(zai)中大型(xing)工程(cheng)中,主(zhu)要(yao)使用(yong)(yong)(yong)行(xing)為 HDL,其主(zhu)流(liu)語言是(shi) Verilog HDL 和(he) VHDL。這兩種(zhong)語言
都是美國電(dian)氣與電(dian)子工程師(shi)協(xie)會 (IEEE) 的(de)(de)標(biao)準,其共同的(de)(de)突出特(te)點(dian)有 :語(yu)言與芯片工藝無關,利于(yu)(yu)自(zi)頂向下設(she)計,便于(yu)(yu)模塊的(de)(de)劃分與移植,可移植性好(hao),具有很強的(de)(de)邏輯描述和(he)仿真功能,而且輸入(ru)效率(lv)很高(gao)。 除了(le)這 IEEE標(biao)準語(yu)言外,還有廠商自(zi)己的(de)(de)語(yu)言。也可以(yi)用 HDL 為主,原理圖為輔(fu)的(de)(de)混合(he)設(she)計方(fang)式,以(yi)發揮兩者(zhe)的(de)(de)各自(zi)特(te)色(se)。
3、 功能仿真
功能(neng)(neng)(neng)仿(fang)(fang)真(zhen)也稱為前仿(fang)(fang)真(zhen)是在編(bian)譯之(zhi)前對(dui)用(yong)戶所(suo)設(she)(she)計(ji)的(de)電路進行(xing)邏(luo)(luo)輯(ji)功能(neng)(neng)(neng)驗證,此時的(de)仿(fang)(fang)真(zhen)沒有延(yan)遲信(xin)息(xi), 僅對(dui)初步的(de)功能(neng)(neng)(neng)進行(xing)檢(jian)測(ce)。仿(fang)(fang)真(zhen)前,要(yao)先(xian)利用(yong)波(bo)形(xing)編(bian)輯(ji)器和(he) HDL 等建(jian)立波(bo)形(xing)文件和(he)測(ce)試向量 ( 即(ji)將所(suo)關(guan)心(xin)的(de)輸 入信(xin)號組合成(cheng)序列(lie) ),仿(fang)(fang)真(zhen)結果(guo)將會生(sheng)成(cheng)報告文件和(he)輸出信(xin)號波(bo)形(xing),從中(zhong)便(bian)可以(yi)(yi)觀察各個節點信(xin)號的(de)變(bian)化。如果(guo) 發現錯誤(wu),則返回設(she)(she)計(ji)修改邏(luo)(luo)輯(ji)設(she)(she)計(ji)。常用(yong)的(de)工具有 Model Tech 公司(si)的(de) ModelSim、Sysnopsys 公司(si)的(de) VCS 和(he) Cadence 公司(si)的(de) NC-Verilog 以(yi)(yi)及 NC-VHDL 等軟件。
4、 綜合優化
所(suo)(suo)謂綜合(he)(he)(he)(he)就(jiu)是(shi)將(jiang)較高級(ji)抽象層次的(de)(de)(de)描述(shu)(shu)轉化(hua)(hua)成(cheng)(cheng)較低層次的(de)(de)(de)描述(shu)(shu)。綜合(he)(he)(he)(he)優化(hua)(hua)根(gen)據目標(biao)與(yu)要求優化(hua)(hua)所(suo)(suo)生成(cheng)(cheng)的(de)(de)(de)邏(luo) 輯(ji)連(lian)接,使層次設計平(ping)面(mian)化(hua)(hua),供 FPGA 布(bu)(bu)局(ju)布(bu)(bu)線(xian)軟件(jian)進行實現。就(jiu)目前的(de)(de)(de)層次來(lai)(lai)看,綜合(he)(he)(he)(he)優化(hua)(hua) (Synthesis) 是(shi)指 將(jiang)設計輸入編譯成(cheng)(cheng)由與(yu)門(men)(men)、或門(men)(men)、非(fei)門(men)(men)、RAM、觸發器等基(ji)本邏(luo)輯(ji)單元組成(cheng)(cheng)的(de)(de)(de)邏(luo)輯(ji)連(lian)接網(wang)表(biao),而并(bing)非(fei)真實的(de)(de)(de)門(men)(men) 級(ji)電路(lu)。真實具(ju)(ju)體(ti)的(de)(de)(de)門(men)(men)級(ji)電路(lu)需要利(li)用 FPGA 制(zhi)造商的(de)(de)(de)布(bu)(bu)局(ju)布(bu)(bu)線(xian)功能,根(gen)據綜合(he)(he)(he)(he)后生成(cheng)(cheng)的(de)(de)(de)標(biao)準門(men)(men)級(ji)結構(gou)網(wang)表(biao)來(lai)(lai) 產生。為了(le)能轉換(huan)成(cheng)(cheng)標(biao)準的(de)(de)(de)門(men)(men)級(ji)結構(gou)網(wang)表(biao),HDL 程(cheng)序(xu)的(de)(de)(de)編寫必須符合(he)(he)(he)(he)特定綜合(he)(he)(he)(he)器所(suo)(suo)要求的(de)(de)(de)風格。由于門(men)(men)級(ji)結構(gou)、 RTL 級(ji)的(de)(de)(de) HDL 程(cheng)序(xu)的(de)(de)(de)綜合(he)(he)(he)(he)是(shi)很成(cheng)(cheng)熟(shu)的(de)(de)(de)技(ji)術,所(suo)(suo)有(you)的(de)(de)(de)綜合(he)(he)(he)(he)器都可以支(zhi)持到這一(yi)級(ji)別的(de)(de)(de)綜合(he)(he)(he)(he)。常用的(de)(de)(de)綜合(he)(he)(he)(he)工具(ju)(ju)有(you) Synplicity 公司的(de)(de)(de) Synplify/Synplify Pro 軟件(jian)以及各個 FPGA 廠(chang)家(jia)自(zi)己推出(chu)的(de)(de)(de)綜合(he)(he)(he)(he)開發工具(ju)(ju)。
5、 綜合后仿真
綜(zong)合(he)(he)后仿(fang)真檢查綜(zong)合(he)(he)結果是否和原設計(ji)一(yi)(yi)致。在(zai)仿(fang)真時(shi)(shi)(shi),把(ba)綜(zong)合(he)(he)生成的(de)標(biao)準延時(shi)(shi)(shi)文件反標(biao)注到綜(zong)合(he)(he)仿(fang)真模(mo)型(xing)中去,可估計(ji)門延時(shi)(shi)(shi)帶(dai)來的(de)影響。但這一(yi)(yi)步驟(zou)不(bu)能估計(ji)線(xian)延時(shi)(shi)(shi),因此(ci)和布線(xian)后的(de)實際(ji)情況還有一(yi)(yi)定的(de)差距(ju),并不(bu)十分準確。目前的(de)綜(zong)合(he)(he)工具較(jiao)為成熟,對于一(yi)(yi)般的(de)設計(ji)可以省略這一(yi)(yi)步,但如果在(zai)布局布線(xian)后發現電路結構和設計(ji)意(yi)圖不(bu)符,則需要回(hui)溯到綜(zong)合(he)(he)后仿(fang)真來確認問題(ti)之(zhi)所在(zai)。在(zai)功能仿(fang)真中介紹的(de)軟(ruan)件工具一(yi)(yi)般都支持綜(zong)合(he)(he)后仿(fang)真。
6、 實(shi)現(xian)與布(bu)局(ju)布(bu)線
布(bu)局(ju)(ju)布(bu)線(xian)(xian)(xian)可理(li)(li)解為(wei)(wei)利用實現工具(ju)把邏輯(ji)(ji)映射到(dao)目(mu)標(biao)器(qi)件(jian)結(jie)(jie)構的(de)(de)(de)資(zi)(zi)源(yuan)中(zhong),決定邏輯(ji)(ji)的(de)(de)(de)佳布(bu)局(ju)(ju),選擇(ze)邏輯(ji)(ji)與輸(shu)入輸(shu)出功能鏈接的(de)(de)(de)布(bu)線(xian)(xian)(xian)通道(dao)進行(xing)連(lian)線(xian)(xian)(xian),并產生(sheng)相(xiang)應文(wen)件(jian) ( 如配置(zhi)(zhi)文(wen)件(jian)與相(xiang)關(guan)報(bao)告 ),實現是(shi)(shi)將綜合(he)生(sheng)成的(de)(de)(de)邏輯(ji)(ji)網(wang)表配置(zhi)(zhi)到(dao)具(ju)體的(de)(de)(de) FPGA 芯(xin)片(pian)上(shang),布(bu)局(ju)(ju)布(bu)線(xian)(xian)(xian)是(shi)(shi)其中(zhong)重要的(de)(de)(de)過程。布(bu)局(ju)(ju)將邏輯(ji)(ji)網(wang)表中(zhong)的(de)(de)(de)硬(ying)件(jian)原語和底(di)層單(dan)元(yuan)合(he)理(li)(li)地(di)配置(zhi)(zhi)到(dao)芯(xin)片(pian)內部(bu)(bu)的(de)(de)(de)固有硬(ying)件(jian)結(jie)(jie)構上(shang),并且(qie)往往需要在(zai)速度(du)優和面積(ji)優之間作出選擇(ze)。布(bu)線(xian)(xian)(xian)根據布(bu)局(ju)(ju)的(de)(de)(de)拓撲結(jie)(jie)構,利用芯(xin)片(pian)內部(bu)(bu)的(de)(de)(de)各種連(lian)線(xian)(xian)(xian)資(zi)(zi)源(yuan),合(he)理(li)(li)正確地(di)連(lian)接各個元(yuan)件(jian)。目(mu)前,FPGA 的(de)(de)(de)結(jie)(jie)構非(fei)常復雜,特別(bie)是(shi)(shi)在(zai)有時序約束條件(jian)時,需要利用時序驅動(dong)的(de)(de)(de)引擎進行(xing)布(bu)局(ju)(ju)布(bu)線(xian)(xian)(xian)。布(bu)線(xian)(xian)(xian)結(jie)(jie)束后,軟件(jian)工具(ju)會自動(dong)生(sheng)成報(bao)告,提供有關(guan)設計中(zhong)各部(bu)(bu)分資(zi)(zi)源(yuan)的(de)(de)(de)使用情況。由于只有 FPGA 芯(xin)片(pian)生(sheng)產商(shang)對芯(xin)片(pian)結(jie)(jie)構為(wei)(wei)了解,所以(yi)布(bu)局(ju)(ju)布(bu)線(xian)(xian)(xian)必須(xu)選擇(ze)芯(xin)片(pian)開發商(shang)提供的(de)(de)(de)工具(ju)。
7、 時(shi)序仿(fang)真
時(shi)序仿(fang)(fang)真(zhen),也稱為后仿(fang)(fang)真(zhen),是指將布局(ju)布線的(de)(de)(de)延(yan)(yan)時(shi)信(xin)息反(fan)標注到設計網表中來檢測有無(wu)時(shi)序違規 ( 即不(bu)滿足時(shi)序約束條件或器件固有的(de)(de)(de)時(shi)序規則(ze),如建立(li)時(shi)間(jian)、保持時(shi)間(jian)等 ) 現象。時(shi)序仿(fang)(fang)真(zhen)包含的(de)(de)(de)延(yan)(yan)遲信(xin)息全,也精確(que),能較好地反(fan)映芯片(pian)的(de)(de)(de)實(shi)際工(gong)作(zuo)情況(kuang)。由于不(bu)同芯片(pian)的(de)(de)(de)內部延(yan)(yan)時(shi)不(bu)一樣,不(bu)同的(de)(de)(de)布局(ju)布線方(fang)案也給延(yan)(yan)時(shi)帶來不(bu)同的(de)(de)(de)影響。因此在(zai)布局(ju)布線后,通過對系(xi)統(tong)和(he)各(ge)個模(mo)塊(kuai)進行時(shi)序仿(fang)(fang)真(zhen),分析其時(shi)序關系(xi),估計系(xi)統(tong)性能,以及檢查和(he)消除競(jing)爭(zheng)冒險是非常有必要的(de)(de)(de)。在(zai)功(gong)能仿(fang)(fang)真(zhen)中介紹的(de)(de)(de)軟件工(gong)具(ju)一般都支持綜合后仿(fang)(fang)真(zhen)。
8、 板(ban)級仿真與驗證
板級仿真主要應用于高速電(dian)路設計中,對高速系統(tong)的(de)信(xin)號完整性、電(dian)磁干擾等特征(zheng)進(jin)行分析,一(yi)般都以第(di) 三方工具(ju)進(jin)行仿真和驗證。
9、 芯片編程與調(diao)試(shi)
設計(ji)的(de)后(hou)一(yi)步就是芯(xin)片(pian)(pian)編(bian)程(cheng)與調試(shi)。芯(xin)片(pian)(pian)編(bian)程(cheng)是指產生使(shi)用的(de)數(shu)(shu)據文件 ( 位(wei)數(shu)(shu)據流(liu)文件,Bitstream Generation),然后(hou)將(jiang)編(bian)程(cheng)數(shu)(shu)據下載到 FPGA 芯(xin)片(pian)(pian)中(zhong)。其中(zhong),芯(xin)片(pian)(pian)編(bian)程(cheng)需要滿足(zu)一(yi)定的(de)條件,如編(bian)程(cheng)電壓、編(bian)程(cheng) 時序和(he)編(bian)程(cheng)算法(fa)等方面。邏輯分(fen)(fen)析儀 (Logic Analyzer,LA) 是 FPGA 設計(ji)的(de)主要調試(shi)工(gong)具,但需要引出大量的(de) 測試(shi)管腳,且 LA 價格(ge)昂貴。目前,主流(liu)的(de) FPGA 芯(xin)片(pian)(pian)生產商都提供(gong)了(le)內嵌的(de)在線邏輯分(fen)(fen)析儀 ( 如 Xilinx ISE 中(zhong) 的(de) ChipScope、Altera QuartusII 中(zhong)的(de) SignalTapII 以及 SignalProb) 來解決上(shang)述矛(mao)盾(dun),它們只需要占用芯(xin)片(pian)(pian)少(shao)量 的(de)邏輯資(zi)源,具有很高(gao)的(de)實用價值。
以上就是FPGA開發流程簡述,如果您對FPGA開發感興趣可以聯系我們的在線客服咨詢相關課程,也可以查看小編之前分享的FPGA怎么學的幾個建議。

