簡介
受電子技術,特別是可程式技術的限制,傳統的設計方法是將硬體和軟體分為兩個獨立的部分進行設計。在整個設計過程中,通常採用硬體優先的原則,一般首先進行硬體設計,然後在硬體設計平台上進行軟體設計。隨著電子技術的發展,各種大規模可程式積體電路得到廣泛的套用,傳統的設計方法的局限性已成為限制可程式晶片充分發揮性能的障礙,在此基礎上,人們開始研究軟硬體協同設計技術。軟硬體協同設計是依據系統設計為目標,通過綜合分析系統軟硬體功能及現有資源,最大限度地挖掘系統軟硬體的潛能,協同設計軟硬體體系結構,使得系統能夠運行在最佳的工作狀態 。
協同設計與傳統設計方法對比
傳統的設計方法一般採用自上向下的設計方法,或者是模組化設計方法,總體上都是硬體模組優先的設計方法。其基本設計思路如圖所示。
這種設計方法將硬體和軟體分為兩個獨立的部分。在整個設計過程中,通常採用硬體優先的原則,即在概要估計軟體任務需求的情況下,首先進行硬體設計,在建立了硬體平台以後,在此硬體設計平台上進行軟體設計。由於在硬體設計過程中缺乏對軟體構架和實現機制的清晰了解,硬體設計工作帶有一定的局限性。在系統最佳化時由於受到設計空間的限制,只能改善硬體/軟體各自的性能,不能對系統進行綜合最佳化,得到的最終設計結果很難充分利用硬軟體資源,難以適應現代複雜的系統設計任務。軟硬體協同設計是使軟體設計和硬體設計作為一個有機的整體進行並行設計,實現軟硬體的最佳結合,從而使系統獲得高效工作能力。軟硬體協同設計的基本思路如圖所示。
從圖可以看出,軟硬體協同設計最主要的優點是在設計過程中,硬體和軟體設計是相互作用的,這種相互作用體現在設計過程的各個階段和各個層次,設計過程充分實現了軟硬體的協同性。在軟硬體功能分配時就考慮了現有軟硬體的資源,在軟硬體功能設計和仿真評價過程中,軟體和硬體是互相支持的。這就使得軟硬體功能模組能夠在設計開發的早期互相結合,從而及早發現和解決系統設計的問題,避免了在設計開發後期反覆修改所帶來的一系列問題,有利於充分挖掘系統潛能、縮小體積、降低成本、提高整體效能。
軟硬體協同設計的過程
軟硬體協同設計過程可以分為“系統描述、系統設計、仿真驗證和綜合實現”四個階段 。
系統描述是用一種或多種描述語言對所要設計的系統的功能和性能進行全面的描述,建立系統的軟硬體模型的過程。系統建模可以藉助EDA工具實現,也可以由設計者用自然語言來完成。
系統設計可以分為軟硬體功能分配和系統映射兩個階段。軟硬體功能分配就是要確定哪些系統功能由硬體模組來實現,哪些系統功能由軟體模組來實現。硬體一般能夠提供更好的性能,而軟體更容易開發和修改,成本相對較低。由於硬體模組的可配置性,可程式性以及某些軟體功能的硬體化、固件化,因此一些功能既能用軟體實現,又能用硬體實現,軟硬體的界限已經不十分明顯。此外在進行軟硬體功能分配時,既要考慮市場可以提供的資源狀況,又要考慮系統成本、開發時間等諸多因素。因此,軟硬體的功能劃分是一個複雜而艱苦的過程,是整個任務流程最重要的環節。系統映射是根據系統描述和軟硬體任務劃分的結果,分別選擇系統的軟硬體模組以及其接口的具體實現方法,並將其集成,最終確定系統的體系結構。具體地說,這一過程就是要確定系統將採用哪些硬體模組(如MCU,DSP,FPGA、存儲器、I/O接口部件等)、軟體模組(如作業系統、驅動程式、功能模組等)和軟硬體模組之間的通訊方法(如匯流排、共享存儲器、數據通道等)以及這些模組的具體實現方法。
仿真驗證是檢驗系統設計正確性的過程。對設計結果的正確性進行評估,以達到避免在系統實現過程中發現問題時再進行反覆修改的目的。在系統仿真驗證的過程中,模擬的工作環境和實際使用時差異很大,軟硬體之間的相互作用方式及作用效果也就不同,這也使得難以保證系統在真實環境下工作的可靠性。因此,系統模擬也有一定的局限性。
綜合實現其過程是軟體、硬體系統的具體設計過程。設計結果經過仿真驗證後,可按系統設計的要求進行系統研製生產,即按照前述工作的要求設計硬體軟體,並使其能夠協調一致地工作,而後在進行各種試驗。
1.系統描述是用一種或多種描述語言對所要設計的系統的功能和性能進行全面的描述,建立系統的軟硬體模型的過程。系統建模可以藉助EDA工具實現,也可以由設計者用自然語言來完成。
2.系統設計可以分為軟硬體功能分配和系統映射兩個階段。軟硬體功能分配就是要確定哪些系統功能由硬體模組來實現,哪些系統功能由軟體模組來實現。硬體一般能夠提供更好的性能,而軟體更容易開發和修改,成本相對較低。由於硬體模組的可配置性,可程式性以及某些軟體功能的硬體化、固件化,因此一些功能既能用軟體實現,又能用硬體實現,軟硬體的界限已經不十分明顯。此外在進行軟硬體功能分配時,既要考慮市場可以提供的資源狀況,又要考慮系統成本、開發時間等諸多因素。因此,軟硬體的功能劃分是一個複雜而艱苦的過程,是整個任務流程最重要的環節。系統映射是根據系統描述和軟硬體任務劃分的結果,分別選擇系統的軟硬體模組以及其接口的具體實現方法,並將其集成,最終確定系統的體系結構。具體地說,這一過程就是要確定系統將採用哪些硬體模組(如MCU,DSP,FPGA、存儲器、I/O接口部件等)、軟體模組(如作業系統、驅動程式、功能模組等)和軟硬體模組之間的通訊方法(如匯流排、共享存儲器、數據通道等)以及這些模組的具體實現方法。
3.仿真驗證是檢驗系統設計正確性的過程。對設計結果的正確性進行評估,以達到避免在系統實現過程中發現問題時再進行反覆修改的目的。在系統仿真驗證的過程中,模擬的工作環境和實際使用時差異很大,軟硬體之間的相互作用方式及作用效果也就不同,這也使得難以保證系統在真實環境下工作的可靠性。因此,系統模擬也有一定的局限性。
4.綜合實現其過程是軟體、硬體系統的具體設計過程。設計結果經過仿真驗證後,可按系統設計的要求進行系統研製生產,即按照前述工作的要求設計硬體軟體,並使其能夠協調一致地工作,而後在進行各種試驗。
傳統設計與軟硬體協同設計方法實例
以嵌入式電視圖像縮放為例,通常由視頻感測器送出的模擬視頻信號(我國採用PAL-D制式,解析度為768×576),在經A/D轉換後,為滿足不同解析度顯示的需要,需對A/D轉換後的數字視頻採用相鄰象素插值算法進行相關運算後轉換為所需解析度再進行顯示。相鄰象素插值算法需要多次數據的乘法與除法,一般情況下,可將除法轉換為乘法,設每進行一次單色的相鄰象素插值運算需要5次乘法及5次加法,每次乘法需4個時鐘周期,每次加法1個時鐘周期,源圖像解析度為768×576,每秒25幀,目的圖像解析度為1280×1024。
傳統設計過程
傳統設計方法採用軟體實現相鄰象素插值算法的過程,由軟體按順序依次算出目的圖像中的每一個象素的數值並送入顯示快取進行顯示。設計過程中的硬體需求計算如下:
一幀圖像需處理點數:m=1280×1024=1310720
一秒需處理總點數:M=m×25=32768000
每處理一個點所需時鐘數:N=5×4+5×1=25
則每秒種處理象素所需總時鐘數:C=M×N=32768000×25=819200000
即最大信息流量為819.28M,按20%的設計冗餘,在純軟體處理的情況下,所需的處理器速度需求為1GHz。系統硬體實現框圖如圖所示。
軟硬體協同設計過程
軟硬體協同設計以FPGA為核心,充分發揮可程式器件的性能,以FPGA編程的方式實現相鄰象素插值算法的過程,將傳統設計過程中以軟體方式實現的過程以硬體流水線的方式來實現。系統硬體實現框圖如圖所示。從圖中可以看出,以FPGA為核心的象素處理流水線代替了處理器,降低了系統的複雜程度,另外,由於象素處理流水線的最大信息處理量為1280×1024×25=32768000,即最大信息流量為32.768M,按20%的設計冗餘,所需的處理速度不到傳統設計的十分之一,從而簡化了系統設計、降低了系統技術難度、提高了系統的可靠性。
軟硬體協同設計的意義
由於軟硬體協同設計以可程式設計技術為核心,採用軟硬體結合的方式,設計最優的軟硬體接口,以有限狀態機或數據處理流水線的方式實現部分軟體流程的功能,對產品的設計有如下意義:
•提高了系統的性能。可套用在新產品的設計及老產品的技術升級改造中;
•提高了系統的可靠性。軟硬體協同設計可在一定程度上降低系統的複雜程度及技術實現難度,對提高產品的可靠性大有裨益
•通過FPGA實現專用測試點測試或JTAG邊界掃描測試,提高系統的可測試性;
•以FPGA實現的數據處理流水線IP核具有非常高的可移植性,可直接套用於類似產品的開發,縮短了產品的開發周期;
•採用軟體固件化的方式將部分核心技術固化在可程式器件中,有利於核心技術的保密工作,有助於智慧財產權的保護。
理論
首先是系統的描述方法。目前廣泛採用的硬體描述語言是否仍然有效?如何來定義一個系統級的軟體功能描述或硬體功能描述?迄今為止,尚沒有一個大家公認的且可以使用的系統功能描述語言可供設計者使用。
其次是這一全新的設計理論與已有的積體電路設計理論之間的接口。可以預見,這種全新的設計理論應該是現有積體電路設計理論的完善,是建立在現有理論之上的一個更高層次的設計理論,它與現有理論一起組成了更為完善的理論體系。在這種假設下,這種設計理論的輸出就應該是現有理論的輸入。
第三,這種全新的軟硬體協同設計理論將如何確定最優性原則。顯然,沿用以往的最優性準則是不夠的。除了晶片設計師們已經熟知的速度、面積等硬體最佳化指標外,與軟體相關的如代碼長度、資源利用率、穩定性等指標也必須由設計者認真地加以考慮。
第四,如何對這樣的一個包含軟體和硬體的系統的功能進行驗證。除了驗證所必須的環境之外,確認設計錯誤發生的地方和機理將是一個不得不面對的課題。最後,功耗問題。傳統的積體電路在功耗的分析和估計方面已有一整套理論和方法。但是,要用這些現成的理論來分析和估計含有軟體和硬體兩部分的SOC將是遠遠不夠的。簡單地對一個硬體設計進行功耗分析是可以的,但是由於軟體運行引起的動態功耗則只能通過軟硬體的聯合運行才能知道。
其實,還可以舉出很多新理論要涉及的問題,它們一起構成了面向SOC的軟硬體協同設計的理論體系。
軟硬體協同設計所涉及到的內容有:HW-SW 協同設計流程、HW-SW 劃分、HW-SW 並行綜合、HW-SW 並行仿真。
.