摘要:針對當(dāng)前傳統(tǒng)的嵌入式開發(fā)方法不能滿足嵌入式應(yīng)用需求的這一現(xiàn)狀,介紹一種新的嵌入式開發(fā)方法SOPC。對當(dāng)前基于FPGA嵌入IP硬、軟核的SOPC系統(tǒng)進行全面的分析與研究,系統(tǒng)的闡述了嵌入式SOPC的開發(fā)流程,并對嵌入式SOPC硬件開發(fā)和軟件開發(fā)的關(guān)鍵問題進行了詳敘,最后通過一個簡單LED實例,深入的分析了嵌入式SOPC開發(fā)的全過程。
關(guān)鍵詞:嵌入式;片上系統(tǒng);SOPC;NIOS II核
中圖分類號:TP311文獻標(biāo)識碼:A 文章編號:1009-3044(2008)30-0738-02
The Application and Research of Embedded SOPC
QU Xiao-ping,GAO Ning
(Information Science and Technology College, Jiujiang University, Jiujiang 332005,China)
Abstract: Since the raditional means can not meet the current application requirements of embedded systems, a new development method for SOPC is discussed. A complete analysis and research of SOPC with embedded IP hardcor/softcore, which is based on FPGA, is carried out, and the development flow of embedded SOPC is systematically decribed, as well as the critical questions during hardware/software development is discussed in detail. Finally the full development progress of embedded SOPC is explained in detail with an LED as an example.
Key words: embedded; system on chip; SOPC; NIOS II Core
1 引言
隨著信息化技術(shù)的發(fā)展和數(shù)字化產(chǎn)品的普及,大規(guī)模集成電路技術(shù)的進步和制造工藝水平的提高,以計算機技術(shù)、芯片技術(shù)和軟件技術(shù)為核心的嵌入式系統(tǒng)開發(fā)變得日益復(fù)雜。傳統(tǒng)的嵌入式系統(tǒng)設(shè)計方法已經(jīng)不能適應(yīng)當(dāng)前嵌入式系統(tǒng)的單片容量大、功能多、體積小、設(shè)計便利等需求。本文主要闡述一種全新的、靈活的、高效的嵌入式系統(tǒng)設(shè)計方法SOPC(System On Progranmable Chip,可編程的片上系統(tǒng)),它是基于FPGA解決方案的SOC,它將處理器、存儲器、I/O口、LVDS、CDR等系統(tǒng)設(shè)計需要的功能模塊集成到一個可編程的器件上,構(gòu)成一個可編程的片上系統(tǒng)。
2 嵌入式SOPC概述
SOPC(System On Progranmable Chip,可編程的片上系統(tǒng))是Altera公司提出的一種靈活高效的SOC的解決方案,它是PLD和ASIC技術(shù)融合的結(jié)果,目前,0.13um的ASIC產(chǎn)品制造價格仍然相當(dāng)昂貴,而集成了硬核和軟核CPU、DSP、存儲器、I/O設(shè)備和可編程邏輯的SOPC芯片在應(yīng)用靈活性上和價格上有相當(dāng)大的優(yōu)勢。現(xiàn)今,普遍認為SOPC是基于FPGA解決方案的SOC,與ASIC的SOC解決方案相比,SOPC系統(tǒng)及其開發(fā)技術(shù)具有更多的特色,構(gòu)成SOPC的方案也有多種途徑。
2.1 基于FPAG嵌入IP硬核的SOPC系統(tǒng)的優(yōu)點[2]
基于FPGA嵌入IP硬核的SOPC系統(tǒng)是指在FPGA中預(yù)先移入處理器。目前最常用的嵌入式處理器大多是采用含有ARM32位知識產(chǎn)權(quán)處理器核的器件。為了達到通用性,必須為常規(guī)的嵌入式處理器集成諸多通用和專用的接口,但這樣無疑會增加芯片的成本和功耗。如果將ARM或其他處理器核以硬核方式植入FPGA中,利用FPGA中的可編程邏輯資源,可按照系統(tǒng)功能需求來添加接口功能模塊,這樣既能實現(xiàn)目標(biāo)系統(tǒng)的功能,又能降低系統(tǒng)的成本和功耗。這樣就能使得FPGA靈活的硬件設(shè)計與處理器的強大軟件功能有機的結(jié)合在一起,高率的實現(xiàn)SOPC系統(tǒng)。
2.2 基于FPGA嵌入IP硬核的SOPC系統(tǒng)缺點[2,3]
將IP硬核直接植入FPGA的解決方案存在以下幾種不足:
1)由于此類硬核多來自第三方公司,F(xiàn)PGA廠商通常無法直接控制其知識產(chǎn)權(quán)費用,從而導(dǎo)致FPGA器件價格相對偏高。2)由于硬核是預(yù)先植入的,設(shè)計者無法根據(jù)實際需要改變處理器的結(jié)構(gòu),如總線規(guī)模、接口方式、指令形式、更不可能將FPGA邏輯資源構(gòu)成的硬件模塊以指令的形式嵌入硬件加速模塊。3)無法根據(jù)實際設(shè)計需要在同一FPGA中集成多個處理器。4)無法根據(jù)需要裁減處理器硬件資源以降低FPGA成本。5)只能在特定的FPGA中使用硬核嵌入式處理器。
2.3 基于FPGA嵌入IP軟核的SOPC系統(tǒng)
為了解決基于FPGA嵌入IP硬核的SOPC系統(tǒng)存在的問題。人們設(shè)計了基于FPGA嵌入IP軟核的SOPC系統(tǒng)。目前最具有代表性的軟核處理器Altera公司的NIOSII核。
3 嵌入式SOPC應(yīng)用開發(fā)
3.1 嵌入式SOPC應(yīng)用開發(fā)流程簡介[3]
1)分析系統(tǒng)需求。2)建立Quartus II工程,建立頂層圖*.bdf。3)打開SOPC Builder定義和生成系統(tǒng)(使用NIOSII內(nèi)核標(biāo)準(zhǔn)外設(shè)和定制指令定制外設(shè)邏輯)。說明:(4.1-4.7)硬件開發(fā)4.1)集成SOPC生成的系統(tǒng)到Quartus II工程(自定義的功能模塊和Altera的LPM模塊)。4.2)連接各功能模塊。4.3)選擇FPGA型號,并進行管腳分配。4.5)進行編譯選項設(shè)置。4.6)編譯硬件系統(tǒng)生成配置文件.sof。4.7)下載配置文件到到FPGA器件。說明:(5.1-5.4)軟件開發(fā)。
5.1)使用NIOSII IDE開發(fā)軟件(硬件抽象層(HAL)外設(shè)驅(qū)動程序和用戶C/C++應(yīng)用程序代碼和定制的庫)。
5.2)設(shè)置軟件運行硬件環(huán)境屬性。
5.3)編譯軟件生成可執(zhí)行文件.elf。
5.4)在IDE中使用ISS運行/調(diào)式軟件。
6)在目標(biāo)板上下載可執(zhí)行軟件到NIOS II系統(tǒng)。
7)在目標(biāo)板上運行/調(diào)試軟件。
8)調(diào)式好的硬件和軟件。
9)使用IDE編程工具燒寫配置文件和軟件代碼。
3.2 硬件開發(fā)[2,4]
硬件開發(fā)使用Quartus II和SOPC Builder。硬件設(shè)計過程如下:
首先,使用SOPC Builder軟件從NIOS II處理器內(nèi)核和NIOS II開發(fā)套件提供的外設(shè)列表中選取合適的CPU、存儲器以及各外部器件并定制和配置它們的功能,分配外設(shè)地址及中斷號;設(shè)定復(fù)位地址;最后生成系統(tǒng)。用戶也可以添加用戶自身的定制指令邏輯到NIOS II內(nèi)核以加速CPU性能,或添加用戶外設(shè)以減輕CPU的任務(wù)。
其次,使用SOPC Builder生成NIOS II 系統(tǒng)后,將其集成到整個QuartusII工程中??梢栽赒uartusII工程中加入NIOS II 以外的邏輯,大多數(shù)的SOPC設(shè)計都包括NIOS II系統(tǒng)以外的邏輯,這也是SOPC系統(tǒng)的優(yōu)勢所在。用戶可以集成自身的定制的硬件模塊到SOPC設(shè)計,或集成從Altera或第3方IP供應(yīng)商中得到的其它現(xiàn)成知識產(chǎn)權(quán)設(shè)計模塊。
再次,使用QuartusII軟件來選取具體的Altera FPGA器件型號;然后為NIOS II系統(tǒng)上的各I/O口分配管腳,另外,還要根據(jù)要求進行硬件編譯選項或時序約束的設(shè)置;最后編譯QuartusII工程,在編譯過程中QuartusII將對SOPC Builder生成系統(tǒng)的HDL設(shè)計文件進行布局布線,從HDL源文件綜合生成一個合適目標(biāo)器件的網(wǎng)絡(luò)表,生成FPGA配置文件。
最后,使用QuartusII編程器和Altera下載電纜將配置文件(用戶定制的NIOS II 處理器系統(tǒng)的硬件設(shè)計)下載到目標(biāo)板上。當(dāng)校驗完當(dāng)前硬件設(shè)計后,可將新的配置文件下載到目標(biāo)板的非易失存儲器中。下載萬硬件配置文件后,軟件開發(fā)者就可以將此目標(biāo)板作為軟件開發(fā)的初期硬件平臺進行軟件功能的開發(fā)驗證了。
3.3 軟件開發(fā)[2,4]
軟件開發(fā)使用NIOS II IDE,它是一個基于Eclipse IED架構(gòu)的集成開發(fā)環(huán)境,它包括:
GUN開發(fā)工具(標(biāo)準(zhǔn)的GCC編譯器,連接器,匯編器和Makefile工具等);
基于GDB的調(diào)試器,包括軟件仿真和硬件調(diào)試;
提供用戶一個硬件抽象層;
提供嵌入式操作系統(tǒng)MicroC/OS-II和LwTCP/IP協(xié)議的支持;
提供幫助用戶快似入門的軟件模板;
提供Flash下載支持;
使用NIOSII IDE,可完成NIOSII處理器系統(tǒng)的所有軟件開發(fā)任務(wù)。使用SOPC Builder 生成系統(tǒng)后,可以直接使用NIOSII IDE開始設(shè)計C/C++應(yīng)用程序代碼。Altera提供外設(shè)驅(qū)動程序和硬件抽象層(HAL),使用戶能夠快速的編寫與低級硬件細節(jié)無關(guān)的NIOSII程序。除了應(yīng)用代碼外,用戶還可以在NIOSII IDE工程中設(shè)計和重新使用定制庫。
用戶在沒有目標(biāo)板的情況下,可以通過NIOSII指令集仿真器(ISS)運行和調(diào)試代碼。ISS可以仿真處理器、存儲器、stdin/stdout/stderr流,使用戶可以檢驗程序流和算法的正確性。
4 嵌入式SOPC的應(yīng)用實例
4.1 任務(wù)
建立一個基于NIOSII處理器的系統(tǒng)來控制一個LED燈閃爍。
4.2 開發(fā)步驟[5]
4.3.1 分析系統(tǒng)需求
本應(yīng)用實例的開發(fā)任務(wù)是:
1)展示可用于控制LED閃爍的簡單NIOSII處理器系統(tǒng);2)利用最通用的最有效的方法來建立實際的頂制NIOSII;3)整個系統(tǒng)僅使用片內(nèi)資源,且不依賴于目標(biāo)板。
分析任務(wù)可以知道FPGA內(nèi)硬件系統(tǒng)組成應(yīng)包含:
1)帶有2KB指令高速緩存的NIOSII/S處理器核;2)帶有1KB片內(nèi)ROM存儲器用于存儲程序代碼以及程序運行空間;3)帶有1KB片內(nèi)RAM存儲器用于變量存儲、Heap、stack;3有一位輸出I/O(PIO)來控制LED;4)系統(tǒng)識別外圍設(shè)備(SystemID)。
說明:由于控制LED燈閃爍的用戶程序代碼很小,所以可將代碼固化在片內(nèi)ROM來執(zhí)行,變量,堆棧燈空間使用片內(nèi)RAM,而不使用任何片外存儲器。使用片內(nèi)存儲器能獲得非常高的執(zhí)行性能。
4.3.2 使用Quartus II建立工程。
1)打開Quartus II軟件并建立工程;2)建立頂層模塊并命名為LED.BDF 。
4.3.3 使用SOPC Builder創(chuàng)建NIOSII系統(tǒng)
1)啟動SOPC Builder;2)指定目標(biāo)FPGA和時鐘設(shè)置;3)添加NIOSII處理器核;4)添加片內(nèi)存儲器;5)添加PIC;6)添加系統(tǒng)ID外觀;7)指定基地址和中斷請求優(yōu)先級;8)設(shè)置NIOSII復(fù)位和異常地址;9)生成NIOSII系統(tǒng)。至此已經(jīng)完成了NIOSII系統(tǒng)的創(chuàng)建。
4.3.4 集成NIOSII系統(tǒng)到到Quartus II工程
1)添加NIOSII系統(tǒng)模塊到NIOSII頂層模塊;2)添加引腳和其他基本單元;3)選擇器件型號;4)分配FPGA管腳;器件和管腳的其他設(shè)置。
4.3.5 設(shè)置編譯選項并編譯硬件系統(tǒng)(下轉(zhuǎn)第755頁)
(上接第739頁)
1)設(shè)置編譯選項;2)編譯硬件系統(tǒng);3)查看編譯報告。
4.3.6 下載硬件設(shè)計到目標(biāo)FPGA
4.3.7 使用NIOSII IDE創(chuàng)建用戶程序
1)創(chuàng)建一個新的C/C++應(yīng)用工程;2)設(shè)置C/C++應(yīng)用工程系統(tǒng)屬性;3)編譯連接工程;
4.3.8 調(diào)試/運行程序
1)在目標(biāo)硬件系統(tǒng)上運行程序;2)在目標(biāo)板上調(diào)試程序;3)經(jīng)過重新編譯硬件系統(tǒng)后,程序?qū)⒅苯舆\行,目標(biāo)板
上的LED將閃爍。
5 小結(jié)
本文主要介紹一種新的嵌入式設(shè)計方法即可編程的片上系統(tǒng)SOPC,通過對當(dāng)前流行的基于FPGA的IP硬核、軟核SOPC系統(tǒng)的分析與研究,拋磚引玉,給目前從事傳統(tǒng)嵌入式開發(fā)人員指明一個方向,并快速入門提供幫助。
參考文獻:
[1] 周立功.SOPC嵌入式系統(tǒng)基礎(chǔ)教程[M].北京航空航天大學(xué)出版社,2006,(11):30-65.
[2] 周立功.SOPC 嵌入式系統(tǒng)實驗教程[M].北京航空航天大學(xué)出版社,2006,(11):103-124.
[3] 邵舒淵.SOPC教程[M].西安:西北工業(yè)大學(xué),2005,(3):132-156.
[4] 潘松.SOPC技術(shù)實用教程[M].北京:清華大學(xué)出版社,2005,(03):102-132.
[5] 張志剛.FPGA與SOPC設(shè)計教DE2實踐[M].西安:西安電子科技大學(xué)出版社,2007,(4):54-72.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文