一、FPGA設(shè)計流程
?
FPGA設(shè)計流程是利用EDA開發(fā)軟件和編程工具對FPGA芯片進(jìn)行開發(fā)的過程。FPGA的設(shè)計流程如上圖所示:包括設(shè)計定義、代碼實現(xiàn)、功能仿真、邏輯綜合、前仿真、布局布線、后仿真和板級調(diào)試等步驟!
1.設(shè)計定義
設(shè)計定義階段主要進(jìn)行方案驗證、系統(tǒng)設(shè)計和FPGA芯片選擇等準(zhǔn)備工作。根據(jù)任務(wù)要求,評估系統(tǒng)的指標(biāo)和復(fù)雜度,對工作速度和芯片本身的資源、成本等方面進(jìn)行權(quán)衡,選擇合理的設(shè)計方案和合適的器件類型。
這個階段往往會花費大量的時間,這個階段之后一般已經(jīng)完成了系統(tǒng)建模,功能劃分,模塊劃分以及設(shè)計文檔的撰寫等工作。
2.代碼實現(xiàn)
代碼實現(xiàn)階段是將劃分好的各功能模塊用硬件描述語言表達(dá)出來,常用的硬件描述語言有Verilog HDL和VHDL。以后的教程中我們主要講解如何使用Verilog HDL進(jìn)行FPGA設(shè)計。
下面是一個四選一電路的代碼實現(xiàn)過程:
常用的代碼編輯器軟件由notepad++和UltralEdit等,它們支持幾乎所有主流編程語言的高亮顯示、代碼補(bǔ)全、自定義快捷鍵等功能,外觀漂亮、功能強(qiáng)大,擴(kuò)展性強(qiáng),具有豐富的插件包,極大的提高工作效率。
3.功能仿真
功能仿真是在編譯之前對用戶所設(shè)計的電路進(jìn)行邏輯功能驗證,此時的仿真沒有延遲信息,僅對初步的功能進(jìn)行檢測。這里我們補(bǔ)充一個延遲類型的知識點
我們知道信號在電路中傳輸時會有兩種延遲:器件延遲和路徑延遲。顧名思義,器件延遲是信號在經(jīng)過器件傳輸時的延遲時間,路徑延遲是信號經(jīng)過連接線時的延遲時間。上圖中信號從a到b的延遲時間為T1+T2+T3+T4+T5,其中器件延遲是T1、T3、T5,路徑延遲是T2、T4。在功能仿真中,這些延遲信息都為零。
4.邏輯綜合
邏輯綜合的概念是:將高級抽象層次的描述轉(zhuǎn)化成較低層次的描述。
也就是說將語言描述的電路邏輯轉(zhuǎn)化成與門、或門、非門、觸發(fā)器等基本邏輯單元的互連關(guān)系。
還是以四選一電路為例,綜合過程將Verilog代碼翻譯成了門級互連網(wǎng)表。
綜合的概念很重要,利用Verilog 做電路設(shè)計時我們總是強(qiáng)調(diào)可綜合的概念,可綜合就是我們的這段代碼可以被翻譯成門級網(wǎng)表,不可綜合就是代碼不能被翻譯成門級網(wǎng)表。
5.前仿真
前仿真也叫做綜合后仿真,仿真時,把綜合生成的標(biāo)準(zhǔn)延時文件反標(biāo)注到綜合仿真模型中去。
因為綜合后只能體現(xiàn)基本的邏輯門之間的互連關(guān)系,并沒有連線長度信息,所以前仿真只能評估門延時帶來的影響,不能估計路徑延時,前仿真結(jié)果和布線后實際情況還有一定的差距,并不十分準(zhǔn)確。
目前的綜合工具較為成熟,一般的設(shè)計可以省略這一步。但如果布局布線后發(fā)現(xiàn)電路功能與設(shè)計意圖不符,就需要回溯到前仿真來確定問題所在。
6.布局布線
布局布線有時也叫作實現(xiàn)與布局布線,布局布線是將邏輯網(wǎng)表中的門級連接關(guān)系配置到FPGA芯片內(nèi)部的固有硬件結(jié)構(gòu)上。
布局布線的過程是先將綜合后的基本邏輯門映射到FPGA的可編程邏輯塊(CLB)中(上一講中我們知道FPGA中許許多多的CLB組成了巨大的邏輯資源陣列,CLB是FPGA可配置的基礎(chǔ)),相關(guān)的邏輯配置在臨近的CLB中,這就是一個布局的過程;
布線是利用FPGA中豐富的布線資源將CLB根據(jù)邏輯關(guān)系連接在一起。
布局布線策略有兩種:速度優(yōu)先和面積優(yōu)先,布局布線時往往需要在速度最優(yōu)和面積最優(yōu)之間做出選擇。
7.后仿真
后仿真也稱為時序仿真,是將布局布線的延時信息反標(biāo)注到設(shè)計網(wǎng)表中來檢測有無時序違規(guī)。
經(jīng)過布局布線后,門與門之間的連線長度也確定了,所以后仿真包含的延遲信息最全,也最精確,能更好的反映芯片的額實際工作情況。
現(xiàn)在我們可以總結(jié)一下功能仿真、前仿真和后仿真的區(qū)別了:
功能仿真:無延遲信息;
前仿真:只有門級的延遲;
后仿真:門級延遲和連線延遲;
8.板級調(diào)試
我們的FPGA設(shè)計不能只在電腦上跑仿真,最終還是要在電路板上應(yīng)用起來的,設(shè)計的最后一步就是板級測試了,將EDA軟件產(chǎn)生的數(shù)據(jù)文件(位數(shù)據(jù)流文件)下載到FPGA芯片中,進(jìn)行實際的測試。
FPGA工程師還需要有一定的硬件知識,能夠看懂電路板原理圖設(shè)計和PCB是最低要求了,能夠獨立設(shè)計原理圖是最好的了。
打個比方。。。
為了方便初學(xué)者門能更快的了解FPGA的設(shè)計流程,我舉了一個栗子,請看下圖:
代碼實現(xiàn),綜合和布局布線時FPGA設(shè)計流程中的幾個關(guān)鍵步驟,下面我們打個比方加深理解一下這幾個步驟是干什么的:
代碼實現(xiàn):比如我要蓋一座房子,我把房子的特點描述出來:比如面積100平米、帶陽臺、歐式裝修風(fēng)格、挑高3米、一室兩廳一廚一衛(wèi)、臥室木地板客廳瓷磚。。。等等要求,這個描述房屋特點的過程就好比我們用Verilog描述電路功能的過程。
邏輯綜合:建筑師根據(jù)我們的要求畫出施工圖紙,施工圖紙將我的需求數(shù)字化、具體化,比如這個墻有多高,門有多寬,窗戶面積等等,這個過程就好比綜合的過程,將需求翻譯成具體的數(shù)字圖紙,只不過綜合是將電路功能翻譯成門級網(wǎng)表,建筑師干的活就是綜合工具軟件干的活。
布局布線:工人拿會根據(jù)圖紙進(jìn)行施工,用磚、水泥、鋼筋、木材等建造符合圖紙標(biāo)準(zhǔn)的房子。圖紙規(guī)定了一面墻,但是沒有規(guī)定具體用哪一塊磚來砌墻,工人可以自主決定用哪些磚。布局布線是根據(jù)綜合后的網(wǎng)表文件(施工圖紙),利用FPGA芯片內(nèi)部的可編程邏輯塊(CLB),布線資源,時鐘資源,存儲資源等搭建電路的過程。
綜合和布局布線的過程中會涉及到約束策略的問題,比如管腳約束、時鐘約束、面積和速度優(yōu)先級等。這些概念在蓋房子的過程中也有對應(yīng),比如你可以跟建筑師要求陽臺大小、臥室朝向、門窗高度等,采購建筑材料時,你也會控制成本和質(zhì)量之間的平衡。這些都是類似于綜合和布局布線過程中的約束條件。
二、FPGA廠家、產(chǎn)品系列及設(shè)計軟件介紹
1.FPGA廠家
近幾年,全球半導(dǎo)體行業(yè)的關(guān)鍵詞就是:收購、兼并、重組,F(xiàn)PGA領(lǐng)域也發(fā)生了不小的變化。
目前,全球FPGA市場高度集中,被美國四家企業(yè)壟斷,呈現(xiàn)出“兩大兩小”的市場格局?!皟纱蟆笔侵竂ilinx(賽靈思)和Intel(因特爾),“兩小”是指Microsemi(美高森美)和Lattice(萊迪思),前兩大企業(yè)占據(jù)近90%的市場份額。
其中Intel的FPGA業(yè)務(wù)是收購自Altera公司的,現(xiàn)在的Microsemi是在2010年收購Actel后合并而來的。
2015年Lattice以6億美元收購Silicon Image公司;基于保護(hù)國家戰(zhàn)略資產(chǎn)的考慮,16年底美國總統(tǒng)特朗普下達(dá)行政指令,宣布停止具有中資背景的私募股權(quán)基金(Canyon Bridge)收購美國FPGA芯片制造商Lattice(萊迪思)的交易,要求買賣雙方完全、永久性地放棄收購。
“兩小”廠家主攻的是特殊市場,比如軍工、航天市場所用的反熔絲FPGA。反熔絲FPGA價格十分昂貴,只能燒錄一次,抗輻照能力比較強(qiáng)。
初學(xué)者學(xué)習(xí)Xilinx(賽靈思)和Intel(因特爾)家的FPGA就可以,官網(wǎng)資料比較多,開發(fā)板相對便宜。
2.FPGA產(chǎn)品系列
我們只介紹Xilinx(賽靈思)和Intel(因特爾)的FPGA產(chǎn)品系列,另外兩家小眾的FPGA就不介紹了。
上面圖片中的產(chǎn)品系列是從兩家FPGA廠家官網(wǎng)上找到的當(dāng)前在售的產(chǎn)品系列。
Xilinx:工具工藝制程,可以分為6系(45nm)、7系(28nm)、UltraSCALE(20nm)、UltraSCALE+(16nm),按照型號系列還可以分為Spartan、Artix、Kintex、Virtex等系列,另外還有嵌入式系統(tǒng)開發(fā)的Zynq系列。
Intel:Intel目前在售的FPGA產(chǎn)品系列主要有MAX系列、Cyclone系列、Arria系列、Stratix系列、Agilex系列以及SoC FPGA系列產(chǎn)品。
3.設(shè)計軟件
學(xué)習(xí)FPGA一定要學(xué)習(xí)FPGA的設(shè)計思想以及設(shè)計原理,不要糾結(jié)于單一的實驗平臺或者操作軟件,因為你想在這個行業(yè)越走越高的話,廣度和深度都是要有所了解的,初期學(xué)習(xí)的時候尤其注重動手,選擇一款操作平臺以及操作軟件是為了讓你更好的去動手做,而不是讓你在這款軟件或者實驗平臺去做文章,因為不懂原理的話,換個環(huán)境你同樣是什么都不明白。
FPGA設(shè)計軟件的使用和FPGA的設(shè)計流程是一致的,所以學(xué)會了使用其中的一種軟件,再去使用另外的一款軟件也能很快上手。
Xilinx設(shè)計軟件
Xilinx目前開發(fā)工具包括ISE和Vivado,
ISE design suite 支持 Spartan-6、 Virtex-6、和 CoolRunner 器件,及其上一代器件系列。
Xilinx 推薦 Vivado Design Suite ,針對 Virtex-7、Kintex-7、Artix-7、和 Zynq-7000 起的全新設(shè)計。
FPGA廠家的開發(fā)工具都有第三方仿真平臺的接口,調(diào)用最多的第三方仿真軟件就是Modelsim,ISim是ISE自身集成的仿真工具,兩者功能差不多。用modelsim的人比較多,然后教程也多,容易學(xué)。跑大型的工程,Modelsim快很多。所以我們在以后的教程中使用Modelsim演示。
Intel設(shè)計軟件
Intel的FPGA軟件是Quartus,目前最新的版本已經(jīng)到了19版本。
分為3個版本:
英特爾 Quartus Prime 精簡版
英特爾 Quartus Prime 標(biāo)準(zhǔn)版
英特爾 Quartus Prime 專業(yè)版
其中精簡版是免費的,無需付費許可,而且內(nèi)置了modelsim仿真軟件。
編輯:黃飛
評論