FPGA(Field-Programmable Gate Array)是一種可編程邏輯器件,可以通過編程實(shí)現(xiàn)不同的數(shù)字電路功能。固核、軟核和硬核是FPGA(Field-Programmable Gate Array)中常見的IP核形式,F(xiàn)PGA通常包含硬核和軟核兩種處理器,下面分別介紹。
IP(Intelligent Property) 核是具有知識產(chǎn)權(quán)核的集成電路芯核總稱,是經(jīng)過反復(fù)驗(yàn)證過的、具有特定功能的宏模塊,與芯片制造工藝無關(guān),可以移植到不同的半導(dǎo)體工藝中。到了 SOC 階段,IP 核設(shè)計已成為 ASIC 電路設(shè)計公司和 FPGA 提供商的重要任務(wù),也是其實(shí)力體現(xiàn)。對于 FPGA 開發(fā)軟件,其提供的 IP 核越豐富,用戶的設(shè)計就越方便,其市場占用率就越高。目前,IP 核已經(jīng)變成系統(tǒng)設(shè)計的基本單元,并作為獨(dú)立設(shè)計成果被交換、轉(zhuǎn)讓和銷售。
從IP核的提供方式上,通常將其分為軟核、固核和硬核這3類。從完成IP核所花費(fèi)的成本來講,硬核代價最大;從使用靈活性來講,軟核的可復(fù)用使用性最高。
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è)計風(fēng)險,它在編譯時提供了高度的客制化選項(xiàng),如自定義高速緩存和指令集,從而節(jié)省空間和功耗。盡管如此,軟核對特定技術(shù)的適應(yīng)性可能不如硬核,優(yōu)化的彈性稍勝一籌。
硬核,如同經(jīng)過嚴(yán)格驗(yàn)證的工業(yè)標(biāo)準(zhǔn),性能和功耗表現(xiàn)卓越,但其全客制化的設(shè)計方式使它在新制程下移植困難。硬核移植過程中,需要大量的時間和成本投入,這可能導(dǎo)致原始制程優(yōu)化的效益流失。雖然缺乏靈活性,硬核提供了預(yù)布局網(wǎng)表,預(yù)見性更強(qiáng),但對知識產(chǎn)權(quán)保護(hù)較為有利,移植性較差。
固核(Firm Core)
FPGA的固核(Firm Core)是介于硬核(Hard Core)和軟核(Soft Core)之間的一種IP核形式。與硬核IP相比,固核IP的設(shè)計和實(shí)現(xiàn)更加靈活,可以進(jìn)行一定程度的修改和定制,但是又比軟核IP更加穩(wěn)定和可靠。
固核通常由FPGA廠商提供的、預(yù)先實(shí)現(xiàn)的硬件模塊,但是可以通過軟件編程進(jìn)行配置和控制。固核IP通常包括處理器、控制器、接口等多種功能,可以在FPGA芯片中實(shí)現(xiàn)各種不同的應(yīng)用。
與軟核IP相比,固核IP具有更高的性能和可靠性,因?yàn)樗怯蒄PGA廠商提供的、預(yù)先實(shí)現(xiàn)的硬件模塊,經(jīng)過了嚴(yán)格的測試和驗(yàn)證。同時,固核IP也具有更高的靈活性和可定制性,因?yàn)榭梢酝ㄟ^軟件編程進(jìn)行配置和控制。
固核的優(yōu)點(diǎn)主要包括:
1. 高性能:固核IP是由FPGA廠商提供的、預(yù)先實(shí)現(xiàn)的硬件模塊,因此具有非常高的性能和可靠性。
2. 靈活性高:固核IP可以進(jìn)行一定程度的修改和定制,因此更加靈活。
3. 易于使用:固核IP通常由FPGA芯片中的硬件資源直接實(shí)現(xiàn),因此可以非常方便地進(jìn)行配置和使用。
4. 可靠性高:固核IP是由FPGA廠商提供的、預(yù)先實(shí)現(xiàn)的硬件模塊,經(jīng)過了嚴(yán)格的測試和驗(yàn)證,具有非常高的可靠性。
固核的缺點(diǎn)主要包括:
1. 不夠靈活:固核IP雖然可以進(jìn)行一定程度的修改和定制,但是仍然不如軟核IP靈活。
2. 資源消耗大:固核IP通常需要占用一定的FPGA芯片資源。
3. 成本高:固核IP的設(shè)計和實(shí)現(xiàn)需要一定的工程師和資源,因此成本相對較高。
軟核(Soft Core)
軟核處理器是指在FPGA芯片內(nèi)部實(shí)現(xiàn)的可配置的處理器,通常包括CPU、DSP和各種外設(shè)接口等。軟核處理器的設(shè)計和實(shí)現(xiàn)由用戶自己完成,可以根據(jù)具體應(yīng)用場景進(jìn)行靈活配置和擴(kuò)展。
軟核處理器具有靈活性和可定制性等優(yōu)點(diǎn),可以根據(jù)具體應(yīng)用場景進(jìn)行靈活配置和擴(kuò)展。軟核處理器的缺點(diǎn)是性能和功耗等方面可能不如硬核處理器。
軟核就是用代碼就能現(xiàn)的CPU核,這種核配置靈活,成本較低??梢栽谌魏钨Y源足夠的FPGA中實(shí)現(xiàn),使用非常靈活。而且在大容量的FPGA中還可以集成多個軟核,實(shí)現(xiàn)多核并行處理。
SOPC(System on a Programmable Chip,即軟核處理器)技術(shù)是種在FPGA芯片上實(shí)現(xiàn)系統(tǒng)級設(shè)計的技術(shù),最早是由Altera公司提出來的,它是基于FPGA的SOC片上系統(tǒng)設(shè)計技術(shù)。是使用FPGA的邏輯和資源搭建的一個軟核CPU系統(tǒng),由于是使用FPGA的通用邏輯搭建的CPU,因此具有一定的靈活性,用戶可以根據(jù)自己的需求對CPU進(jìn)行定制裁剪,增加一些專用功能,例如除法或浮點(diǎn)運(yùn)算單元,用于提升CPU在某些專用運(yùn)算方面的性能,或者刪除一些在系統(tǒng)里面使用不到的功能,以節(jié)約邏輯資源。它將處理器、外設(shè)和FPGA邏輯等集成到一個芯片上,實(shí)現(xiàn)了高度集成和靈活性。
SOPC技術(shù)通常包括以下幾個方面:
1. 處理器核:SOPC技術(shù)通常包括一個或多個處理器核,例如ARM、MIPS和Nios II等。處理器核可以實(shí)現(xiàn)各種不同的處理器功能,例如控制、數(shù)據(jù)處理和通信等。
2. 外設(shè)接口:SOPC技術(shù)通常包括各種外設(shè)接口,例如UART、SPI、I2C和USB等。外設(shè)接口可以連接各種不同的外設(shè)設(shè)備,例如傳感器、存儲器和顯示器等。
3. FPGA邏輯:SOPC技術(shù)通常包括FPGA邏輯,可以實(shí)現(xiàn)各種不同的數(shù)字電路功能。FPGA邏輯可以根據(jù)具體應(yīng)用場景進(jìn)行靈活配置和擴(kuò)展。
4. 總線結(jié)構(gòu):SOPC技術(shù)通常包括總線結(jié)構(gòu),用于連接處理器核、外設(shè)接口和FPGA邏輯等??偩€結(jié)構(gòu)可以實(shí)現(xiàn)高效的數(shù)據(jù)傳輸和控制。
SOPC技術(shù)的優(yōu)點(diǎn)是高度集成和靈活性,可以根據(jù)具體應(yīng)用場景進(jìn)行靈活配置和擴(kuò)展。SOPC技術(shù)的缺點(diǎn)是設(shè)計和實(shí)現(xiàn)復(fù)雜度較高,需要專業(yè)的設(shè)計工具和技術(shù)支持。
另外也可以根據(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)擁有更加靈活便捷的控制能力。
硬核(Hard Core)
硬核處理器是指在FPGA芯片內(nèi)部實(shí)現(xiàn)的固定功能的處理器,通常包括CPU、DSP和各種外設(shè)接口等。硬核處理器的設(shè)計和實(shí)現(xiàn)由FPGA廠商完成,用戶可以直接使用,無需自己設(shè)計和實(shí)現(xiàn)。
硬核處理器具有高性能、低功耗和可靠性等優(yōu)點(diǎn),適用于需要高性能和實(shí)時性的應(yīng)用場景。硬核處理器的缺點(diǎn)是功能固定,無法根據(jù)具體應(yīng)用場景進(jìn)行靈活配置和擴(kuò)展。
硬核就是一塊電路做到FPGA內(nèi)部,方便使用,性能更高。比如 Xilinx 的 DDR內(nèi)存控制器,就是一種硬核,其運(yùn)行速度非常高,我們只要做些配置,就可以方便使用,缺點(diǎn)是不夠靈活。
由于軟核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è)計之初,就在內(nèi)部的硬件電路上添加了硬核處理器,是純硬件實(shí)現(xiàn)的,不會消耗FPGA的邏輯資源,硬核處理器和FPGA邏輯通常是相互獨(dú)立的,可以分別實(shí)現(xiàn)不同的功能。硬核處理器可以實(shí)現(xiàn)各種不同的處理器功能,例如控制、數(shù)據(jù)處理和通信等;FPGA邏輯可以實(shí)現(xiàn)各種不同的數(shù)字電路功能,例如邏輯運(yùn)算、時序控制和數(shù)據(jù)處理等。SoC FPGA(System on a Chip FPGA)技術(shù)是一種將FPGA芯片和處理器核集成到一個芯片上的技術(shù),實(shí)現(xiàn)了高度集成和靈活性。
同時,基于兩者獨(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)系
軟核和硬核各自有各自的優(yōu)點(diǎn),F(xiàn)PGA對于某些高主頻的應(yīng)用,似乎就無能為力了,現(xiàn)在雖然理論上FPGA可以支持的500MHz,但在實(shí)際設(shè)計中,往往200MHz以上工作頻率就很難實(shí)現(xiàn)了。同時也需要匹配上對應(yīng)傳感器的頻率,即使實(shí)現(xiàn)了再高頻率也無用。
硬核處理器和軟核處理器在設(shè)計和實(shí)現(xiàn)方式上有很大的區(qū)別,但它們都可以在FPGA芯片內(nèi)部實(shí)現(xiàn)處理器功能。硬核處理器具有高性能、低功耗和可靠性等優(yōu)點(diǎn),適用于需要高性能和實(shí)時性的應(yīng)用場景;軟核處理器具有靈活性和可定制性等優(yōu)點(diǎn),可以根據(jù)具體應(yīng)用場景進(jìn)行靈活配置和擴(kuò)展。硬核處理器和軟核處理器在應(yīng)用場景上有所不同,用戶可以根據(jù)具體應(yīng)用場景選擇合適的處理器。
在SOPC和SoC FPGA技術(shù)中,都是由FPGA部分和處理器部分組成,硬核處理器和FPGA邏輯可以結(jié)合使用,實(shí)現(xiàn)高度集成和靈活性。例如,硬核處理器可以連接FPGA邏輯,實(shí)現(xiàn)高性能和低功耗的系統(tǒng)設(shè)計;FPGA邏輯可以連接硬核處理器的外設(shè)接口,實(shí)現(xiàn)各種不同的外設(shè)設(shè)備連接。
在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è)計開發(fā)是比較好的選擇。
另外,雖然SoC FPGA芯片上既包含了有ARM,又包含了有FPGA,但是兩者一定程度上是相互獨(dú)立的,SoC芯片上的ARM處理器核并非是包含于FPGA邏輯單元內(nèi)部的,F(xiàn)PGA和ARM(HPS)處理器只是封裝到同一個芯片中,JTAG接口、電源引腳和外設(shè)的接口引腳都是獨(dú)立的。因此,如果使用SoC FPGA芯片進(jìn)行設(shè)計,即使不使用到片上的ARM處理器,ARM處理器部分占用的芯片資源也無法釋放出來,不能用作通用的FPGA資源。
固核是介于硬核和軟核之間的一種IP核形式,它們通常是由FPGA廠商提供的、預(yù)先實(shí)現(xiàn)的硬件模塊,但是可以通過軟件編程進(jìn)行配置和控制。固核通常包括處理器、控制器、接口等多種功能,可以在FPGA芯片中實(shí)現(xiàn)各種不同的應(yīng)用。固核具有高性能和可靠性,同時也具有一定的靈活性和可定制性,適用于需要高速處理和大規(guī)模數(shù)據(jù)處理的應(yīng)用場景。
總的來說,硬核、軟核和固核都是FPGA中常見的IP核形式,它們之間的區(qū)別主要在于設(shè)計和實(shí)現(xiàn)的方式、性能和可靠性、靈活性和可定制性等方面。在選擇IP核時,需要根據(jù)具體的應(yīng)用需求和成本考慮,選擇最合適的IP核形式。
而SOPC則是使用FPGA通用邏輯和存儲器資源搭建的CPU,當(dāng)不使用CPU時,CPU部分占用的資源可以被釋放,重新用作通用FPGA資源。