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