自1985年首款FPGA誕生以來(lái),F(xiàn)PGA已經(jīng)是一名在電子信息領(lǐng)域征戰(zhàn)了30年的老兵,這名戰(zhàn)功赫赫的老兵如今已經(jīng)正式開(kāi)赴了一個(gè)新的戰(zhàn)場(chǎng)。但是FPGA并不是萬(wàn)能的。相對(duì)于串行結(jié)構(gòu)處理器,其設(shè)計(jì)的靈活性是以工作量的增加為代價(jià)的。FPGA與ARM、DSP(如下圖所示)的比較如下。
一、從語(yǔ)言本身的差異來(lái)看,基于Verilog HDL和VHDL的硬件語(yǔ)言與C/C++相比,在代碼靈活性、開(kāi)發(fā)效率等方面還有較大差距。通常一段十幾行的C語(yǔ)言代碼使用硬件語(yǔ)言實(shí)現(xiàn)后,代碼量會(huì)增加到幾十行之多。同時(shí),在進(jìn)行硬件語(yǔ)言描述時(shí),一個(gè)合格的FPGA工程師不僅要實(shí)現(xiàn)相應(yīng)的邏輯功能,還要在頭腦里浮現(xiàn)編寫(xiě)的代碼所生成的邏輯結(jié)構(gòu),并考慮到門延時(shí)對(duì)系統(tǒng)時(shí)序的影響。這樣才能夠設(shè)計(jì)出穩(wěn)定高效的邏輯結(jié)構(gòu),減少后期時(shí)序調(diào)整的工作。
二、從語(yǔ)言本身的差異來(lái)看,基于Verilog HDL和VHDL的硬件語(yǔ)言與C/C++相比,在代碼靈活性、開(kāi)發(fā)效率等方面還有較大差距。通常一段十幾行的C語(yǔ)言代碼使用硬件語(yǔ)言實(shí)現(xiàn)后,代碼量會(huì)增加到幾十行之多。同時(shí),在進(jìn)行硬件語(yǔ)言描述時(shí),一個(gè)合格的FPGA工程師不僅要實(shí)現(xiàn)相應(yīng)的邏輯功能,還要在頭腦里浮現(xiàn)編寫(xiě)的代碼所生成的邏輯結(jié)構(gòu),并考慮到門延時(shí)對(duì)系統(tǒng)時(shí)序的影響。這樣才能夠設(shè)計(jì)出穩(wěn)定高效的邏輯結(jié)構(gòu),減少后期時(shí)序調(diào)整的工作。
三、從工作頻率來(lái)看,ARM、DSP等處理器采用的是成熟的內(nèi)核結(jié)構(gòu),具有較好的時(shí)序特性,其最高頻率通常為600MHz~1.25GHz。為提高處理能力,TI等芯片廠商采用多核的設(shè)計(jì)方式,設(shè)計(jì)了具有8核DSP、8核ARM的處理器,每個(gè)核心的最大工作頻率可 達(dá)1.25GHz,通過(guò)設(shè)置可以開(kāi)啟和關(guān)閉其中的內(nèi)核來(lái)靈活地協(xié)調(diào)功耗與處理能力之間的矛盾。目前TI公司正在設(shè)計(jì)具有8核ARM+8核DSP的處理器,來(lái)滿足高速系統(tǒng)中集中運(yùn)算的需求。而在FPGA的設(shè)計(jì)中,不同的系統(tǒng)具有不同的最高工作頻率,該頻率可以在編譯報(bào)告中獲得。對(duì)于Altera公司的FPGA,通過(guò)TimeQuest工具調(diào)整時(shí)序,可以提升設(shè)計(jì)工程的最高頻率。一個(gè)具有良好設(shè)計(jì)的FPGA工程的最高頻率可達(dá)150MHz以上。
四、從執(zhí)行方式來(lái)看,基于嵌入式平臺(tái)的C/C++語(yǔ)言在已有的硬件結(jié)構(gòu)中執(zhí)行,只需正確配置相關(guān)寄存器即可。而使用硬件語(yǔ)言的設(shè)計(jì)需自行設(shè)計(jì)硬件結(jié)構(gòu),在生成結(jié)構(gòu)前還要經(jīng)過(guò)前仿真、綜合、布局布線、后仿真等步驟,開(kāi)發(fā)周期較長(zhǎng)。這一情況在較為復(fù)雜的FPGA工程設(shè)計(jì)中尤為嚴(yán)重。例如,一個(gè)添加了4個(gè)DDR2的IP的工程在i5處理器、4G內(nèi)存的計(jì)算機(jī)上,編譯時(shí)間甚至在20min以上。
五、從算法應(yīng)用來(lái)看,ARM、DSP等處理器中集成了加法器、乘法器等運(yùn)算單元,尤其是在DSP中,可以在一個(gè)周期內(nèi)進(jìn)行8×8位甚至16×16位的乘法運(yùn)算。同時(shí),這些處理器還支持浮點(diǎn)運(yùn)算能力。而FPGA對(duì)這部分運(yùn)算并不擅長(zhǎng),即使在較為簡(jiǎn)單的加法運(yùn)算中,若進(jìn)行加法的兩個(gè)數(shù)據(jù)具有較高的位寬,由于傳統(tǒng)的加法中的進(jìn)位方式是串行結(jié)構(gòu),所以在其生成的結(jié)構(gòu)中會(huì)產(chǎn)生較長(zhǎng)的門延時(shí),從而會(huì)降低時(shí)序的余量,甚至?xí)档拖到y(tǒng)編譯后的最高工作頻率。
六、從算法設(shè)計(jì)來(lái)看,在ARM、DSP等處理器中設(shè)計(jì)算法前,需要提前構(gòu)思算法的流程圖,然后進(jìn)行代碼的編寫(xiě)。而在FPGA設(shè)計(jì)中,主要包含三種設(shè)計(jì)方式:面向狀態(tài)的設(shè)計(jì),面向活動(dòng)的設(shè)計(jì)和面向結(jié)構(gòu)的設(shè)計(jì)。
(1)面向狀態(tài)的設(shè)計(jì)是以狀態(tài)機(jī)為代表的設(shè)計(jì)方式,即通過(guò)控制信號(hào)和時(shí)序信號(hào)觸發(fā)狀態(tài)機(jī)進(jìn)行狀態(tài)的遷移。狀態(tài)機(jī)的設(shè)計(jì)是FPGA開(kāi)發(fā)中必不可少的環(huán)節(jié),這部分內(nèi)容將 在7.2.2節(jié)中詳細(xì)敘述。
(2)面向活動(dòng)的設(shè)計(jì)是以數(shù)據(jù)流和流程圖為代表的設(shè)計(jì)方式。尤其是在傳輸系統(tǒng)、實(shí)時(shí)算法設(shè)計(jì)中,常使用基于數(shù)據(jù)流的設(shè)計(jì)方式。常見(jiàn)的數(shù)據(jù)流的操作方式包括數(shù)據(jù)的寄存器同步緩沖、數(shù)據(jù)傳遞、數(shù)據(jù)運(yùn)算與流水設(shè)計(jì)、數(shù)據(jù)的存取等。
(3)面向結(jié)構(gòu)的設(shè)計(jì)常用于較大的系統(tǒng)設(shè)計(jì)中,用于描述模塊與模塊、單元與單元之間的互聯(lián)關(guān)系,主要包括數(shù)據(jù)信號(hào)與控制信號(hào)。根據(jù)不同的層次描述,主要可以分為系統(tǒng)級(jí)結(jié)構(gòu)描述、寄存器級(jí)結(jié)構(gòu)描述、門級(jí)結(jié)構(gòu)描述等。
為了解決這些硬件工程師所面臨的問(wèn)題,Altera Xilinx等FPGA公司不遺余力地對(duì)開(kāi)發(fā)平臺(tái)進(jìn)行了完善,如下以Altera的解決方案為例。
對(duì)于第一點(diǎn)提及的設(shè)計(jì)語(yǔ)言的問(wèn)題,Altera推出了Qsys(SOPC)等片上軟核,使工程師在FPGA中同樣可以使用更為靈活的C語(yǔ)言進(jìn)行編程。Qsys(SOPC)中包含了片內(nèi)、片外存儲(chǔ)器、定時(shí)器及各種接口等IP,使工程師可以按需定制自己的片內(nèi)處理器。使用這種方式,在一定程度上緩解了硬件描述語(yǔ)言開(kāi)發(fā)周期過(guò)長(zhǎng)的缺點(diǎn),也成為一種對(duì)FPGA系統(tǒng)進(jìn)行前期功能驗(yàn)證的有效手段。
對(duì)于第二點(diǎn)提及的通用模塊或接口占用開(kāi)發(fā)周期的問(wèn)題,Altera和供應(yīng)商設(shè)計(jì)了大量具有知識(shí)產(chǎn)權(quán)的IP(Intellectual Property,知識(shí)產(chǎn)權(quán)),包括運(yùn)算類、通信類、數(shù)字信號(hào)處理類、門類、輸入/輸出類、接口類、JTAG擴(kuò)展類、存儲(chǔ)類等多種類別。這些IP是經(jīng)過(guò)嚴(yán)格測(cè)試和優(yōu)化過(guò)的,其中部分IP免費(fèi),上面提到的SOPC中應(yīng)用的大部分IP都是免費(fèi)的。
值得注意的是,盡管大部分基本功能的IP可以在不同系列的FPGA間通用,依然有一些IP并不支持所有系列的FPGA,使用這些IP在不同系列的FPGA間進(jìn)行工程移植時(shí)需要注意。所使用的IP是否支持當(dāng)前芯片,可以在Quartus II的MegWizard管理器中查閱,也可以在官網(wǎng)中查閱。Altera支持的所有IP及其適用系列可參考以下網(wǎng)址:http://www. altera.com.cn/products/ip/ip-index.jsp。
對(duì)于第三點(diǎn)提到的工作頻率的問(wèn)題,不同的處理器具有不同的應(yīng)用領(lǐng)域。在高速數(shù)據(jù)處理過(guò)程中,ARM、DSP等固然可達(dá)到較高的工作頻率,然而相對(duì)于FPGA,其高速的優(yōu)勢(shì)僅體現(xiàn)在串行結(jié)構(gòu)的算法中。在FPGA的設(shè)計(jì)中,可利用其硬件設(shè)計(jì)的靈活性,采用并行算法或?qū)⒋兴惴ǜ脑鞛椴⑿兴惴?,然后在FPGA中實(shí)現(xiàn)。經(jīng)測(cè)試,在工作頻率為1GHz的DSP中(TMS320C6416),對(duì)SDRAM中分辨率為2048×2048的圖像進(jìn)行中值濾波后重新寫(xiě)入SDRAM,耗時(shí)為7s;而在FPGA中,完全可以在圖像輸入時(shí)進(jìn)行實(shí)時(shí)處理,僅消耗幾個(gè)時(shí)鐘周期的處理,近似可認(rèn)為0延時(shí)—實(shí)時(shí)。
對(duì)于第四點(diǎn)提及的編譯時(shí)間過(guò)長(zhǎng)的問(wèn)題,Altera致力于開(kāi)發(fā)新版本的平臺(tái),提升編譯效率的同時(shí),增加了增量編譯的功能。配合區(qū)域鎖定,可以鎖定已編譯過(guò)且在后續(xù)修改中沒(méi)有改動(dòng)過(guò)的模塊,對(duì)這部分模塊不進(jìn)行重新編譯,從而可減少編譯時(shí)間。
對(duì)于第五點(diǎn)提及的運(yùn)算能力的問(wèn)題,Altera FPGA中內(nèi)嵌了多個(gè)DSP塊。每個(gè)DSP塊中包含加法器和乘法器結(jié)構(gòu),根據(jù)系列不同,具有不同的數(shù)據(jù)位寬。多個(gè)DSP塊中的加法器和乘法器可以互相拼接,從而支持更高位寬的運(yùn)算。結(jié)合相關(guān)的運(yùn)算類IP,可以流水線的形式完成運(yùn)算,每個(gè)周期輸出一次計(jì)算結(jié)果。表1.10為Cyclone III系列FPGA的資源列表??梢钥吹剑cDSP相比,Cyclone III的乘法器資源還是比較豐富的,這使得在FPGA內(nèi)部進(jìn)行并行運(yùn)算成為可能。
最后,Altera又推出了嵌入了雙核28nm的ARM Cortex-A9的FPGA,同時(shí)以足夠的DSP塊和足夠的乘法器資源,完善了FPGA+DSP+ARM架構(gòu),并以單片SoC FPGA的模式,解決了過(guò)往FPGA力所不能及的缺陷,解決了未來(lái)多IC集成的前瞻性問(wèn)題,如圖1.28所示。而這卻僅僅只是一個(gè)開(kāi)始,在未來(lái)Altera FPGA的發(fā)展中,更多的以實(shí)現(xiàn)FPGA+DSP+ARM為架構(gòu),并行實(shí)現(xiàn)高速運(yùn)算,解決過(guò)去的難題,不斷地突破極限。在未來(lái)的數(shù)字系統(tǒng)設(shè)計(jì)中,這必然是一種趨勢(shì)。
-
FPGA
+關(guān)注
關(guān)注
1625文章
21638瀏覽量
601353 -
時(shí)序
+關(guān)注
關(guān)注
5文章
384瀏覽量
37253
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論