超越SoC的設計創新
大多數軟、硬件工程師都很熟悉 FPGA,這點應該勿庸置疑。這種熟悉不見得是實質性的熟悉,而是從概念上比較了解,也就是說 FPGA 功能的快速發展和成本的不斷下降是大家都不容忽略的優勢。同時,他們也認識到這種可編程器件顯然能方便地作為各種數字電路以及邏輯處理的高靈活度、低成本的載體。
基本說來,在設計方案中發揮 FPGA 的功能就是簡單地映射出所需的邏輯,然后將其下載至適當容量大小的器件中。這有些像大型處理器系統主體設計的輔助支持工作,而且在該層面上也確實發揮著自身的支持性作用。
近期一些應用開始充分利用 FPGA 的高吞吐量和并行計算功能進行數據處理工作,不過這種工作仍屬于發揮支持性作用,而不是主要作用。例如,我們往往在設計工作后期才決定采用基于 FPGA 的 DSP 模塊,而且是將其作為主設計規劃與工藝流程的附屬部分來開發。
隨著 FPGA 功能獲得長足發展,我們已開始采用能夠在可編程空間內實施處理器、存儲器、高速數據處理以及外設等核心功能模塊的 SoC 設計方案。隨著FPGA器件各代工藝技術從 65 納米向先進的 40 納米方向發展,而且門的容量達到數百萬個,FPGA 目前已開始走向發揮主導作用的前臺,能夠支持真正的大型設計,達到專業化 ASIC 器件的實施水平。
從某種程度上說,這要歸功于 FPGA 廠商推動的技術發展,拉近了 FPGA 與 ASIC 器件之間的性能與效率差距。對于大多數投入中低規模量產的產品而言,基于 FPGA 的方案顯然比 ASIC 更實際,這主要是因為后者的 NRE 成本已然非常高昂,而且還在不斷升高。不過,目前高產量產品仍然主要選用 ASIC 器件。
發揮潛力的障礙
不過,如果我們簡單地認為 FPGA 就是 ASIC 設計方案的低成本與多功能備選方案的話,那么我們就會忽視 FPGA 可提供的巨大潛力。FPGA 的更高級潛力集中體現在 FPGA 從根本上與 ASIC 存在的技術差異性,即 FPGA 的關鍵技術組件具有強大的可再編程能力。要充分發揮其這一潛力需要采用不同的設計理念和設計方法,這就遠遠超出了傳統 SoC 的設計思路和 ASIC 的原有方案。
FPGA 型產品設計的傳統開發進程反映了傳統的設計理念,即將設計方案的各個部分(軟件、硬件及嵌入式硬件)作為彼此獨立、不相聯系的任務。這就是說,傳統方案與 ASIC 開發工作差不多,軟硬件分組等重大設計決策都是在設計周期的早期階段做出的(并在早期階段就固定了)。
其結果是,物理硬件(FPGA 器件與外設硬件)以及可編程硬件元素在進行有意義的軟件開發之前就已經鎖定了。這些初期決策確定了后續開發工作的參數和局限性,因而導致越到開發后期設計選擇的局限性就越大。通過修改軟硬件分組、將嵌入式處理器改為硬連接處理器抑或是選擇不同的 FPGA 器件類型等來進行細節調整設計方案的理念是不存在的。
在上述基本層面進行任何設計方案調整都必須對包括硬件、可編程硬件和軟件在內的所有設計領域進行大量重新設計,這對設計工作造成的沖擊是極其巨大的,因此我們必須不惜一切代價避免這種設計巨變。簡而言之,只能在可編程硬件的限制框架內創建軟件,而可編程硬件則又相應局限于固定的物理硬件。
在當今設計中,軟件定義著產品的獨特優勢與競爭元素(功能性與最終用戶體驗),因此傳統的 SoC 設計方案會人為地制造軟件開發的局限性,影響設計最具價值的成分。對基于 FPGA 的設計而言,產品最核心的資產當屬應用軟件和嵌入式 FPGA 硬件所決定的“軟”屬性。
智能層
如果對 FPGA 平臺采用傳統的 SoC 設計方案,就會面臨 ASIC 方法的大多數局限性,但是 FPGA 自身的巨大靈活性則能帶來更多可能。特別是如果 FPGA 開發進程與軟硬件開發進程密切相關、共享相同的設計環境和設計數據池的話,就更能發揮靈活性優勢。
例如,如果 FPGA 的架構能夠采用高靈活性接口層,有效地將設計的“軟”元素與主機硬件相隔離,那么就能充分發揮各種可能性,可以盡可能地降低應用軟件和可編程硬件設計變動對周圍硬件系統所造成的影響。
這是發揮最新高容量 FPGA 器件功能的進一步合理舉措,可讓可編程元素進一步成為設計方案的核心,而不僅是傳統 SoC 系統的簡單載體。可編程元素實際上可以發揮更大的作用。
此外,FPGA 利用這種方案還能發揮外設、I/O 協處理器以及接口連接的作用。除了構成傳統 SoC 系統的高級功能元素之外,FPGA 還可作為設計方案中軟硬元素之間的連接機制。處理器、存儲器或 DSP 可作為軟內核或物理硬件實施,甚至也可同時兼顧二者實施,同時 FPGA 提供的可再編程層能夠將其聯系在一起。
這些更為豐富的 FPGA 元素通常可作為處理器以及存儲器和外設等硬件之間的接口,可將不同功能器件之間的接口實現“標準化”,這樣設計人員就不必煩心考慮 I/O 配置和總線系統等低級而復雜的硬件問題了。事實上,這些層可提取外設或處理器接口,從而能夠在不影響周圍硬件的情況下簡化對功能器件的更改。
在實踐中,基于 Wishbone 總線架構之上的 FPGA 內核可同時支持處理器和外設。內核能夠高效地將器件“打包”,從而提取處理器接口,使其在架構上相當于其他處理器,而且能確保在不影響與其相連的外設的情況下對處理器方便地進行修改。除了基于 FPGA 的“軟”器件之外,還可將上述理念進一步擴展適用于混合型硬核處理器、外部處理器以及片外分立式外設以及存儲器器件等。
高級設計
在不必考慮大多數低級硬件架構問題的情況下,我們可以有機會采用高級 FPGA 設計捕獲系統,使設計人員只需簡單地將邏輯功能模塊連接在一起。符合 Wishbone 標準的元件(從庫中拉出)可在原理圖上連在一起,甚至也可在更高級的設計抽象上組合,通過簡單的示意圖(反映功能或器件)組成類似于流程圖的配置。
請注意,這種高級設計方案各加能夠充分發揮 FPGA 的可再編程功能。任何添加層和接口都可自動與功能設計本身一起包含在 FPGA 結構中。與固定芯片 SoC 產品設計所使用的傳統過程不同的是, FPGA 的硬件設計可以動態開發,而不會對設計方案的其他組成部分構成嚴重影響。
此外,這種方案從軟件開發人員的角度來說也非常重要。以編寫編寫存取或控制外設器件的軟件為例,我們需要全面了解器件在底層硬件級上的工作情況,其中包括需要哪些器件寄存器、采用哪些器件專用的命令、使用哪些通信協議,以及如何處理中斷等。
為了滿足這一需求,可以在層棧管理器中標準化的硬件接口層中添加驅動層與應用層的驅動軟件。與 Wishbone包裝內核相似,也可在構建時間時將這些驅動層下載到 FPGA中,為您解決低級硬件接口連接的復雜性問題。
相反,許多硬件開發人員也擁有充足的編程知識完成應用軟件開發,但是他們受阻于操作系統、通信協議棧、用戶界面框架等方面的知識。上述層與驅動系統移除了這些障礙,它將軟硬件設計聯系了起來,從而使所有工程師都能夠在現有的技巧基礎上開發出更高級的產品。
可編程單元
此外,FPGA 的高靈活技術也是可通過將軟件程序與算法轉移到硬件中來最大限度發揮其加速作用的理想環境。FPGA 開發環境中的 C 到硬件轉換可以是一個動態過程,而不是 ASIC SoC 備選方案那樣的固定預設過程。軟件設計和 FPGA 設計共存于同一環境時,選定的軟件功能可在 FPGA 硬件中“復制”為相應的協處理器。可以隨時啟用備用選項來判斷性能的改善情況。
除了將并行處理等功能帶到軟設計區域的明顯優勢之外,還可充分發揮 FPGA 物理器件引腳的固有可編程特性優勢來降低電路板布線復雜性,并簡化外部連接。
例如,通常情況下,在實際布局中物理器件的放置會使 FPGA 與外設之間的連接極為復雜,這在一定程度上與 BGA 封裝的高密度有關,我們可通過 FPGA的本身解決這個問題。這里可采用 FPGA 的引腳的重新分配與內部布線來解決電路板布線的技術難題,還可以降低電路板空間占用與板子的層數要求。這一理念同樣依賴于在平臺層面上互連的軟件-硬件-FPGA 開發環境,只有這樣才能支持硬件 FPGA 域之間的智能與自動引腳交換。
這里我們確實需要從根本上解決超越傳統 SoC 設計方法限制的問題。要想實現本文所描述的系統,就需要可將所有設計進程集中在同一領域的高級設計系統。通過統一設計應用,采用整體設計的統一數據模型,就可消除嵌入式軟件、可編程硬件以及物理硬件等不同設計領域之間的分割。
用來實施的單純 SoC 設計方法與傳統系統都有極大的局限性,不能充分發揮 FPGA 的潛力。系統設計必須超越當前這種不靈活的分離式設計方法,讓 FPGA(實際上是多個 FPGA)成為整體設計的可再編程中央平臺。
只有在統一的產品設計環境中采用這種方法,設計應用軟件才能提高可移植性,實現軟硬件的真正協調設計,而且在了解相關要求后在設計周期后期決定重要硬件。這樣創建出來的具有高度靈活性的動態設計環境,可以幫助更多工程師創建出極具競爭力的特色創新電子產品。
評論
查看更多