1 基于SOPC軟硬件協(xié)同設(shè)計方法
SOPC設(shè)計技術(shù)實際上涵蓋了嵌入式系統(tǒng)設(shè)計技術(shù)的全部內(nèi)容,除了以處理器和實時多任務(wù)操作系統(tǒng)RTOS為中心的軟件設(shè)計、以PCB和信號完整性分析為基礎(chǔ)的高速電路設(shè)計技術(shù)以外,SOPC還涉及目前已經(jīng)引起普遍關(guān)注的軟硬件協(xié)同技術(shù)。
1.1 軟硬件協(xié)同設(shè)計模型
目前的軟硬件協(xié)同設(shè)計是指軟硬件的設(shè)計同時進行,在系統(tǒng)的初期階段兩者就緊密相連。軟硬件協(xié)同設(shè)計不僅是一種設(shè)計技術(shù),同時也是一種新的設(shè)計方法和思想,它的核心問題是溝通軟件設(shè)計和硬件設(shè)計,避免系統(tǒng)中關(guān)系密切的兩部分設(shè)計過早獨立。同傳統(tǒng)設(shè)計方法相比,軟硬件協(xié)同設(shè)計提高了設(shè)計抽象的層次,并拓展了設(shè)計的覆蓋范圍。采用軟硬件協(xié)同設(shè)計技術(shù)可以使嵌入式系統(tǒng)設(shè)計更好和更快。
軟硬件協(xié)同設(shè)計在其研究和生產(chǎn)實踐過程中,提出了很多的設(shè)計模型。這些模型都是把系統(tǒng)功能轉(zhuǎn)換成組織結(jié)構(gòu),將抽象的功能描述模型轉(zhuǎn)換成組織結(jié)構(gòu)模型。由于針對一個系統(tǒng)可以建立多種模型,因此應(yīng)根據(jù)系統(tǒng)的仿真和先前的經(jīng)驗來選擇模型。
軟硬件協(xié)同設(shè)計流程從目標(biāo)系統(tǒng)構(gòu)思開始。對一個給定的目標(biāo)系統(tǒng),經(jīng)過構(gòu)思,完成該系統(tǒng)的規(guī)范描述,然后是模塊的行為描述、對模塊的有效性檢查、軟硬件劃分、性能評估、硬件綜合、軟件編譯、軟硬件集成、軟硬件協(xié)同仿真與驗證等各個階段。其中軟硬件劃分后產(chǎn)生硬件部分、軟件部分和軟硬件接口3個部分。硬件部分遵循軟件描述、軟件生成和參數(shù)化的步驟,生成軟件模塊,最后把生成的軟硬件模塊和軟硬件接口集成,并進行軟硬件協(xié)同仿真,以進行系統(tǒng)評估和設(shè)計驗證。圖1給出了一個軟硬件協(xié)同設(shè)計流程。
圖中對軟硬件設(shè)計流程中每個子過程進行了簡單的描述。確定說明文檔之后,先建立高級算法模型,然后再考慮軟硬件的劃分,這樣可以更好地分析算法的實現(xiàn)方法,比如是用硬件實現(xiàn)還是用軟件實現(xiàn)等。
1.2 軟硬件任務(wù)劃分和軟硬件接口
系統(tǒng)模型是對系統(tǒng)初步的粗粒度劃分。依據(jù)這個粗粒度的劃分,有助于第一次軟硬件任務(wù)分配。在進行軟硬件劃分時,需要將系統(tǒng)需求根據(jù)設(shè)計目標(biāo)和設(shè)計約束,分解出硬件的功能需求和非功能需求,以及軟件的功能需求和非功能需求,并進一步細化硬件需求及軟件需求。
進行軟硬件劃分是協(xié)同設(shè)計的重心,劃分的合理與否,將直接影響到后續(xù)的設(shè)計與開發(fā)。設(shè)計者要從系統(tǒng)的角度,將軟硬件完成的功能作均衡,以想要達到的目標(biāo)為設(shè)計標(biāo)準(zhǔn)。在系統(tǒng)的復(fù)雜度一定時,使軟硬件結(jié)合,達到更高的性能。軟硬件劃分好以后,軟件和硬件的設(shè)計一直是保持并行的,在設(shè)計過程中兩者交織在一起,互相支持,互相提供開發(fā)的平臺。
軟硬件的劃分不是簡單地將功能分解,在進行軟硬件任務(wù)分配時已經(jīng)在進行系統(tǒng)的架構(gòu)設(shè)計。其中,非常重要的部分是軟硬件的接口設(shè)計。嵌入式系統(tǒng)的軟硬件接口,從基本的寄存器到高級的系統(tǒng)接口都非常重要。在軟硬件任務(wù)分配時,主要考慮系統(tǒng)的軟件與硬件之間的接口,以及那些影響最終軟硬件集成、調(diào)試的軟硬件接口。
2 系統(tǒng)硬件設(shè)計
整個系統(tǒng)的設(shè)計可以分為兩個部分:第一部分是硬件平臺的設(shè)計,即可用以運行整個系統(tǒng)的硬件部分,包含了主芯片、外設(shè)芯片以及它們之間的互聯(lián);第二部分是根據(jù)系統(tǒng)設(shè)計需求來定制硬件系統(tǒng),即設(shè)計處理器軟核和相關(guān)外設(shè)的控制邏輯,完成系統(tǒng)的定制。第一部分的工作是后面工作的基礎(chǔ)。
本設(shè)計中的SOPC開發(fā)平臺系統(tǒng)結(jié)構(gòu)如圖2所示,開發(fā)板的PCB版圖設(shè)計利用Altium Designer工具完成。軟硬件接口設(shè)計的主要任務(wù)是基于基本指令集完成驅(qū)動程序的編寫工作。驅(qū)動程序是硬件組件與軟件組件之間的橋梁。軟硬件接口的另一個重要工作是進行硬件初始化。初始化代碼是處理器從復(fù)位狀態(tài)進入操作系統(tǒng)能夠運行的狀態(tài),也就是在把控制權(quán)交給操作系統(tǒng)或應(yīng)用程序之前硬件和底層軟件(驅(qū)動)必須做的一些工作。
下面詳細說明平臺中重要的電源電路、Flash接口電路、SDRAM接口電路設(shè)計,其他部分電路可參考相應(yīng)資料。
2.1 FPGA EP1C6Q
目前大部分Altera公司的FPGA均支持NiosIICPU,而Cyclone系列器件是當(dāng)前世界上成本最低的FPGA芯片之一,因此本設(shè)計中的核心芯片采用Cyclone EP1C6,具有9800個邏輯單元,92Kb的RAM資源,提供兩個全功能的鎖相環(huán)(PLL)。I/O接口185個,還支持LVDS、DDR等傳輸接口。它的配置使用最新型的AS配置方式,配置芯片是EPCS4(Flash結(jié)構(gòu),4Mb)。
2.2 電源電路設(shè)計
本設(shè)計采用了可調(diào)三端穩(wěn)壓器LM1117T-ADJ,可以將電壓進行線性轉(zhuǎn)換,電流為800 mA,3引腳的T0200封裝。Cyclone系列FPGA上電的最大電流為300mA,該芯片可以滿足要求。LM1117需要在輸出與地之間接入電容以維持內(nèi)部電路的穩(wěn)定,輸入與地之間也需要接入電容對輸入信號進行濾波。具體的連接如圖3所示。
2.3 Flash接口電路設(shè)計
Flash即閃速存儲器,是一種在系統(tǒng)可電擦寫的存儲器。作為一種非易失性存儲器,F(xiàn)lash主要有兩個功能,一部分用來存儲數(shù)據(jù),另一部分存儲專用程序。
由于不同廠家的Flash的擦寫時序往往不同,Niosll只支持部分常用的Flash,對于不支持的Flash類型,需要NiosII系統(tǒng)設(shè)計人員自己完成相關(guān)Flash擦寫子程序的編寫。本平臺采用的AM29LV065 Flash存儲器。采用48腳TSOP封裝,8位數(shù)據(jù)寬度,工作電壓為2.7~3.6V,讀寫操作都較一般Flash省電,僅需要單3 V電壓即可完成在系統(tǒng)編程與擦除操作。
Flash選用的是22×8,即地址總線為22位,數(shù)據(jù)總線為8位,其連接關(guān)系如圖4所示。
2.4 SDRAM接口電路設(shè)計
與Flash存儲器不同,SDRAM不具有掉電保護數(shù)據(jù)的特性,但其操作都是由時鐘作為同步??梢詫⑵淅斫鉃橐粋€電容,總是傾向于放電,為避免數(shù)據(jù)丟失,必須定時刷新(充電)。因此,要在系統(tǒng)中使用SDRAM,就要求微處理器具有刷新控制邏輯,或在系統(tǒng)中加入刷新控制邏輯電路。
在NiosII系統(tǒng)中,SDRAM主要用于存放運行程序和數(shù)據(jù),并且其運行速度比Flash快很多。所以在SOPC系統(tǒng)中,當(dāng)系統(tǒng)啟動后,NiosII CPU首先從復(fù)位地址0x0處讀取啟動代碼,在完成系統(tǒng)的初始化后,程序代碼一般應(yīng)調(diào)入SDRAM中運行,以提高系統(tǒng)的運行速度。平臺使用的是hynix57V641620HGT,其存儲容量為4Bank×1M×16位(64 Mb)。SDRAM與總線的連接關(guān)系如圖5所示,其刷新頻率是靠FPGA內(nèi)的PLL經(jīng)過相移來提供。
3 SOPC系統(tǒng)結(jié)構(gòu)
SOPC Builder是一個能夠生成復(fù)雜硬件系統(tǒng)的工具,將軟硬件的設(shè)計結(jié)合起來,提供給客戶一個很好的開發(fā)環(huán)境。利用SOPC Builder可以將Nios CPU和其他應(yīng)用模塊嵌入到FPGA內(nèi)部,實現(xiàn)一個可重構(gòu)的嵌入式系統(tǒng),其中Nios CPU是整個系統(tǒng)的核心。圖6是典型Nios系統(tǒng)的框圖,其中片內(nèi)邏輯是指實現(xiàn)在FPGA內(nèi)部的電路設(shè)計,系統(tǒng)模塊指的是由SOPC Builder自動生成的設(shè)計。SOPC Builder會根據(jù)用戶選擇的IP生成相應(yīng)的HDL描述文件(系統(tǒng)模塊文件),這些文件與用戶邏輯區(qū)域內(nèi)的設(shè)計描述文件一起由QuartusII軟件綜合,然后下載到FPGA內(nèi),這樣就構(gòu)成了系統(tǒng)的硬件基礎(chǔ)。
如圖7所示,采用NiosII單處理器,多個特定功能專用IP核的系統(tǒng)體系結(jié)構(gòu),軟件部分由處理器進行,而硬件部分功能由下載到FPGA上的IP核實現(xiàn)。硬件之間的通信以及與處理器的通信由Altera公司定義的Avalon片內(nèi)總線實現(xiàn),而硬件和軟件之間的通信則是通過由IDE根據(jù)硬件系統(tǒng)生成的硬件抽象層HAL來實現(xiàn)的。
4 總結(jié)
嵌入式技術(shù)發(fā)展之迅速,嵌入式市場前景之廣闊,使嵌入式教學(xué)和研發(fā)成為當(dāng)今熱點。近年來FPGA技術(shù)的飛速發(fā)展,各大FPGA廠商也相繼推出針對SOPC開發(fā)的各種功能強大的開發(fā)套件,這使得FPGA在嵌入式系統(tǒng)設(shè)計中相對于傳統(tǒng)的ASIC器件具有設(shè)計靈活、功能強大、一次性投入低、設(shè)計周期短等優(yōu)勢,在嵌入式系統(tǒng)設(shè)計中得到越來越廣泛的應(yīng)用。無論是嵌入式教學(xué)實驗還是企業(yè)產(chǎn)品研發(fā),嵌入式系統(tǒng)實驗開發(fā)平臺都具有很高的使用價值,其開發(fā)具有現(xiàn)實意義和社會經(jīng)濟價值。