FPGA的世界里,"核"如同心臟,驅(qū)動著數(shù)字系統(tǒng)的運(yùn)作,它涵蓋了內(nèi)存調(diào)度、中斷管理等關(guān)鍵功能,由邏輯門與觸發(fā)器交織而成。IP核,即知識產(chǎn)權(quán)豐富的可重用模塊,有著三種形態(tài):軟核、硬核與固核,各自承載著獨(dú)特的特性與應(yīng)用場景。
軟核,如同靈活的建筑師,以其制程技術(shù)獨(dú)立性著稱,能夠在不同工藝環(huán)境下無縫移植。然而,這種靈活性伴隨著設(shè)計(jì)風(fēng)險,它在編譯時提供了高度的客制化選項(xiàng),如自定義高速緩存和指令集,從而節(jié)省空間和功耗。盡管如此,軟核對特定技術(shù)的適應(yīng)性可能不如硬核,優(yōu)化的彈性稍勝一籌。
硬核,如同經(jīng)過嚴(yán)格驗(yàn)證的工業(yè)標(biāo)準(zhǔn),性能和功耗表現(xiàn)卓越,但其全客制化的設(shè)計(jì)方式使它在新制程下移植困難。硬核移植過程中,需要大量的時間和成本投入,這可能導(dǎo)致原始制程優(yōu)化的效益流失。雖然缺乏靈活性,硬核提供了預(yù)布局網(wǎng)表,預(yù)見性更強(qiáng),但對知識產(chǎn)權(quán)保護(hù)較為有利,移植性較差。
而固核,介于軟核與硬核之間,是一種特殊形式的IP。它通常源于軟核,但通過加密形式保護(hù),并針對特定應(yīng)用進(jìn)行了預(yù)布線以滿足嚴(yán)格的時序要求。固核的固定特性對整體設(shè)計(jì)有著決定性影響,既保留了軟核的調(diào)整空間,又具備了硬核的穩(wěn)定性。
FPGA IP世界中,每種核都扮演著不可或缺的角色,開發(fā)者需根據(jù)項(xiàng)目需求,權(quán)衡靈活性、性能和知識產(chǎn)權(quán)保護(hù),來選擇最合適的核作為設(shè)計(jì)的核心驅(qū)動力。軟核的可定制性和廣泛適應(yīng)性,硬核的穩(wěn)定性能,以及固核的特殊優(yōu)化,共同構(gòu)建出FPGA技術(shù)的豐富多彩。
軟核處理器
SOPC技術(shù),即軟核處理器,最早是由Altera公司提出來的,它是基于FPGA的SOC片上系統(tǒng)設(shè)計(jì)技術(shù)。是使用FPGA的邏輯和資源搭建的一個 軟核CPU系統(tǒng),由于是使用FPGA的通用邏輯搭建的CPU,因此具有一定的靈活性,用戶可以根據(jù)自己的需求對CPU進(jìn)行定制裁剪,增加一些專用功能,例如除法或浮點(diǎn)運(yùn)算單元,用于提升CPU在某些專用運(yùn)算方面的性能,或者刪除一些在系統(tǒng)里面使用不到的功能,以節(jié)約邏輯資源。
另外也可以根據(jù)用戶的實(shí)際需求,為CPU添加各種標(biāo)準(zhǔn)或定制的外設(shè),例如UART,SPI,IIC等標(biāo)準(zhǔn)接口外設(shè),同時,用戶也可以自己使用FPGA的邏輯資源,編寫各種專用的外設(shè),然后連接到CPU總線上,由CPU進(jìn)行控制,以實(shí)現(xiàn)軟硬件的協(xié)同工作,在保證系統(tǒng)性能的同時,增加了系統(tǒng)的靈活性。
而且,如果單個的軟核CPU無法滿足用戶需求,可以添加多個CPU軟核,搭建多核系統(tǒng),通過多核CPU協(xié)同工作,讓系統(tǒng)擁有更加靈活便捷的控制能力。
由于是使用FPGA資源實(shí)現(xiàn)的,所以具有很大的靈活性,可以實(shí)現(xiàn)根據(jù)需要實(shí)現(xiàn)多種處理器,如 8051,RISC-V,Xilinx的 MicroBlaze ,Altera的Nios-II等等。
硬核處理器
由于軟核CPU是使用FPGA的通用邏輯資源搭建的,相較使用經(jīng)過布局布線優(yōu)化的硬核處理器來說,軟核處理器夠運(yùn)行的最高實(shí)時鐘主頻要低一些,而且也會相應(yīng)的消耗較多的FPGA邏輯資源以及片上存儲器資源,因此SOPC方案僅適用于對于數(shù)處理器整體性能要求不高的應(yīng)用,例如整個系統(tǒng)的初始化配置,人機(jī)交互,多個功能模塊間的協(xié)調(diào)控制等功能。
所以,各大FPGA廠家推出了SoC FPGA技術(shù),是在芯片設(shè)計(jì)之初,就在內(nèi)部的硬件電路上添加了硬核處理器,是純硬件實(shí)現(xiàn)的,不會消耗FPGA的邏輯資源,硬核處理器和FPGA邏輯在一定程度上是相互獨(dú)立的,簡單的說,就是SoC FPGA就是把一塊ARM處理器和一塊FPGA芯片封裝成了一個芯片。
例如比較有名的Xilinx的ZYNQ/PYNQ系列集成ARM Cortex-A9處理器,同時具有 ARM軟件的可編程性和 FPGA 的硬件可編程性,不僅可實(shí)現(xiàn)重要分析與硬件加速,同時還在單個器件上高度集成 CPU、DSP、ASSP 以及混合信號功能。
ZYNQ開發(fā)板
ZYNQ開發(fā)板
Intel的Cyclone V系列,集成雙核Cortex-A9,于2013年發(fā)布,在單一芯片上集成了雙核的ARM Cortex-A9處理器和FPGA邏輯資源的新型SoC芯片,相較于傳統(tǒng)的單一ARM處理器或FPGA芯片,它既擁有了ARM處理器靈活高效的數(shù)據(jù)運(yùn)算和事務(wù)處理能力,同時又集成了FPGA的高速并行處理優(yōu)勢,同時,基于兩者獨(dú)特的片上互聯(lián)結(jié)構(gòu),使用時可以將FPGA上的通用邏輯資源經(jīng)過配置,映射為ARM處理器的一個或多個具有特定功能的外設(shè),通過高達(dá)128位寬的AXI高速總線進(jìn)行通信,完成數(shù)據(jù)和控制命令的交互。由于片上的ARM處理器是經(jīng)過布局布線的硬線邏輯,因此其能工作的時鐘主頻較高,因此單位時間內(nèi)能夠執(zhí)行的指令也更多。
區(qū)別和聯(lián)系
從架構(gòu)的角度來說,SOPC和SoC FPGA是統(tǒng)一的,都是由FPGA部分和處理器部分組成。在SoC FPGA 中,嵌入的是純硬件基礎(chǔ)的硬核處理器,簡稱HPS(Hardware Processor System),而SOPC技術(shù)中,嵌入的是使用FPGA邏輯資源實(shí)現(xiàn)的軟核處理器,兩者指令集不一樣,處理器性能也不一樣。
一般來說,硬核處理器的性能要遠(yuǎn)遠(yuǎn)高于軟核處理器。另外,硬核處理器除了CPU部分,還集成了各種高性能外設(shè),如MMU、DDR3控制器、Nand FLASH控制器等,可以運(yùn)行成熟的 Linux操作系統(tǒng)和應(yīng)用程序,提供統(tǒng)一的系統(tǒng)API,降低開發(fā)者的軟件開發(fā)難度。而軟核CPU雖然可以通過配置,用邏輯資源來搭建相應(yīng)的控制器以支持相應(yīng)功能,但是從性能和開發(fā)難度上來說,基于SoC FPGA架構(gòu)進(jìn)行設(shè)計(jì)開發(fā)是比較好的選擇。
ZYNQ內(nèi)部框圖
ZYNQ框圖
另外,雖然SoC FPGA芯片上既包含了有ARM,又包含了有FPGA,但是兩者一定程度上是相互獨(dú)立的,SoC芯片上的ARM處理器核并非是包含于FPGA邏輯單元內(nèi)部的,F(xiàn)PGA和ARM(HPS)處理器只是封裝到同一個芯片中,JTAG接口、電源引腳和外設(shè)的接口引腳都是獨(dú)立的,因此,如果使用SoC FPGA芯片進(jìn)行設(shè)計(jì),即使不使用到片上的ARM處理器,ARM處理器部分占用的芯片資源也無法釋放出來,不能用作通用的FPGA資源。
而SOPC則是使用FPGA通用邏輯和存儲器資源搭建的CPU,當(dāng)不使用CPU時,CPU部分占用的資源可以被釋放,重新用作通用FPGA資源。