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