數(shù)據(jù)中心設(shè)備制造商長(zhǎng)期以來(lái)一直熱衷于利用FPGA可能實(shí)現(xiàn)的大規(guī)模并行性,以在高效的功率預(yù)算內(nèi)實(shí)現(xiàn)與需求保持同步所需的處理性能和I/O帶寬。然而,傳統(tǒng)上,在FPGA中實(shí)現(xiàn)硬件計(jì)算平臺(tái)一直是一項(xiàng)復(fù)雜的挑戰(zhàn),需要設(shè)計(jì)人員處理一些最低級(jí)別的硬件實(shí)現(xiàn)。
盡管一些最新的FPGA設(shè)計(jì)方法結(jié)合了高級(jí)綜合(HLS)工具和軟件編程語(yǔ)言(如OpenCL,C和C ++)簡(jiǎn)化了任務(wù),并沒(méi)有消除對(duì)專(zhuān)業(yè)FPGA設(shè)計(jì)專(zhuān)業(yè)知識(shí)的需求。需要一種高級(jí)工作流程,允許軟件工程師將FPGA用作軟件定義的計(jì)算平臺(tái),而無(wú)需硬件設(shè)計(jì)的痛苦。為滿(mǎn)足這一需求,此類(lèi)工作流應(yīng)該能夠:
從純軟件代碼創(chuàng)建功能硬件
合并現(xiàn)有硬件IP塊,如果
推斷并創(chuàng)建所有支持硬件(接口,控制,時(shí)鐘等)。
支持使用商用,現(xiàn)成的電路板和自定義平臺(tái)
通過(guò)構(gòu)造確保生成的硬件正確,從而消除硬件調(diào)試
僅支持使用標(biāo)準(zhǔn)軟件調(diào)試工具調(diào)試功能塊
考慮一個(gè)包含兩個(gè)基本功能的軟件算法:將數(shù)據(jù)處理成一個(gè)函數(shù),然后發(fā)送到另一個(gè)函數(shù)進(jìn)行進(jìn)一步處理。從軟件的角度來(lái)看,這個(gè)實(shí)現(xiàn)就像調(diào)用Function1(),然后單獨(dú)調(diào)用Function2()一樣簡(jiǎn)單,使用指向要處理的數(shù)據(jù)位置的指針。
圖1對(duì)數(shù)據(jù)執(zhí)行的功能
實(shí)施此類(lèi)在沒(méi)有正確的硬件抽象工具流程的基于FPGA的硬件平臺(tái)上的算法將要求軟件開(kāi)發(fā)人員提出類(lèi)似于圖2中的硬件設(shè)計(jì)(其中內(nèi)核1和內(nèi)核2各自相應(yīng))功能1和功能2的硬件實(shí)現(xiàn)。
圖2使用雙功能算法的詳細(xì)硬件實(shí)現(xiàn)傳統(tǒng)的FPGA工具
硬件設(shè)計(jì)需要包括控制平面和數(shù)據(jù)平面??刂破矫媸菆?zhí)行引擎,它生成時(shí)鐘和重置,管理系統(tǒng)啟動(dòng),編排數(shù)據(jù)平面操作,并執(zhí)行所有內(nèi)務(wù)處理功能。數(shù)據(jù)平面實(shí)例化并連接處理元素,內(nèi)核1和內(nèi)核2,以及讀取數(shù)據(jù)和寫(xiě)入處理數(shù)據(jù)所需的必要I/O接口。在圖2中所示的示例中,這些接口是以太網(wǎng)和PCI Express(PCIe)。
熟悉的挑戰(zhàn)
沒(méi)有特定硬件專(zhuān)業(yè)知識(shí)的軟件開(kāi)發(fā)人員可以使用高級(jí)綜合工具(如 Vivado HLS )生成內(nèi)核1和內(nèi)核2,以編譯軟件函數(shù)Function1()和Function2( )用C或C ++編寫(xiě)的VHDL或Verilog的FPGA硬件描述。但是,使用HLS工具無(wú)法生成設(shè)計(jì)的非算法元素,如接口,控制,時(shí)鐘和復(fù)位。需要硬件設(shè)計(jì)人員將其創(chuàng)建為自定義IP。獲取這些元素并連接它們的工作帶來(lái)了另一個(gè)挑戰(zhàn),因?yàn)槟承┰乜赡懿蝗菀撰@得,或者可能具有不同類(lèi)型或大小的接口以及不同的時(shí)鐘要求,特定的啟動(dòng)順序等等。
實(shí)施設(shè)計(jì)同樣面臨嚴(yán)峻挑戰(zhàn)。這些包括將設(shè)計(jì)映射到所選FPGA平臺(tái)的資源,生成適當(dāng)?shù)募s束,并確認(rèn)在FPGA硬件上進(jìn)行邏輯綜合和實(shí)現(xiàn)后滿(mǎn)足這些約束。即使是經(jīng)驗(yàn)豐富的硬件設(shè)計(jì)人員也可能需要數(shù)周才能在新的FPGA硬件上實(shí)現(xiàn)最簡(jiǎn)單的設(shè)計(jì)。
新方法
PLDA集團(tuán)是嵌入式電子系統(tǒng)和IP的開(kāi)發(fā)商,它創(chuàng)建了QuickPlay,允許軟件開(kāi)發(fā)人員完成這些任務(wù),從而在FPGA硬件上部分或全部實(shí)現(xiàn)CPU的應(yīng)用程序。在這種以軟件為中心的方法中,設(shè)計(jì)人員首先開(kāi)發(fā)硬件引擎的C/C ++功能模型,然后使用標(biāo)準(zhǔn)C/C ++調(diào)試工具驗(yàn)證功能模型。然后指定目標(biāo)FPGA平臺(tái)和I/O接口(PCIe,以太網(wǎng),DDR,QDR等),最后編譯和構(gòu)建硬件引擎。
為了使這個(gè)過(guò)程無(wú)縫工作,必須保證生成的硬件引擎與原始軟件模型的功能相同。這意味著模型必須是確定性的,因此它將產(chǎn)生與硬件相同的結(jié)果,無(wú)論硬件實(shí)現(xiàn)運(yùn)行得多快。不幸的是,大多數(shù)并行系統(tǒng)遭受不確定性執(zhí)行。例如,多線(xiàn)程軟件執(zhí)行取決于CPU,OS,以及在同一主機(jī)上運(yùn)行的非相關(guān)進(jìn)程。多次運(yùn)行相同的多線(xiàn)程程序可能會(huì)有不同的行為。
硬件中的這種非確定性需要在電子波形級(jí)別調(diào)試硬件引擎本身。這將破壞針對(duì)軟件開(kāi)發(fā)人員的工具的目的,但QuickPlay的數(shù)據(jù)流模型保證了確定性執(zhí)行,而不管執(zhí)行引擎如何。該模型由并發(fā)功能組成,稱(chēng)為內(nèi)核,與流通道通信,這與軟件開(kāi)發(fā)人員如何在白板上繪制應(yīng)用程序相關(guān)聯(lián)。任何內(nèi)核的內(nèi)容都可以是任意的C/C ++代碼,第三方IP,甚至是HDL代碼。
QuickPlay設(shè)計(jì)流程非常簡(jiǎn)單,如圖3所示。
圖3QuickPlay編譯和執(zhí)行流程
仔細(xì)研究設(shè)計(jì)流程
第1階段:純軟件設(shè)計(jì)。 FPGA設(shè)計(jì)是通過(guò)在C中添加和連接內(nèi)核,并使用開(kāi)發(fā)軟件指定通信通道來(lái)創(chuàng)建的。 QuickPlay IDE提供了一個(gè)C/C ++庫(kù)和API來(lái)創(chuàng)建內(nèi)核,流,流端口和內(nèi)存端口,以及讀取和寫(xiě)入流端口和內(nèi)存端口。
第2階段:功能驗(yàn)證確保軟件模型正常工作。該模型在桌面上編譯并使用測(cè)試程序執(zhí)行,該測(cè)試程序?qū)?shù)據(jù)發(fā)送到輸入,從而驗(yàn)證輸出的正確性。
階段3:然后從軟件模型生成FPGA硬件。在此階段,使用簡(jiǎn)單的下拉菜單選擇目標(biāo)FPGA平臺(tái)和映射到設(shè)計(jì)輸入和輸出端口的物理接口。
階段4:系統(tǒng)執(zhí)行類(lèi)似于功能驗(yàn)證,除了FPGA設(shè)計(jì)在選定的FPGA板上運(yùn)行,而主機(jī)應(yīng)用程序仍在軟件中運(yùn)行。實(shí)際數(shù)據(jù)可以流入和流出FPGA板。在此階段可以運(yùn)行比在功能驗(yàn)證期間更多的測(cè)試。
階段5:系統(tǒng)調(diào)試。即使在硬件中執(zhí)行功能后發(fā)現(xiàn)錯(cuò)誤,也無(wú)需在硬件級(jí)別進(jìn)行調(diào)試,因?yàn)镼uickPlay可確保軟件模型與硬件實(shí)現(xiàn)之間的功能等效。軟件版本中也存在硬件版本中的任何錯(cuò)誤。
階段6 :(可選)優(yōu)化。雖然QuickPlay構(gòu)建的整個(gè)基礎(chǔ)架構(gòu)在性能和利用率方面都非常高效,但設(shè)計(jì)的整體質(zhì)量將取決于用戶(hù)創(chuàng)建的內(nèi)核的質(zhì)量。由于通用C代碼不會(huì)產(chǎn)生最有效的硬件實(shí)現(xiàn),因此軟件開(kāi)發(fā)人員可以遵循一些技術(shù)和指南來(lái)大大提高HLS生成代碼的效率。進(jìn)一步優(yōu)化也可以通過(guò)使用Vivado HLS或在HDL中重新編碼某些內(nèi)核來(lái)完成。
摘要
這種簡(jiǎn)單的方法為大量軟件工程師開(kāi)放了基于FPGA的計(jì)算,他們現(xiàn)在可以使用熟悉的技術(shù)在軟件中進(jìn)行建模,然后構(gòu)建系統(tǒng)和硬件測(cè)試。目前還沒(méi)有其他工具采用這種方法,也沒(méi)有提供軟件工程師可以在源級(jí)別專(zhuān)門(mén)設(shè)計(jì)和調(diào)試的框架。
生成的硬件效率也使QuickPlay成為硬件工程師尋找的好工具通過(guò)讓QuickPlay處理平凡的硬件設(shè)計(jì)任務(wù)來(lái)節(jié)省數(shù)周或數(shù)月的設(shè)計(jì)工作,同時(shí)他們專(zhuān)注于真正的增值:處理內(nèi)核。
QuickPlay的數(shù)據(jù)流計(jì)算模型使其成為理想的選擇大量的FPGA應(yīng)用,無(wú)論是純CPU協(xié)同處理,CPU采集數(shù)據(jù)的預(yù)處理還是后處理,還是僅涉及不涉及CPU的系統(tǒng)(網(wǎng)絡(luò),廣播,視覺(jué),醫(yī)療等應(yīng)用)無(wú)線(xiàn),HPC等。)
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618570 -
PCB打樣
+關(guān)注
關(guān)注
17文章
2977瀏覽量
22578 -
華強(qiáng)PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
28609 -
華強(qiáng)pcb線(xiàn)路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
43929
發(fā)布評(píng)論請(qǐng)先 登錄
基于直方圖算法進(jìn)行FPGA架構(gòu)設(shè)計(jì)
如何使用Verilog HDL進(jìn)行FPGA設(shè)計(jì)
FPGA 門(mén)數(shù)計(jì)算方法
FPGA 是如何分類(lèi)的?FPGA的使用方法
基于FPGA的軟件定義無(wú)線(xiàn)電參考設(shè)計(jì)
對(duì)FPGA進(jìn)行系統(tǒng)設(shè)計(jì)的Xilinx軟件使用方法
FPGA 開(kāi)發(fā)經(jīng)驗(yàn)與技巧—ORCAD 與 FPGA 軟件協(xié)同設(shè)計(jì)
QuickPlay迅速構(gòu)建基于 FPGA 的高效應(yīng)用
基于軟件測(cè)試技術(shù)的FPGA測(cè)試研究[圖]
FPGA_ASIC-DSP和FPGA共用FLASH進(jìn)行配置的方法

來(lái)自Digilent設(shè)計(jì)大賽的FPGA上的軟件定義無(wú)線(xiàn)電

使用Zynq平臺(tái)進(jìn)行嵌入式軟件和FPGA設(shè)計(jì)時(shí)有哪些挑戰(zhàn)
為什么對(duì)FPGA軟件進(jìn)行測(cè)評(píng)?
fpga軟件是什么意思
FPGA門(mén)數(shù)的計(jì)算方法

評(píng)論