SOC与SOPC
SOPC
在 SoC FPGA 技術(shù)推出之前,各大 FPGA 廠家已經(jīng)推廣了十多年的 SOPC技術(shù)。從架構(gòu)角度來說,SOPC 和 SoC FPGA 是統(tǒng)一的,都是使用 FPGA 和 CPU共同完成系統(tǒng)的設(shè)計。但是與 SoC FPGA 不相同的是,
SOPC 是在單純的 FPGA芯片上使用 FPGA 的可編程邏輯資源和嵌入式存儲器資源搭建一個軟核 CPU 系統(tǒng),由該軟核 CPU 實現(xiàn)所需處理器的完整功能,該 CPU 是由 FPGA 通用邏輯資源和存儲器通過配置實現(xiàn)的,其本質(zhì)依舊只是一個復(fù)雜的 FPGA 設(shè)計模塊。
基于該結(jié)構(gòu)的設(shè)計在保證系統(tǒng)性能的同時,增加了系統(tǒng)的靈活性。另外,如果單個軟核 CPU 無法滿足用戶需求,則可以添加多個 CPU 軟核,搭建多核系統(tǒng),通過多核 CPU 協(xié)同工作,讓系統(tǒng)擁有更加靈活便捷的控制和運算能力。
CPU 是使用 FPGA 的通用邏輯資源搭建的,所以相較使用經(jīng)過
布局布線優(yōu)化的硬核處理器來說,軟核處理器夠運行的最高時鐘主頻要低一些,而且搭建軟核 CPU 也會消耗較多的 FPGA 邏輯資源以及片上存儲器資源。因此SOPC 方案僅適用于對處理器整體性能要求不高的應(yīng)用
SoC FPGA 與 SOPC 之間的差異
從架構(gòu)的角度來說,SOPC 和 SoC FPGA 是統(tǒng)一的,都是由 FPGA 和處理器組成。在 SoC FPGA 中,嵌入的是 ARM 公司 32 位的 Cortex-A9 硬核處理器,簡稱 HPS(Hardware Processor System)。 而 SOPC 技術(shù)中,嵌入的是由 Intel 自己開發(fā)的 32 位 NIOS II 軟核處理器,兩者指令集與處理器性能均有差異。Cortex-A9硬核處理器性能遠(yuǎn)遠(yuǎn)高于 NIOS II 軟核處理器。
Cyclone V SoC FPGA 片上的 HPS 部分,不僅集成了雙核的 Cortex-A9 硬核處理器,還集成了各種高性能外設(shè),如 MMU、DDR3 控制器、NAND FLASH控制器等,有這些外設(shè),HPS 部分就可以運行成熟的 Linux 操作系統(tǒng),提供統(tǒng)一的系統(tǒng) API,降低開發(fā)者的軟件開發(fā)難度。而 NIOS II 軟核 CPU 雖然可以通過配置,用邏輯資源來搭建相應(yīng)的控制器以支持相應(yīng)功能,但是從性能和開發(fā)難度上來說,無法與之媲美。因此,采用基于 SoC FPGA 架構(gòu)進(jìn)行設(shè)計開發(fā)是比較好的選擇。
此外,雖然 SoC FPGA 芯片上既包含了有 ARM,又包含了有FPGA,但是兩者一定程度上是相互獨立的,SoC芯片上的ARM處理器核并非是包含于FPGA邏輯單元內(nèi)部的,而是與 FPGA 一同封裝到同一個芯片中,JTAG 接口、電源引腳和外設(shè)的接口引腳都是獨立的。因此,如果使用 SoC FPGA 芯片進(jìn)行設(shè)計,即使不用片上的 ARM 處理器,ARM 處理器部分占用的芯片資源也無法釋放出來,不能用作通用的 FPGA 資源。而 SOPC 則是使用 FPGA 通用邏輯和存儲器資源搭建的 CPU,當(dāng)不使用 CPU 時,CPU 占用的資源可以被釋放,重新用作通用FPGA 資源。
SoC FPGA 架構(gòu)的優(yōu)勢
在 SoC FPGA 架構(gòu)出現(xiàn)之前,一般的嵌入式系統(tǒng)通常使用各種處理器或單片機作為系統(tǒng)核心,如基于 ARM 架構(gòu)的 CPU、基于因特爾 X86 架構(gòu)的 CPU、基于 IBM PowerPC 架構(gòu)的 CPU 等。
SoC FPGA 芯片上 FPGA 和 HPS 部分獨特的高速互聯(lián)架構(gòu),FPGA 側(cè)設(shè)計的功能電路可以直接連接到 HPS 的總線上,從而映射為 HPS 的一個外設(shè),由 HPS 對其進(jìn)行讀/寫操作,該操作就像處理器操作本身片上含有的外設(shè)一樣簡單方便。
相較于FPGA架構(gòu)的優(yōu)勢
單獨的 FPGA 設(shè)計的系統(tǒng)也有其不足之處,由于 FPGA 實現(xiàn)功能都
是通過功能固定的邏輯電路實現(xiàn)的,那么當(dāng)應(yīng)用中需要靈活的控制和人機交互或者復(fù)雜的以太網(wǎng)協(xié)議通信時,使用 FPGA 實現(xiàn)就會有較大的難度,即使使用復(fù)雜的狀態(tài)機能夠勉強實現(xiàn)功能,也面臨著功能固定、修改難度大的問題。例如在上述多路采集系統(tǒng)之中,當(dāng)需要將多路采集到的數(shù)據(jù)在液晶顯示屏上繪制為波形,或者使用TCP/IP協(xié)議傳輸?shù)竭h(yuǎn)端服務(wù)器時,單純的FPGA就難以勝任了,而ARM處理器,尤其是運行了嵌入式操作系統(tǒng)的 ARM 處理器,在圖形界面顯示和網(wǎng)絡(luò)
傳輸方面有較大的優(yōu)勢,如果將 FPGA 實現(xiàn)的多路高速數(shù)據(jù)采集系統(tǒng)的采集結(jié)果交給 ARM 處理器來實現(xiàn)波形顯示或者網(wǎng)絡(luò)傳輸,那么只需要簡單的軟件編程即可實現(xiàn)。
總結(jié)
- 上一篇: FB和FF MIC的用途
- 下一篇: java关于方法覆盖的叙述_以下关于方法