複製鏈接
請複製以下鏈接發送給好友

軟硬件協同設計

鎖定
軟硬件協同設計是指對系統中的軟硬件部分使用統一的描述和工具進行集成開發,可完成全系統的設計驗證並跨越軟硬件界面進行系統優化。
中文名
軟硬件協同設計
釋    義
使用統一工具進行集成開發
特    點
跨越軟硬件
性    質
集成電路設計

軟硬件協同設計簡介

受電子技術,特別是可編程技術的限制,傳統的設計方法是將硬件和軟件分為兩個獨立的部分進行設計。在整個設計過程中,通常採用硬件優先的原則,一般首先進行硬件設計,然後在硬件設計平台上進行軟件設計。隨着電子技術的發展,各種大規模可編程集成電路得到廣泛的應用,傳統的設計方法的侷限性已成為限制可編程芯片充分發揮性能的障礙,在此基礎上,人們開始研究軟硬件協同設計技術。軟硬件協同設計是依據系統設計為目標,通過綜合分析系統軟硬件功能及現有資源,最大限度地挖掘系統軟硬件的潛能,協同設計軟硬件體系結構,使得系統能夠運行在最佳的工作狀態 [1] 

軟硬件協同設計協同設計與傳統設計方法對比

圖1 圖1
傳統的設計方法一般採用自上向下的設計方法,或者是模塊化設計方法,總體上都是硬件模塊優先的設計方法。其基本設計思路如圖1所示。
圖2 圖2
這種設計方法將硬件和軟件分為兩個獨立的部分。在整個設計過程中,通常採用硬件優先的原則,即在概要估計軟件任務需求的情況下,首先進行硬件設計,在建立了硬件平台以後,在此硬件設計平台上進行軟件設計。由於在硬件設計過程中缺乏對軟件構架和實現機制的清晰瞭解,硬件設計工作帶有一定的侷限性。在系統優化時由於受到設計空間的限制,只能改善硬件/軟件各自的性能,不能對系統進行綜合優化,得到的最終設計結果很難充分利用硬軟件資源,難以適應現代複雜的系統設計任務。軟硬件協同設計是使軟件設計和硬件設計作為一個有機的整體進行並行設計,實現軟硬件的最佳結合,從而使系統獲得高效工作能力。軟硬件協同設計的基本思路如圖2所示。
從圖可以看出,軟硬件協同設計最主要的優點是在設計過程中,硬件和軟件設計是相互作用的,這種相互作用體現在設計過程的各個階段和各個層次,設計過程充分實現了軟硬件的協同性。在軟硬件功能分配時就考慮了現有軟硬件的資源,在軟硬件功能設計和仿真評價過程中,軟件和硬件是互相支持的。這就使得軟硬件功能模塊能夠在設計開發的早期互相結合,從而及早發現和解決系統設計的問題,避免了在設計開發後期反覆修改所帶來的一系列問題,有利於充分挖掘系統潛能、縮小體積、降低成本、提高整體效能。

軟硬件協同設計軟硬件協同設計的過程

軟硬件協同設計過程可以分為“系統描述、系統設計、仿真驗證和綜合實現”四個階段 [1] 
  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
圖3 圖3
即最大信息流量為819.28M,按20%的設計冗餘,在純軟件處理的情況下,所需的處理器速度需求為1GHz。系統硬件實現框圖如圖3所示。

軟硬件協同設計軟硬件協同設計過程

圖4 圖4
軟硬件協同設計以FPGA為核心,充分發揮可編程器件的性能,以FPGA編程的方式實現相鄰象素插值算法的過程,將傳統設計過程中以軟件方式實現的過程以硬件流水線的方式來實現。系統硬件實現框圖如圖4所示。從圖中可以看出,以FPGA為核心的象素處理流水線代替了處理器,降低了系統的複雜程度,另外,由於象素處理流水線的最大信息處理量為1280×1024×25=32768000,即最大信息流量為32.768M,按20%的設計冗餘,所需的處理速度不到傳統設計的十分之一,從而簡化了系統設計、降低了系統技術難度、提高了系統的可靠性。

軟硬件協同設計軟硬件協同設計的意義

由於軟硬件協同設計以可編程設計技術為核心,採用軟硬件結合的方式,設計最優的軟硬件接口,以有限狀態機或數據處理流水線的方式實現部分軟件流程的功能,對產品的設計有如下意義:
  • 提高了系統的性能。可應用在新產品的設計及老產品的技術升級改造中;
  • 提高了系統的可靠性。軟硬件協同設計可在一定程度上降低系統的複雜程度及技術實現難度,對提高產品的可靠性大有裨益
  • 通過FPGA實現專用測試點測試或JTAG邊界掃描測試,提高系統的可測試性;
  • 以FPGA實現的數據處理流水線IP核具有非常高的可移植性,可直接應用於類似產品的開發,縮短了產品的開發週期;
  • 採用軟件固件化的方式將部分核心技術固化在可編程器件中,有利於核心技術的保密工作,有助於知識產權的保護。

軟硬件協同設計理論

首先是系統的描述方法。目前廣泛採用的硬件描述語言是否仍然有效?如何來定義一個系統級的軟件功能描述或硬件功能描述?迄今為止,尚沒有一個大家公認的且可以使用的系統功能描述語言可供設計者使用。
其次是這一全新的設計理論與已有的集成電路設計理論之間的接口。可以預見,這種全新的設計理論應該是現有集成電路設計理論的完善,是建立在現有理論之上的一個更高層次的設計理論,它與現有理論一起組成了更為完善的理論體系。在這種假設下,這種設計理論的輸出就應該是現有理論的輸入。
第三,這種全新的軟硬件協同設計理論將如何確定最優性原則。顯然,沿用以往的最優性準則是不夠的。除了芯片設計師們已經熟知的速度、面積等硬件優化指標外,與軟件相關的如代碼長度、資源利用率、穩定性等指標也必須由設計者認真地加以考慮。
第四,如何對這樣的一個包含軟件和硬件的系統的功能進行驗證。除了驗證所必須的環境之外,確認設計錯誤發生的地方和機理將是一個不得不面對的課題。最後,功耗問題。傳統的集成電路在功耗的分析和估計方面已有一整套理論和方法。但是,要用這些現成的理論來分析和估計含有軟件和硬件兩部分的SOC將是遠遠不夠的。簡單地對一個硬件設計進行功耗分析是可以的,但是由於軟件運行引起的動態功耗則只能通過軟硬件的聯合運行才能知道。
其實,還可以舉出很多新理論要涉及的問題,它們一起構成了面向SOC的軟硬件協同設計的理論體系。
軟硬件協同設計所涉及到的內容有:HW-SW 協同設計流程、HW-SW 劃分、HW-SW 並行綜合、HW-SW 並行仿真。
.
參考資料