需要注意的是,根據(jù)FPGA器件和用戶(hù)的要求,額外的可編程邏輯功能和外圍通信功能(例如USB、MIPI、I2C、SPI、CAN和UART)可以通過(guò)硬核和/或軟核實(shí)現(xiàn)。文章篇幅有限此處不作贅述。
使用軟核CPU有諸多優(yōu)點(diǎn),包括能夠配置處理器的操作及許多可選功能,如動(dòng)態(tài)內(nèi)存訪問(wèn)(DMA)控制器,從而對(duì)其精確調(diào)整,高效地滿(mǎn)足目標(biāo)應(yīng)用的要求。此外,如有需要,可以配置可編程結(jié)構(gòu)實(shí)現(xiàn)其他外設(shè)IP功能。如在人工智能應(yīng)用中,可以使用可編程邏輯資源來(lái)創(chuàng)建簡(jiǎn)單的人工神經(jīng)網(wǎng)絡(luò),用于推理之類(lèi)的任務(wù)。
RISC-V
如前所述,RISC-V是基于已有的精簡(jiǎn)指令集計(jì)算機(jī)(RISC)原則的開(kāi)源指令集架構(gòu),可通過(guò)開(kāi)源許可獲得。此外,許多公司目前提供支持RISC-V的RISC-V硬核或開(kāi)源操作系統(tǒng),并且?guī)追N主流的軟件工具鏈均支持該指令集。
RISC-V的模塊化設(shè)計(jì)包括基礎(chǔ)指令集和其他的擴(kuò)展指令集。在行業(yè)、技術(shù)界和教育機(jī)構(gòu)的共同努力下,兩者已得到長(zhǎng)足的發(fā)展?;A(chǔ)指令集規(guī)定了指令(及其編碼)、控制流、寄存器(及其大小)、存儲(chǔ)器和尋址、邏輯(即整數(shù))操作以及輔助功能。僅基礎(chǔ)指令集就能實(shí)現(xiàn)具有全面軟件支持(包括通用編譯器)的通用計(jì)算機(jī)。
還可以通過(guò)可選拓展指令集實(shí)現(xiàn)額外功能,從而讓設(shè)計(jì)人員靈活選擇其應(yīng)用所需的功能。RISC-V定義了許多擴(kuò)展指令集,包括A(原子)、F(單精度浮點(diǎn))、D(雙精度浮點(diǎn))、Q(四精度浮點(diǎn))和C(壓縮的16位指令以減少代碼尺寸,用于存儲(chǔ)空間有限的系統(tǒng))。上述指令集均可靈活選擇。
圖2. 萊迪思是首個(gè)支持RISC-V的基于閃存和SRAM的FPGA供應(yīng)商。
與作為專(zhuān)用處理器的硬核實(shí)現(xiàn)相比,基于FPGA的軟核RISC-V擁有的巨大優(yōu)勢(shì)在于FPGA可重新配置的巨大潛力能夠滿(mǎn)足各種擴(kuò)展需求。
萊迪思RISC-V軟核IP套件擁有32位RISC-V處理器核以及可選的定時(shí)器和可編程中斷控制器(PIC)子模塊。該CPU核支持RV32I指令集、外部中斷和符合JTAG IEEE 1149.1規(guī)范的調(diào)試。
定時(shí)器子模塊是一個(gè)64位實(shí)時(shí)計(jì)數(shù)器,它將實(shí)時(shí)寄存器與另一個(gè)寄存器進(jìn)行比較以觸發(fā)定時(shí)器中斷。PIC子模塊最多將八個(gè)外部中斷輸入聚合為一個(gè)外部中斷。處理器核通過(guò)使用行業(yè)標(biāo)準(zhǔn)的32位AHB-L總線(xiàn)接口訪問(wèn)子模塊寄存器。
萊迪思Propel
許多嵌入式系統(tǒng)的設(shè)計(jì)人員都對(duì)使用FPGA很感興趣,但是一想到要使用傳統(tǒng)的FPGA設(shè)計(jì)工具和HDL就望而卻步。為了解決這一問(wèn)題,萊迪思Propel采用了基于圖形用戶(hù)界面(GUI)的設(shè)計(jì)環(huán)境,任何用戶(hù)(無(wú)論是否具有FPGA專(zhuān)業(yè)知識(shí))都能使用其拖放的設(shè)計(jì)方式快速構(gòu)建和配置基于RISC-V處理器的設(shè)計(jì)。
Propel輸出的是使用Verilog HDL語(yǔ)言的RTL文件,可以將其發(fā)送到綜合引擎,生成可載入FPGA的配置文件。該配置文件可用于萊迪思CrossLink™-NX(面向嵌入式視覺(jué)應(yīng)用)、Certus™-NX(通用FPGA)以及MachXO3D™和Mach™-NX FPGA(安全系統(tǒng)控制)系列產(chǎn)品。FPGA配置完成后,軟件開(kāi)發(fā)人員可以在基于FPGA的RISC-V設(shè)計(jì)實(shí)現(xiàn)上運(yùn)行他們的RISC-V可執(zhí)行文件,正如在其他任何RISC-V處理器上運(yùn)行一樣。
Lattice Propel由兩個(gè)部分組成。首先是Propel Builder,它提供圖形化的拖放界面,讓用戶(hù)選擇IP模塊并將其連接在一起。這些IP模塊包括RISC-V處理器(帶有可選的定時(shí)器和中斷控制器)、AMBA總線(xiàn)結(jié)構(gòu)、接口、存儲(chǔ)器、輸入/輸出(I/O)等。用戶(hù)還可以方便地在線(xiàn)升級(jí)現(xiàn)有IP模塊和獲得新的IP模塊。
圖3.Propel界面直觀、易于使用、功能強(qiáng)大。
除了拖放IP實(shí)例化,Propel Builder還能自動(dòng)進(jìn)行引腳連接,通過(guò)向?qū)渲煤驮O(shè)置參數(shù)以及采用按構(gòu)造逐步校正進(jìn)行IP集成。
其次是萊迪思Propel SDK(軟件開(kāi)發(fā)套件),可提供無(wú)縫的軟件開(kāi)發(fā)環(huán)境。它擁有行業(yè)標(biāo)準(zhǔn)的集成開(kāi)發(fā)環(huán)境(IDE)和工具鏈。SDK還為Propel Builder定義的系統(tǒng)提供軟件/硬件調(diào)試功能以及軟件庫(kù)和板級(jí)支持包(BSP)。
需要注意的重要一點(diǎn)是,Propel可以很好地對(duì)接下游工具,并且它也是一個(gè)獨(dú)立的程序,且其大小僅為0.5 GB,可以快速輕松地下載和安裝。同樣令人感興趣的是,Propel的所有命令都可以用Tcl編寫(xiě),從而提高了設(shè)計(jì)效率并將其快速集成到用戶(hù)自己的設(shè)計(jì)環(huán)境中。
圖4. 無(wú)論是簡(jiǎn)單的“Hello World”應(yīng)用還是復(fù)雜的嵌入式控制和數(shù)據(jù)處理系統(tǒng),Propel都能讓用戶(hù)快速完成設(shè)計(jì)
對(duì)于硬件設(shè)計(jì),Propel是那些需要FPGA優(yōu)勢(shì)但缺乏FPGA硬件設(shè)計(jì)經(jīng)驗(yàn)的團(tuán)隊(duì)的理想選擇。此外,如果團(tuán)隊(duì)成員確實(shí)具有FPGA設(shè)計(jì)經(jīng)驗(yàn),那么他們還可以根據(jù)需要對(duì)設(shè)計(jì)做更為精確的控制。對(duì)于軟件設(shè)計(jì),Propel提供行業(yè)標(biāo)準(zhǔn)的C/C ++開(kāi)發(fā)環(huán)境。軟件開(kāi)發(fā)人員似乎更多地使用現(xiàn)成的微控制器。
設(shè)計(jì)人員可以使用Propel在CrossLink-NX、Certus-NX和Mach-NX FPGA中快速輕松地生成基于RISC-V軟軟核的處理器系統(tǒng),從而提供復(fù)雜的視頻處理、系統(tǒng)控制和系統(tǒng)安全功能,其延遲遠(yuǎn)遠(yuǎn)低于通過(guò)外部獨(dú)立處理器實(shí)現(xiàn)的設(shè)計(jì)。
總結(jié)
除了擁有以低功耗執(zhí)行高性能數(shù)據(jù)處理任務(wù)的邏輯功能和硬件加速器外,F(xiàn)PGA內(nèi)部的可編程架構(gòu)還可用于實(shí)現(xiàn)一個(gè)或多個(gè)更適合決策任務(wù)的軟核處理器,以及用于諸如硬件加速器之類(lèi)的控制功能,包括向它們提供數(shù)據(jù)并根據(jù)結(jié)果采取措施。
RISC-V就是這樣一種處理器,它是一種開(kāi)源指令集架構(gòu)(ISA),可以通過(guò)開(kāi)源許可免費(fèi)獲得。萊迪思是首個(gè)支持RISC-V以及為其FPGA客戶(hù)免費(fèi)提供RISC-V IP核的基于閃存和SRAM的FPGA供應(yīng)商。
對(duì)于想要使用這種處理器的非FPGA設(shè)計(jì)人員而言,問(wèn)題在于他們?nèi)狈τ嘘P(guān)FPGA設(shè)計(jì)語(yǔ)言、工具和流程的專(zhuān)業(yè)知識(shí)。為了解決這個(gè)問(wèn)題,萊迪思提供了Propel來(lái)簡(jiǎn)化設(shè)計(jì)流程,讓開(kāi)發(fā)人員能夠快速設(shè)計(jì)基于RISC-V處理器的系統(tǒng)。