張 丹,董雷剛,祝裕璞,張 華,程書偉,王冬星
(大慶師范學院 計算機科學與信息技術(shù)學院,黑龍江 大慶 163712)
隨著半導(dǎo)體技術(shù)的高速發(fā)展,集成電路的規(guī)模不斷增大,以及大規(guī)??删幊踢壿嬈骷某霈F(xiàn),使得整個系統(tǒng)集成在單個芯片上并實現(xiàn)在系統(tǒng)可編程成為可能,這就是片上可編程系統(tǒng)SOPC(System on a Programmable Chip)。它支持并行SOPC技術(shù)具有靈活的設(shè)計方式:可裁減、可擴充、可升級,并具有軟硬件在系統(tǒng)可編程的功能。
基于 FPGA(Field-Programmable Gate Array,即現(xiàn)場可編程門陣列)的片上可編程系統(tǒng)SOPC 設(shè)計近年來在半導(dǎo)體領(lǐng)域中呈現(xiàn)出高速增長態(tài)勢,成為系統(tǒng)級設(shè)計者的首選,但是隨著系統(tǒng)規(guī)模的不斷增大,使得整個系統(tǒng)的設(shè)計變得非常困難,系統(tǒng)開發(fā)周期越來越長,而現(xiàn)今的嵌入式電子產(chǎn)品對系統(tǒng)的開發(fā)周期是非常敏感的,因此快速、高效的設(shè)計方法是一個值得探討和研究的問題。對于嵌入式系統(tǒng)設(shè)計中存在的這些問題,研究者提出了一種軟硬件協(xié)同設(shè)計的新方法。
SOPC系統(tǒng)是軟件和硬件的綜合體,系統(tǒng)中許多功能模塊既可以由硬件來完成,也可以由軟件來實現(xiàn)。硬件實現(xiàn)的特點是性能高、速度快,但是成本較高、靈活性差;而軟件實現(xiàn)的特點是靈活性好、成本較低,但是性能差。因此,設(shè)計實現(xiàn)過程中如何兼顧系統(tǒng)的功能和性能(如功耗、成本、面積等)需求,使它們達到一種最優(yōu)組合,這正是軟硬件協(xié)同設(shè)計方法所要解決的主要問題[1]。
目前,國內(nèi)外的企業(yè)普遍采用的是傳統(tǒng)的嵌入式系統(tǒng)設(shè)計方法。這種方法的步驟是首先對系統(tǒng)的需求描述進行定義,然后進行系統(tǒng)的軟硬件劃分,劃分好以后就開始分別進行硬件和軟件的設(shè)計,如果硬件和軟件設(shè)計中發(fā)現(xiàn)錯誤將直接返回到軟硬件的劃分。傳統(tǒng)的嵌入式系統(tǒng)設(shè)計流程如圖1所示。
圖1 傳統(tǒng)的嵌入式系統(tǒng)設(shè)計流程
這種方法的缺點如下:
1)系統(tǒng)的軟件設(shè)計和硬件設(shè)計的并行性低,設(shè)計周期較長。這種設(shè)計流程采用先對硬件進行設(shè)計,然后是軟件設(shè)計。即硬件設(shè)計好之后,在此硬件基礎(chǔ)之上進行軟件設(shè)計。此串行化的設(shè)計方法當硬件設(shè)計完成再進行軟件的調(diào)試時,如果發(fā)現(xiàn)硬件設(shè)計出現(xiàn)錯誤,糾正錯誤就要付出高昂的人力、物力代價。不能對系統(tǒng)的軟硬件進行協(xié)同驗證,導(dǎo)致了設(shè)計重復(fù)性工作的次數(shù)大幅度增多,加大了設(shè)計成本。
2)系統(tǒng)設(shè)計層次低,系統(tǒng)級設(shè)計依賴于手工,設(shè)計的大規(guī)模超出了設(shè)計人員的能力,系統(tǒng)的軟硬件的開發(fā)流程缺少溝通與協(xié)調(diào),導(dǎo)致設(shè)計效率的降低。
3)對于定制的嵌入式處理器不支持,嵌入式處理器為固定的模塊,不支持設(shè)計的可重用。
因為傳統(tǒng)的嵌入式系統(tǒng)設(shè)計方法的這些缺點,人們開始探索新的設(shè)計方法來適應(yīng)高速發(fā)展的嵌入式系統(tǒng),這種方法就是軟硬件協(xié)同設(shè)計方法。它早在1993年就已經(jīng)成為嵌入式系統(tǒng)中系統(tǒng)級設(shè)計領(lǐng)域的研究方向和熱點。
軟硬件協(xié)同設(shè)計方法的特點如下[2-3]:
1)軟硬件協(xié)同設(shè)計技術(shù)采用并行設(shè)計和協(xié)同設(shè)計的思想,使得設(shè)計開發(fā)周期縮短,設(shè)計效率大大提高。
2)軟硬件協(xié)同設(shè)計采用了統(tǒng)一工具和表示方法,對軟硬件合理進行劃分,合理分配系統(tǒng)功能,對成本、性能、功耗等各個方面進行權(quán)衡,盡可能得到最優(yōu)化的設(shè)計。
3)軟硬件協(xié)同設(shè)計采用軟硬件協(xié)同仿真的方法,對整個系統(tǒng)進行全局的設(shè)計驗證。
軟硬件協(xié)同設(shè)計對于設(shè)計的抽象層次有了很大的提高,而且拓寬了設(shè)計的覆蓋范圍,它可以使嵌入式系統(tǒng)的設(shè)計效率更高,速度更快。軟硬件協(xié)同設(shè)計是一種新的設(shè)計方法和思想,它不僅僅是一種設(shè)計技術(shù),它是要把軟件和硬件的設(shè)計聯(lián)系起來,以免這兩部分設(shè)計過早的獨立起來。軟硬件協(xié)同設(shè)計技術(shù)現(xiàn)在正處于發(fā)展階段,有很多理論還不成熟,然而這種技術(shù)極大地提高了嵌入式系統(tǒng)的設(shè)計效率,有很大的研究價值和社會意義。
嵌入式系統(tǒng)設(shè)計的主要任務(wù)包括:系統(tǒng)任務(wù)描述,系統(tǒng)建模,用來實現(xiàn)系統(tǒng)的功能需求;對系統(tǒng)進行適當?shù)能浻布澐?,用以滿足性能要求、降低成本和功耗;系統(tǒng)的協(xié)同綜合和對系統(tǒng)實現(xiàn)及規(guī)范性進行仿真。軟硬件協(xié)同設(shè)計的目的是使系統(tǒng)的各影響因素之間可以相互協(xié)調(diào)地完成系統(tǒng)功能。軟硬件協(xié)同設(shè)計基本流程如圖 2 所示。
要想設(shè)計一個SOPC系統(tǒng),第一步是要明確系統(tǒng)的需求,也就是系統(tǒng)的性能和要實現(xiàn)的功能,接下來是對系統(tǒng)進行建模。SOPC系統(tǒng)的模型主要有有限狀態(tài)機模型、數(shù)據(jù)流圖模型、任務(wù)流圖模型、離散事件模型、Petri網(wǎng)模型等。建立一個對軟硬件通用的系統(tǒng)功能描述方法,來解決系統(tǒng)的統(tǒng)一描述問題,目前通常情況下是采用系統(tǒng)描述語言的方式。這樣在軟硬件劃分后,才能編譯并映射成硬件描述語言和軟件實現(xiàn)語言,為系統(tǒng)的軟硬件協(xié)同工作提供有力的保證。
圖2 嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計基本流程
在傳統(tǒng)的嵌入式設(shè)計方法中,軟件和硬件的開發(fā)過程是割裂開的,它們之間缺乏溝通。這樣就使得系統(tǒng)的設(shè)計效率很低。針對這一缺點,提出軟硬件協(xié)同設(shè)計的方法,這種方法中軟硬件系統(tǒng)的劃分是軟硬件協(xié)同設(shè)計中關(guān)鍵的步驟之一。系統(tǒng)中硬件實現(xiàn)部分對系統(tǒng)的性能有決定作用,通常硬件實現(xiàn)部分速度較快,但是成本控制在這部分也起著決定性的作用。系統(tǒng)中軟件實現(xiàn)部分通常具有很大的靈活性,決定著系統(tǒng)配置的靈活性,但是要占用一定的FPGA邏輯單元和耗費一定的時間。如表1所示。表1指出了系統(tǒng)是由硬件實現(xiàn)還是軟件實現(xiàn)對芯片面積、功耗、性能和人力與時間資源需求的影響,合理的軟硬件協(xié)同設(shè)計方案,對嵌入式系統(tǒng)的設(shè)計有很重要的作用。軟硬件的合理劃分,在滿足系統(tǒng)功能的基礎(chǔ)上,能夠充分發(fā)揮硬件處理的快速和軟件控制靈活的特點。
表1 軟硬件設(shè)計對系統(tǒng)的影響因素
軟硬件劃分的結(jié)果追求的是提高系統(tǒng)運行速度、減小面積、降低成本、減少功耗。但軟硬件劃分通常是一個傳統(tǒng)的難題,由于劃分問題本身就具有很大的難度,而且SOPC具有巨大的搜索空間,所以情況更加嚴峻?,F(xiàn)如今自動劃分算法仍然不能取代有經(jīng)驗的設(shè)計者。劃分的方法基本上從兩個方面入手:一是面向軟件,從軟件到硬件要求滿足時序的特點; 二是面向硬件,從硬件到軟件要求降低成本。在進行劃分時,要考慮整個目標系統(tǒng)的體系結(jié)構(gòu)、粒度、軟硬件實現(xiàn)的成本等各個因素。劃分完成后,產(chǎn)生軟硬件系統(tǒng)的分割的界面,提供給軟硬件進行溝通、驗證和測試使用。常用的軟硬件協(xié)同劃分算法有模擬退火算法、遺傳算法等。遺傳算法和模擬退火算法的互補性比較好,將這兩種算法相結(jié)合而形成的遺傳退火算法將繼承這兩者的優(yōu)點,在軟硬件劃分上的效能很好,現(xiàn)在這種智能算法是軟硬件劃分算法領(lǐng)域的一個研究熱點[4]。
軟硬件劃分完成以后,分別進行軟件系統(tǒng)和硬件系統(tǒng)的設(shè)計實現(xiàn)。對劃分完成的系統(tǒng)進行設(shè)計的階段叫做綜合。這個步驟的主要任務(wù)是將劃分完成的系統(tǒng)的描述轉(zhuǎn)換成為可以綜合的硬件描述和可以編譯的軟件程序。構(gòu)建包含軟件和硬件的實現(xiàn)結(jié)構(gòu)描述的設(shè)計轉(zhuǎn)換過程。比如說劃分后的描述可以翻譯成為Verilog HDL(硬件模塊)和C(軟件模塊)。軟硬件協(xié)同綜合包含以下三個步驟:
1)處理單元分配,決定嵌入式系統(tǒng)由哪些處理器、DSP及專用硬件等體系結(jié)構(gòu)級別的單元組成;
2)任務(wù)指派,決定系統(tǒng)當中哪些功能由硬件處理單元實現(xiàn),哪些功能由處理器用軟件來實現(xiàn);
3)任務(wù)調(diào)度,決定分配給每個處理單元上任務(wù)的開始時間和執(zhí)行順序。
軟硬件協(xié)同仿真驗證是對整個系統(tǒng)設(shè)計的正確性和性能指標確定的一個評估階段。在嵌入式系統(tǒng)設(shè)計的各個階段,可以把仿真驗證分為系統(tǒng)級仿真、行為級仿真、寄存器傳輸級(RTL 級)仿真和門級仿真。系統(tǒng)級仿真一般情況下用來評估系統(tǒng)的整體功能和對算法的正確性的驗證;行為級仿真可以對所設(shè)計的邏輯進行仿真,但不會考慮目標器件的特性,比如容量,延遲等,行為級仿真可以使用高級的語句,比如報錯語句、文件讀寫語句、浮點格式等,但這些語句通常都是不能在目標器件中實現(xiàn)的;寄存器傳輸級仿真檢查各模塊的邏輯功能是否正確,然后,將通過仿真的各模塊集成在一起,對整個系統(tǒng)進行功能仿真,這一階段的仿真沒有包括硬件電路的時間信息,因此,只能從邏輯功能方面對設(shè)計進行驗證;門級仿真是將使用綜合軟件綜合后生成的門級網(wǎng)表或者是實現(xiàn)后生成的門級模型進行仿真,不加入時延文件的仿真。
典型的軟硬件協(xié)同仿真一般是在CPLD或FPGA的 開發(fā)環(huán)境下,在Quartus II下運行。系統(tǒng)如果采用的 IP 核等一些資源已經(jīng)進行了單獨的驗證,則對它的門級或者RTL級的仿真驗證可以省略。
Quartus II是最近幾年由Altera公司推出的一套用于PLD(programmable logic device) /FPGA器件開發(fā)綜合性的集成良好的開發(fā)環(huán)境。用來完成系統(tǒng)的輸入(原理圖、VHDL、VerilogHDL和AHDL(Altera Hardware Description Language))、綜合、布局布線、仿真、編程等完整的PLD設(shè)計流程。該軟件使用方便,一直保持PLD 器件領(lǐng)域的性能上的領(lǐng)導(dǎo)地位。
SOPC Builde是在Quartus II中可以快速建立、開發(fā)及維護系統(tǒng)的一個強大的SOPC設(shè)計平臺,用來構(gòu)建基于總線的系統(tǒng),它集成在Quartus II的所有版本當中。這個系統(tǒng)包含了一些模塊,比如Nios II處理器、存儲器、DSP、總線等IP核,SOPC Builde可以自動地生成片上Avalon總線和總線仲裁器等一些所需的邏輯,以便將微處理器核、外圍設(shè)備、存儲器和其它IP核相互連接起來。 SOPC Builde提高了設(shè)計集成度和可重用性,提高了FPGA設(shè)計人員的工作效率。
NIOS II IDE(NIOS Integrated Develop Environment) 是Altera公司所提供的專門用來開發(fā)SOPC的一套集成開發(fā)環(huán)境,所有的軟件開發(fā)任務(wù)都可以在此環(huán)境下來完成,這些功能包括對代碼進行編輯、編譯、連接、調(diào)試和下載等一些功能。NIOS II IDE還提供了一個統(tǒng)一的用于所有的NIOS II處理器系統(tǒng)的開發(fā)平臺。NIOS II IDE還集成了許多軟件組件,比如RTOS(Real-time operating system)、LWIP(Light Weight Intellectual Property)等軟件組件,并且提供了圖形化的參數(shù)編輯方式。因此基于這個平臺可以很方便地進行SOPC應(yīng)用軟件的設(shè)計。
第一個為IP復(fù)用所設(shè)計的工業(yè)系統(tǒng)級HW/SW co-design開發(fā)平臺環(huán)境。在設(shè)計的早期就可以確定軟硬件劃分的臨界體系結(jié)構(gòu)。通過電子供給鏈進行交換設(shè)計信息,為SOPC和系統(tǒng)庫提供必要的框架。
一種能夠支持系統(tǒng)級軟件和硬件協(xié)同設(shè)計仿真和驗證,基于C/C++的通過類的對象擴展的建模平臺,以C++為基礎(chǔ)的新型的建模方法,方便IP 交換和系統(tǒng)級設(shè)計。在這種語言描述中,進程是最基本的構(gòu)造塊。System C的源代碼可以用來綜合硬件,可以把它寫的硬件描述綜合成為門級網(wǎng)表,以便于IC(integrated circuit)實現(xiàn),或者綜合成一個Verilog HDL或VHDL的RTL的描述,以便于FPGA綜合。用System C開發(fā)的硬件模型可以用標準的C++編譯器來編譯,經(jīng)編譯后形成一個可執(zhí)行的應(yīng)用程序,設(shè)計人員可以通過console來觀察系統(tǒng)的行為,驗證系統(tǒng)的功能和結(jié)構(gòu)。
基于SOPC的軟硬件協(xié)同設(shè)計方法能夠在宏觀上把握復(fù)雜系統(tǒng),克服了傳統(tǒng)設(shè)計方法存在的缺點,能夠充分挖掘軟件和硬件之間的協(xié)同性,對系統(tǒng)的軟硬件進行正確劃分,并能夠選取合適的IP,建立系統(tǒng)的設(shè)計平臺和驗證平臺,推動軟件和硬件的并行研發(fā),降低設(shè)計風險,縮短開發(fā)周期,在嵌入式系統(tǒng)的設(shè)計中發(fā)揮著重要的作用。隨著邏輯設(shè)計和EDA工具的支持,基于SOPC的軟硬件協(xié)同設(shè)計技術(shù)在嵌入式應(yīng)用系統(tǒng)的設(shè)計中發(fā)揮越來越重要的作用,將是今后 IP-SOPC 設(shè)計領(lǐng)域中的最核心技術(shù)。
[參考文獻]
[1] 徐海濤. 基于SOPC的軟硬件劃分算法研究[D].哈爾濱:哈爾濱理工大學碩士學位論文, 2009.
[2] Y.B. Li,T. Callahan. Hardware-software co-design of embedded reconfigurable architectures[C].Proceedings of the 37th Annual Design Automation Conferenc, 2000:507-512.
[3] J. Schlessman, C.Y. Chen, W. Wolf,et al. Hardware/Software Co-Design of an FPGA-based Embedded Tracking System[J].Computer Vision and Pattern Recognition Workshop, 2006,123:17-22.
[4] G. Stitt , R. Lusecky , F. Vahid.Dynamic Hardware/Software Partitioning[M].California: Anaheim, 2003:20-25.
[5] 韓璽.SOPC軟硬件協(xié)同設(shè)計的方法研究[D].北京:北京交通大學碩士學位論文, 2006.