在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > FPGA開(kāi)發(fā)流程:詳述每一環(huán)節(jié)的物理含義和實(shí)現(xiàn)目標(biāo)

            FPGA開(kāi)發(fā)流程:詳述每一環(huán)節(jié)的物理含義和實(shí)現(xiàn)目標(biāo)

            作者: 時(shí)間:2018-08-29 來(lái)源:網(wǎng)絡(luò) 收藏

            要知道,要把一件事情做好,不管是做哪們技術(shù)還是辦什么手續(xù),明白這個(gè)事情的流程非常關(guān)鍵,它決定了這件事情的順利進(jìn)行與否。同樣,我們學(xué)習(xí)FPGA開(kāi)發(fā)數(shù)字系統(tǒng)這個(gè)技術(shù),先撇開(kāi)使用這個(gè)技術(shù)的基礎(chǔ)編程語(yǔ)言的具體語(yǔ)法、使用工具和使用技巧不談,咱先來(lái)弄清楚FPGA的開(kāi)發(fā)流程是什么。

            本文引用地址:http://www.biyoush.com/article/201808/387998.htm

            FPGA的開(kāi)發(fā)流程是遵循著ASIC的開(kāi)發(fā)流程發(fā)展的,發(fā)展到目前為止,F(xiàn)PGA的開(kāi)發(fā)流程總體按照?qǐng)D1進(jìn)行,有些步驟可能由于其在當(dāng)前項(xiàng)目中的條件的寬度的允許,可以免去,比如靜態(tài)仿真過(guò)程,這樣來(lái)達(dá)到項(xiàng)目時(shí)間上的優(yōu)勢(shì)。但是,大部分的流程步驟還是需要我們循規(guī)蹈矩的去做,因?yàn)檫@些步驟的輸入是上一個(gè)步驟的結(jié)果,輸出是下一個(gè)步驟的輸入的關(guān)系,這樣的步驟就必不可少了。

            有人看到這個(gè)流程圖的時(shí)候,第一個(gè)發(fā)自?xún)?nèi)心的感嘆是“啊,怎么這么麻煩啊,特別是之前從事軟件開(kāi)發(fā)轉(zhuǎn)過(guò)來(lái)的。對(duì)于他們來(lái)講,很少有接觸到一種技術(shù)有如此多的環(huán)節(jié)來(lái)實(shí)現(xiàn)。但是這并不能說(shuō)明FPGA開(kāi)發(fā)的具體難度,與軟件開(kāi)發(fā)有輸入、編譯、鏈接、執(zhí)行步驟對(duì)應(yīng)的就是設(shè)計(jì)輸入、綜合、布局布線(xiàn)、下載燒寫(xiě),F(xiàn)PGA開(kāi)發(fā)只是為了確保這核心實(shí)現(xiàn)主干路每一個(gè)環(huán)節(jié)的成功性加了其他的修飾(約束)和驗(yàn)證而已。下面,我們將以核心主干路為路線(xiàn),一一介紹每個(gè)環(huán)節(jié)的物理含義和實(shí)現(xiàn)目標(biāo)。

            5.1設(shè)計(jì)輸入

            5.1.1設(shè)計(jì)輸入方式

            從圖1 FPGA開(kāi)發(fā)流程中的主干線(xiàn)上分離出第一步設(shè)計(jì)輸入橫向環(huán)節(jié),并做了進(jìn)一步的細(xì)節(jié)的處理,如圖2,從圖上看到,設(shè)計(jì)輸入方式有三種形式,有IP核、原理圖、HDL,由此展開(kāi)設(shè)計(jì)輸入方式的探討。

            原理圖輸入

            原始的數(shù)字系統(tǒng)電路的設(shè)計(jì)可能大家還不可能想象,是用筆紙一個(gè)個(gè)邏輯門(mén)電路甚至晶體管搭建起來(lái)的,這樣的方式我們稱(chēng)作原理圖的輸入方式。那個(gè)時(shí)候,硬件工程師們會(huì)圍繞的坐在一塊,拿著圖紙來(lái)討論電路。幸虧那時(shí)候的數(shù)字電路的還不是很復(fù)雜,要是放到今天,稍微大一點(diǎn)的系統(tǒng),也算得上是浩大工程,稍微有點(diǎn)電路要修改的話(huà),這個(gè)時(shí)候你要是一個(gè)沒(méi)耐心或是一個(gè)急性子的人可能就就會(huì)喪失對(duì)這個(gè)領(lǐng)域的興趣。話(huà)說(shuō)回來(lái),那個(gè)年代出來(lái)的老工程師們,電路基礎(chǔ)功夫確實(shí)很扎實(shí)。

            事情總是朝著好的方向發(fā)展的,后來(lái)出現(xiàn)了大型計(jì)算機(jī),工程師們開(kāi)始將最原始的打孔的編程方式運(yùn)用到數(shù)字電路設(shè)計(jì)當(dāng)中,來(lái)記錄我們手工繪畫(huà)的電路設(shè)計(jì),后來(lái)存儲(chǔ)設(shè)備也開(kāi)始用上了,從卡片過(guò)度到了存儲(chǔ)文本文件了,那個(gè)時(shí)候網(wǎng)表文件大致是起于那個(gè)時(shí)候。

            需要注意的問(wèn)題是原理圖和網(wǎng)表文件的關(guān)系,原理圖是我們最開(kāi)始方便我們?cè)O(shè)計(jì)的一個(gè)輸入方式,而網(wǎng)表文件是計(jì)算機(jī)傳遞原理圖信息給下一道流程或是給仿真平臺(tái)進(jìn)行原理圖描述仿真用的。設(shè)計(jì)輸入方式不一樣,但是對(duì)于功能仿真來(lái)講,最終進(jìn)度到仿真核心的應(yīng)該是同一個(gè)文件,那么這個(gè)文件就是網(wǎng)表文件了。

            有了計(jì)算機(jī)的輔助,數(shù)字電路設(shè)計(jì)起來(lái)可以說(shuō)進(jìn)步了一大截,但是如果依然全部是基于邏輯門(mén)晶體管的話(huà),還是比較繁瑣。于是后來(lái)出現(xiàn)了符號(hào)庫(kù),庫(kù)里包含一些常用的具有通行的器件,比如D觸發(fā)器類(lèi)的等等,并隨著需求的發(fā)展,這些符號(hào)庫(kù)不斷的在豐富。與在原理圖里利用這些符號(hào)庫(kù)構(gòu)建電路對(duì)應(yīng)的是,由原理圖得到的這個(gè)網(wǎng)表文件的描述方式也相應(yīng)的得到擴(kuò)展,那么這里網(wǎng)表文件里對(duì)電路符號(hào)的描述就是最開(kāi)始的原語(yǔ)了。

            作為最原始的數(shù)字電路ASIC設(shè)計(jì)輸入的方式,并從ASIC設(shè)計(jì)流程延續(xù)到FPGA的設(shè)計(jì)流程,有著它與生俱來(lái)的優(yōu)點(diǎn),就是直觀性、簡(jiǎn)潔性,以致目前依然還在使用。但是需要注意的是,這也是相對(duì)的,具體討論見(jiàn)下一小節(jié)。

            HDL輸入

            HDL全稱(chēng)是硬件描述語(yǔ)言Hardware Description Language,這種輸入方式要追溯的話(huà)得到20世紀(jì)90年代初了。當(dāng)時(shí)的數(shù)字電路的規(guī)模已足以讓按照當(dāng)時(shí)的輸入方式進(jìn)行門(mén)級(jí)抽象設(shè)計(jì)顧左顧不了右了,一不小心很容易出錯(cuò),而且得進(jìn)行多層次的原理圖切割,最為關(guān)鍵的是如何能做到在更抽象的層次上描述數(shù)字電路。

            于是一些EDA開(kāi)始提供一種文本形式的,非常嚴(yán)謹(jǐn),不易出錯(cuò)的HDL輸入方式開(kāi)始提供了。特別是在1980年的時(shí)候,美國(guó)軍方發(fā)起來(lái)甚高速集成電路(Very-High-Speed Integrated Circuit)計(jì)劃,就是為了在部隊(duì)中裝備中大規(guī)模需求的數(shù)字電路的設(shè)計(jì)開(kāi)發(fā)效率,那么這個(gè)VHSIC硬件描述語(yǔ)言就是我們現(xiàn)在的VHDL語(yǔ)言,它也是最早成為硬件描述語(yǔ)言的標(biāo)準(zhǔn)的。與之相對(duì)的是晚些時(shí)間民間發(fā)起的Verilog, 后來(lái)到1995年的時(shí)候,它的第一個(gè)版本的IEEE標(biāo)準(zhǔn)才出臺(tái),但是沿用至今。

            前面提到HDL語(yǔ)言具有不同層次上的抽象,這些抽象層有開(kāi)關(guān)級(jí)、邏輯門(mén)級(jí)、RTL級(jí)、行為級(jí)和系統(tǒng)級(jí),如圖3。其中開(kāi)關(guān)級(jí)、邏輯門(mén)級(jí)又叫結(jié)構(gòu)級(jí),直接反映的是結(jié)構(gòu)上的特性,大量的使用原語(yǔ)調(diào)用,很類(lèi)似最開(kāi)始原理圖轉(zhuǎn)成門(mén)級(jí)網(wǎng)表。RTL級(jí)又可稱(chēng)為功能級(jí)。

            HDL語(yǔ)言除了前面提到的兩種外,歷史上也出現(xiàn)了其他的HDL語(yǔ)言,有ABEL、AHDL、硬件C語(yǔ)言(System C語(yǔ)言、Handle-C)、System verilog等。其中ABEL和AHDL算是早期的語(yǔ)言,因?yàn)橄啾惹懊鎯煞N語(yǔ)言來(lái)講,或多或少都有些致命的缺陷而在小范圍內(nèi)使用或者直接淘汰掉了。而因?yàn)閂HDL和Verilog在仿真方面具有仿真時(shí)間長(zhǎng)的缺陷,System verilog和硬件C語(yǔ)言產(chǎn)生了,從圖3看,System Verilog是在系統(tǒng)級(jí)和行為級(jí)上為Verilog做補(bǔ)充,同時(shí)硬件C語(yǔ)言產(chǎn)生的原因還有就是有種想把軟件和硬件設(shè)計(jì)整合到一個(gè)平臺(tái)下的思想。

            IP(Intellectual Property)核

            什么是IP核?任何實(shí)現(xiàn)一定功能的模塊叫做IP(Intellectual Property)。這里把IP核作為一種輸入方式單獨(dú)列出來(lái),主要考慮到完全用IP核確實(shí)是可以形成一個(gè)項(xiàng)目。它的產(chǎn)生可以說(shuō)是這樣的一個(gè)逆過(guò)程。

            在隨著數(shù)字電路的規(guī)模不斷擴(kuò)大的時(shí)候,面對(duì)一個(gè)超級(jí)大的工程,工程師們可能是達(dá)到一種共識(shí),將這規(guī)模巨大而且復(fù)雜的設(shè)計(jì)經(jīng)常用到的具有一定通用性的功能給獨(dú)立出來(lái),可以用來(lái)其他設(shè)計(jì)。當(dāng)下一次設(shè)計(jì)的時(shí)候,發(fā)現(xiàn)這些組裝好的具有一定功能的模塊確實(shí)挺好用的,于是越來(lái)越多的這種具有一定功能的模塊被提取出來(lái),甚至工程師之間用來(lái)交換,慢慢大家注意到它的知識(shí)產(chǎn)權(quán),于是一種叫做IP知識(shí)產(chǎn)權(quán)的東西出來(lái)了,于是集成電路一個(gè)全新領(lǐng)域(IP設(shè)計(jì))產(chǎn)生了。

            IP按照來(lái)源的不同可以分為三類(lèi),第一種是來(lái)自前一個(gè)設(shè)計(jì)的內(nèi)部創(chuàng)建模塊,第二種是FPGA廠家,第三種就是來(lái)自IP廠商;后面兩種是我們關(guān)注的,這是我們進(jìn)行零開(kāi)發(fā)時(shí)考慮的現(xiàn)有資源問(wèn)題,先撇開(kāi)成本問(wèn)題,IP方式的開(kāi)發(fā)對(duì)項(xiàng)目周期非常有益的,這也是在FPGA應(yīng)用領(lǐng)域章節(jié)陳列相關(guān)FPGA廠家IP資源的原因。

            FPGA廠家和IP廠商可以在FPGA開(kāi)發(fā)的不同時(shí)期提供給我們的IP。我們暫且知道他們分別是未加密的RTL級(jí)IP、加密的RTL級(jí)IP、未經(jīng)布局布線(xiàn)的網(wǎng)表級(jí)IP、布局布線(xiàn)后的網(wǎng)表級(jí)IP。他們的含義在后面陸續(xù)介紹FPGA的開(kāi)發(fā)步驟的時(shí)候,相信大家能夠恍然大悟。需要說(shuō)明的是,越是FPGA靠前端步驟的時(shí)候提供的IP,他的二次開(kāi)發(fā)性就越好,但是它的性能可能是個(gè)反的過(guò)程,同時(shí)也越貴,畢竟任何一個(gè)提供者也不想將自己的源碼程序提供給他者,但是為了不讓客戶(hù)走向其他商家,只能提高價(jià)賣(mài)了,同時(shí)加上一些法律上的協(xié)議保護(hù)。那么越朝FPGA開(kāi)發(fā)步驟的后端,情況就相反了,越是后端,IP核就會(huì)進(jìn)一步做優(yōu)化,性能就越好,但是一些客戶(hù)不要的功能就不好去了。

            FPGA廠商提供一般常用的IP核,畢竟為了讓大家用他們家的芯片,但是一些特殊需要的IP核還是需要付費(fèi)的。當(dāng)然這里需要說(shuō)明的是FPGA廠商的IP是很少可以交叉用的,這一點(diǎn)很容易想,對(duì)廠家來(lái)講不會(huì)做這種給競(jìng)爭(zhēng)者提供服務(wù)事情的。IP廠商一般會(huì)高價(jià)的提供未加密的RTL級(jí)源碼,有時(shí)FPGA廠商為了擴(kuò)大芯片市場(chǎng)占有率,會(huì)購(gòu)買(mǎi)第三方的IP做進(jìn)一步的處理后免費(fèi)提給該FPGA芯片使用者的。

            5.1.2輸入方式使用探討

            在上面我們介紹了三種輸入方式,有些地方會(huì)講到第四種輸入方式,就是門(mén)級(jí)網(wǎng)表文件輸入的形式,我們這里并沒(méi)有把它歸為一種輸入方式,原因在于,本身這些門(mén)級(jí)網(wǎng)表文件的產(chǎn)生還是源于介紹的三種輸入方式中的一種或是幾種混合的方式。所以這里沒(méi)有把它歸為一類(lèi)。

            好了,在上面三種輸入方式介紹的基礎(chǔ)上,我們來(lái)探討一下這令人眼花繚亂的輸入方式,探討的目的就是為了讓我們更好的使用他們。

            首先,來(lái)總結(jié)一下三者的優(yōu)缺點(diǎn),其實(shí)是兩種,因?yàn)镮P核不管是哪個(gè)層次,或者在原理圖中被以符號(hào)的形式被例化,或者在HDL中被模塊例化。所以這里集中探討的是原理圖和HDL的優(yōu)缺點(diǎn)。原理圖的優(yōu)點(diǎn)就是結(jié)構(gòu)直觀性,HDL的優(yōu)點(diǎn)是嚴(yán)密性、支持甚寬的抽象描述層次、易于移植、方便仿真調(diào)試等等,缺點(diǎn)就是不具備對(duì)方的優(yōu)點(diǎn)。當(dāng)時(shí)出現(xiàn)HDL的時(shí)候,人們確實(shí)是想著原理圖該退出歷史舞臺(tái)了,但是到現(xiàn)在它還依然存在著。存在即是有道理的,存在就得用它,但是又得使用HDL,于是存在一種混合編程的形式。除了頂層模塊用原理圖之外,其他的內(nèi)部子模塊全部使用HDL來(lái)描述,HDL描述的模塊可以通過(guò)工具轉(zhuǎn)換成符號(hào),然后在頂層模塊中引用這些符號(hào),這就完成混合編程。

            在接觸的很多FPGA的初學(xué)者很容易被原理圖的輸入方式給迷惑,甚至愛(ài)的深沉,加上本身其他輸入方式的繁瑣的輸入的厭惡,更是愛(ài)的無(wú)法自拔。當(dāng)開(kāi)始強(qiáng)制性要求開(kāi)始時(shí)養(yǎng)成多用HDL輸入的習(xí)慣的時(shí)候,有些甚至有著痛心疾首般的痛苦,但是隨著學(xué)習(xí)的深入,做的東西越來(lái)越大,嘗到HDL輸入方式帶來(lái)的甜頭的時(shí)候,就會(huì)覺(jué)得那個(gè)苦沒(méi)有白吃。

            我覺(jué)得原理圖輸入方式從現(xiàn)在的一些線(xiàn)索看來(lái),在今后的某一天將會(huì)服役終結(jié)。首先是找到了原理圖自身帶有優(yōu)勢(shì)的替代品,那就是主流FPGA集成環(huán)境中的綜合器和第三方綜合器都具有RTL視圖生成功能,這個(gè)視圖完全展示了項(xiàng)目的結(jié)構(gòu)組成,可以上下分層,最大的好處就是可以檢查核實(shí)寫(xiě)的RTL級(jí)代碼的綜合后電路情況。還有一條線(xiàn)索是,大家用的仿真軟件Modelsim并沒(méi)有提供原理圖輸入的支持,是原理圖的設(shè)計(jì)必須在集成環(huán)境成轉(zhuǎn)換成RTL級(jí)代碼或是綜合成網(wǎng)表形式來(lái)做仿真,也是一件繁瑣的事。原理圖的離開(kāi)只是時(shí)間問(wèn)題。

            至于目前HDL選擇哪一種比較好,這個(gè)問(wèn)題放到開(kāi)始將HDL基礎(chǔ)語(yǔ)法知識(shí)的地方進(jìn)行探討。這里要說(shuō)明的是,并不是我們這里講Verilog使用就否定其他的HDL語(yǔ)言。各種HDL的爭(zhēng)端從未停止過(guò),現(xiàn)在還是依然存在四種開(kāi)發(fā)人,第一種是使用Verilog/System Verilog的人,第二種是使用VHDL的人,第三種就是使用System C的人,第四種是混合型的人,到底哪種好,也有也許是時(shí)間問(wèn)題吧,時(shí)間證明一切。

            5.2 綜合

            不管你是采用單一的輸入方式,還是采用的是混合編程(這種在很多跨公司合作項(xiàng)目中會(huì)碰見(jiàn),也許A公司用的是VHDL,B公司用的是Verilog,那這個(gè)項(xiàng)目中很大可能采用混合型),我們統(tǒng)稱(chēng)得到設(shè)計(jì)輸入后,都得把設(shè)計(jì)輸入得到一個(gè)可以和FPGA硬件資源相匹配的一個(gè)描述。假設(shè)FPGA是基于LUT結(jié)構(gòu)的,那么我們就得到一個(gè)基于LUT結(jié)構(gòu)門(mén)級(jí)網(wǎng)表。在這個(gè)過(guò)程中,又可以分為如圖兩個(gè)步驟。

            需要說(shuō)明的是在Altera的開(kāi)發(fā)流程中,將編譯、映射過(guò)程按照我們敘述的合稱(chēng)綜合,而在Xilinx開(kāi)發(fā)流程中,由設(shè)計(jì)輸入得到門(mén)級(jí)網(wǎng)表的過(guò)程叫做綜合,而映射過(guò)程歸結(jié)到其叫做實(shí)現(xiàn)的某一子步驟中。但是整體的流程還是遵循這個(gè)順序的,只是叫法一些外表性的不一樣而已。

            5.2.1編譯

            原理圖、HDL、IP核這些都將通過(guò)編譯后生成門(mén)級(jí)的網(wǎng)表,這里生成門(mén)級(jí)網(wǎng)表的過(guò)程其實(shí)是早起ASIC的步驟,直接生成門(mén)電路網(wǎng)表。這個(gè)時(shí)候的網(wǎng)表文件和具體的器件無(wú)關(guān),也就是說(shuō),生成的門(mén)電路網(wǎng)表也是一種平臺(tái)移植的媒質(zhì)。

            5.2.2映射

            我們通過(guò)編譯得到一張門(mén)級(jí)網(wǎng)表之后,與早先ASIC開(kāi)發(fā)流程中在這個(gè)門(mén)級(jí)網(wǎng)表布線(xiàn)后去做掩膜不同,接下來(lái)就得考慮如何與我們選擇的硬件平臺(tái)結(jié)合起來(lái),畢竟我們使用的硬件平臺(tái)是由一個(gè)一個(gè)的LUT(假設(shè)這類(lèi)FPGA)組成的。那么這個(gè)結(jié)合的過(guò)程就是映射過(guò)程。

            這個(gè)過(guò)程其實(shí)很復(fù)雜,首先需要把形成的網(wǎng)表邏輯門(mén)給規(guī)劃成一些小的組合,然后再去映射到LUT中,這個(gè)過(guò)程中規(guī)劃按照一定的算法和章程進(jìn)行。不同的算法和章程就會(huì)得到不同的映射,不同的映射就會(huì)為后面的過(guò)程提供不同的選擇,最終生成性能不一樣的電路了。

            我們把講基于SRAM技術(shù)的FPGA的二選一多路器拿出來(lái)舉個(gè)例子,如圖6,可以按照紅色線(xiàn)將二選一多路器完全劈成兩邊,原來(lái)的一個(gè)表就可以規(guī)劃到其他兩個(gè)表或表內(nèi)容中,因?yàn)楸慌傻膬刹糠挚蓡为?dú)成表,也可以被規(guī)劃到其他電路形成的表里。

            映射的工程比較復(fù)雜,運(yùn)算量也很大,也是為什么FPGA開(kāi)發(fā)過(guò)程中,一直存在的一個(gè)問(wèn)題,形成最終的可配置二進(jìn)制文件的時(shí)間非常長(zhǎng),特別是一些大一點(diǎn)的項(xiàng)目,時(shí)間消耗比較長(zhǎng)的一個(gè)點(diǎn)就是映射了,至于具體的映射算法就超出了書(shū)的范圍了。再?gòu)?qiáng)調(diào)的是,映射是和器件有關(guān)的,即使是同一個(gè)系列,不同型號(hào)的FPGA內(nèi)部就夠也是有區(qū)別的,好比從外觀看都是一個(gè)單元樓內(nèi)的單元房,但是每個(gè)單元房?jī)?nèi)裝修、家具擺設(shè)等都是不一樣的。

            5.3 布局布線(xiàn)

            5.3.1 布局

            講到這一塊,正好有這么一個(gè)例子來(lái)講解這個(gè)概念。近來(lái)報(bào)道朝鮮希望在俄羅斯遠(yuǎn)東地區(qū)租用數(shù)十萬(wàn)公頃的土地用來(lái)培育農(nóng)產(chǎn)品。咱先撇開(kāi)今后的購(gòu)買(mǎi)的成功與否,假設(shè)成功了,并且有了這個(gè)詳細(xì)的希望培育的農(nóng)作物的品種及數(shù)量,有各式各樣的蔬菜、主糧、禽類(lèi)畜養(yǎng)場(chǎng)、果樹(shù)等等。我們前面做的那些流程得到的LUT門(mén)級(jí)網(wǎng)表就好比這樣的清單。

            得到這樣的清單之后,我們?cè)偌僭O(shè)在這十萬(wàn)公頃的土地上,陽(yáng)光、水資源、溫差都有一定的分布。大家知道農(nóng)作物的的成長(zhǎng)和高量產(chǎn)或者與陽(yáng)關(guān)有關(guān),或者與水資源有關(guān),或者與溫差有關(guān),并且禽類(lèi)的畜養(yǎng)材料與農(nóng)作物的副產(chǎn)有關(guān)。所以接下來(lái)要做的事情就是根據(jù)現(xiàn)有的自然條件和農(nóng)產(chǎn)品的所需環(huán)境特點(diǎn)合理布局,哪些地適合做什么。

            緊接著我們回到FPGA開(kāi)發(fā)中來(lái),我們通過(guò)前面的步驟得到的清單就是LUT門(mén)級(jí)網(wǎng)表。網(wǎng)表里提供的僅僅是從邏輯關(guān)系上一些LUT結(jié)構(gòu)的連接。我們需要將這些LUT結(jié)構(gòu)配置到FPGA具體的哪個(gè)位置。需要說(shuō)明的是,F(xiàn)PGA里任何硬件結(jié)構(gòu)都是按照橫縱坐標(biāo)進(jìn)行標(biāo)定的,圖中選中的是一個(gè)SLICE,SLICE里面存放著表和其他結(jié)構(gòu),它的位置在X50Y112上。不同的資源的坐標(biāo)不一樣,但是坐標(biāo)的零點(diǎn)是公用的。

            在FPGA里布局需要考慮的問(wèn)題是,如何將這些已有的邏輯上連接的LUT及其它元素合理的放到現(xiàn)有的FPGA里,達(dá)到功能要求的時(shí)候保證質(zhì)量。具體點(diǎn)就比如,乘法器這樣的電路適合放在RAM附近,當(dāng)然,硬件乘法器的硬件布局一般也是在存儲(chǔ)器附近,有利于縮短乘法的延時(shí)時(shí)間,什么樣的電路需要配置高速等等。

            十萬(wàn)公頃的地布局規(guī)劃好了,農(nóng)產(chǎn)品就會(huì)有很好的豐收,同樣FPGA開(kāi)發(fā)布局布好了,由FPGA搭建起來(lái)的電路就會(huì)更加穩(wěn)定和擴(kuò)展性。

            5.3.2 布線(xiàn)

            上小節(jié)中,我們把十萬(wàn)公頃的地給安排好了,哪些地該種什么。具體實(shí)施之前還有一些是必須做的,比如農(nóng)作物的澆灌,沒(méi)有一個(gè)很好的灌溉系統(tǒng)是一個(gè)問(wèn)題;再比如豐收了得采摘吧,這個(gè)時(shí)候,能夠讓大卡車(chē)到達(dá)每一塊農(nóng)地的公路樞紐也是需要解決的問(wèn)題。將每一塊或者相關(guān)的田地連接的灌水系統(tǒng)和公路的建設(shè),就好比我們這個(gè)布線(xiàn)的過(guò)程。

            我們?cè)贔PGA內(nèi)通過(guò)布局,知道那些LUT具體分布到哪個(gè)SLICE,但是一方面如何讓這些SLICE連接起來(lái),二方面如何讓輸入的信號(hào)到達(dá)相應(yīng)的開(kāi)始處理點(diǎn)和如何讓輸出到達(dá)輸出IO上,并且連接的電路整體性能好,這就是布線(xiàn)這個(gè)環(huán)節(jié)需要完成的內(nèi)容。要達(dá)到布線(xiàn)最優(yōu)話(huà),當(dāng)然這里面設(shè)計(jì)到布線(xiàn)算法和很多細(xì)節(jié)問(wèn)題,比如涉及到布線(xiàn)資源、PLL資源分布。但是這些對(duì)我們理解布線(xiàn)這個(gè)概念沒(méi)有很多益處,暫且不深入,本質(zhì)上就是一個(gè)線(xiàn)路求最優(yōu)的問(wèn)題。

            5.4 約束

            約束,在圖1上看到,在綜合和布局布線(xiàn)這兩個(gè)流程環(huán)節(jié)里都出現(xiàn)了,我們暫且規(guī)定其為約束一和約束二,或者說(shuō)綜合約束和布局布線(xiàn)約束,布局布線(xiàn)約束又可以分為位置約束、時(shí)序約束。約束,就是對(duì)這些環(huán)節(jié)操作定制規(guī)則。一般開(kāi)發(fā)環(huán)境會(huì)對(duì)這些約束有個(gè)默認(rèn),這些默認(rèn)的設(shè)置對(duì)大部分情況下還是適用的,但是通常布局布線(xiàn)約束中的I/O約束是我們每一個(gè)工程都必須給定的。同時(shí)開(kāi)發(fā)工具開(kāi)放其他約束接口,允許我們?cè)O(shè)置這些規(guī)則,具體的有哪些約束怎么去做在后面介紹工具使用的時(shí)候進(jìn)行討論,這里先明白這些約束的基本概念。

            綜合約束

            相信大家已經(jīng)下意識(shí)的將綜合約束和綜合過(guò)程掛在一起了,沒(méi)錯(cuò),綜合約束確實(shí)是在綜合過(guò)程中做的,用來(lái)指導(dǎo)綜合過(guò)程,包括編譯和映射。我們已經(jīng)知道綜合過(guò)程是將RTL級(jí)電路描述轉(zhuǎn)換到FPGA上的硬件單元(LUT)中,形成以FPGA存在的硬件單元構(gòu)成的電路。

            我們還是拿前面有過(guò)的例子來(lái)說(shuō)明,不同的約束將導(dǎo)致生成性能不同的電路。綜合這么一個(gè)完成式***能的電路,沒(méi)有加資源共享得到的電路如圖8左邊所示的電路,而加了資源共享的約束后,得到的電路結(jié)構(gòu)如圖8右邊的電路。

            通過(guò)之前的分析,得到左邊的電路結(jié)構(gòu)資源消耗多但是速度快,而右邊的結(jié)構(gòu)消耗資源少,但是速度慢,乘法器需要分時(shí)復(fù)用。

            當(dāng)然這只是一個(gè)例子,但是足以說(shuō)明,不同的綜合指導(dǎo)原則也就是綜合約束,將會(huì)產(chǎn)生不同的電路。當(dāng)?shù)玫降碾娐沸阅懿荒軡M(mǎn)足需求的時(shí)候,適當(dāng)考慮綜合約束,來(lái)達(dá)到一個(gè)速度和面積的轉(zhuǎn)換的效果,實(shí)現(xiàn)性能的提升。電路實(shí)現(xiàn)的速度和消耗的面積是貫穿在FPGA開(kāi)發(fā)過(guò)程中兩個(gè) 矛盾的問(wèn)題,綜合約束是其中一種小范圍內(nèi)實(shí)現(xiàn)速度和面見(jiàn)平衡點(diǎn)移動(dòng)的方式。

            位置約束

            沒(méi)錯(cuò),你又想對(duì)了,位置約束和我們布局有關(guān)系,它就是指布局的策略。根據(jù)所選擇的FPGA平臺(tái)現(xiàn)有硬件資源分布來(lái)決定我們布局。

            其中最典型的位置約束就是I/O約束。一個(gè)典型的系統(tǒng)是既有輸入也有輸出的,而不管是輸入還是輸出,都是從I/O上為端點(diǎn)的。輸入從哪個(gè)端點(diǎn)進(jìn)來(lái),輸出從哪個(gè)端點(diǎn)出去,輸入是需要支持什么樣的電氣特性的端點(diǎn),輸出又是需要支持什么樣的電氣特定的端點(diǎn)。這些都是I/O約束做的事情。任何一個(gè)工程,都必須有這么一個(gè)約束。

            還有一種典型的位置約束是在增量編譯里涉及的物理界定。增量編譯的出現(xiàn)就是因?yàn)樵贔PGA開(kāi)發(fā)過(guò)程中綜合和布局布線(xiàn)的長(zhǎng)耗時(shí)性而提出的。思想就是把FPGA切成很多個(gè)小塊的FPGA,然后約定具體哪塊小FPGA放置什么模塊,實(shí)現(xiàn)什么樣的功能,從物理上進(jìn)行界定。當(dāng)修改工程后,開(kāi)發(fā)平臺(tái)就會(huì)檢測(cè)哪些小FPGA內(nèi)沒(méi)有進(jìn)行修改,哪些進(jìn)行了修改,然后將修改過(guò)的部分重新進(jìn)行綜合布局布線(xiàn)步驟。這樣一來(lái),相比原來(lái)修改一點(diǎn),全工程重新經(jīng)過(guò)那些過(guò)程來(lái)講,時(shí)間節(jié)省下來(lái)了。

            時(shí)序約束

            估計(jì)沒(méi)有多少懸念了,時(shí)序約束很大程度上和布線(xiàn)有關(guān)。為什么要做這個(gè)約束?

            由于一方面信號(hào)在芯片內(nèi)傳遞是需要消耗時(shí)間的,另一方面大量存在的寄存器有反應(yīng)時(shí)間,而我們開(kāi)發(fā)的最開(kāi)始的時(shí)候這些時(shí)間都是理想化的。但是考慮到真實(shí)情況下,如果跑的速度比較高,達(dá)到了200M這么個(gè)速度,當(dāng)然這個(gè)高速和具體的芯片有關(guān),高性能的芯片本身跑的速度可以達(dá)到很高,200M相對(duì)來(lái)說(shuō)就不是高速,對(duì)一些低性能芯片還可能達(dá)不到200M。這個(gè)時(shí)候,這些時(shí)間達(dá)到了同樣一個(gè)系統(tǒng)時(shí)間數(shù)量級(jí)的時(shí)候,很可能影響電路的性能了。某一刻,該來(lái)的信號(hào)沒(méi)有來(lái),默認(rèn)的話(huà)就會(huì)采集錯(cuò)誤信號(hào)了。

            為了讓這些硬件本身帶來(lái)的延時(shí)時(shí)間更理想化,我們就要對(duì)這些決定時(shí)間延時(shí)的因素優(yōu)化來(lái)減少時(shí)間延時(shí)。對(duì)于寄存器本身的反應(yīng)時(shí)間這個(gè)因素我們開(kāi)發(fā)者是無(wú)能為力的,我們要做的優(yōu)化就是布線(xiàn)了。是走直線(xiàn)還是走其他,不僅僅決定于自身這條路徑,還和整個(gè)系統(tǒng)布線(xiàn)有關(guān),好比水桶原理,系統(tǒng)性能決定于最差路徑延時(shí)。

            時(shí)序約束做的就是這些事情,但是時(shí)序約束并不是指具體去連接每一條線(xiàn),這個(gè)工作就像前面那些流程一樣都是由軟件去實(shí)現(xiàn)的,先用軟件自己默認(rèn)原則布線(xiàn),然后對(duì)其結(jié)果分析,不滿(mǎn)足時(shí)序要求的,我們?cè)賹?duì)具體的問(wèn)題路徑做一些指導(dǎo)約束。時(shí)序約束的添加,主要包括周期約束、輸入偏移約束和輸出偏移約束。具體的過(guò)程在后面章節(jié)介紹工具使用時(shí)會(huì)有具體動(dòng)手的指導(dǎo)。

            5.5 FPGA開(kāi)發(fā)仿真

            在經(jīng)過(guò)上面從設(shè)計(jì)輸入到綜合再到布局布線(xiàn)過(guò)程的介紹后,我們來(lái)集中探討一下,在這些過(guò)程中涉及到的相應(yīng)的仿真。

            仿真,字面上講就是模擬真實(shí)狀況。我們FPGA設(shè)計(jì)里面的仿真,就是模擬真實(shí)電路的狀況,查看電路是不是我們需要的電路。如果我們把FPGA開(kāi)發(fā)形成電路當(dāng)作一個(gè)產(chǎn)品的生產(chǎn)過(guò)程,那么在FPGA開(kāi)發(fā)流程中含有的三種仿真(RTL級(jí)仿真、靜態(tài)仿真和時(shí)序仿真)就好比產(chǎn)品線(xiàn)中的三道檢測(cè)站。如圖9,這三道工序任何一道出了問(wèn)題,修改設(shè)計(jì)后都得重新走這三道卡,所以盡量在把問(wèn)題發(fā)現(xiàn)在源頭。


            上一頁(yè) 1 2 下一頁(yè)

            關(guān)鍵詞: 測(cè)試

            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉