陳曉靜,吳愛平
(長江大學電子信息學院,湖北 荊州 434023)
?
基于Nios Ⅱ的SOPC實驗教學平臺設計
陳曉靜,吳愛平
(長江大學電子信息學院,湖北 荊州 434023)
提出了以EP4CE30F248N FPGA為核心的SOPC實驗教學平臺設計方案,介紹了平臺的硬件組成和軟件開發工具,以定時中斷為實驗案例介紹了SOPC實驗的具體流程。該平臺由核心板、底板和擴展板組成,可實現的實驗項目包括基本模塊實驗和創新型實驗。其中基本模塊實驗類似于單片機實驗,如定時器、鍵盤、數碼管顯示模塊等,目的是幫助學生理解SOPC系統基本設計方法;創新型實驗項目是將FPGA并行數據處理和Nios Ⅱ處理器靈活控制功能相結合的實驗,如多通道數據采集、高精度頻率計、頻譜儀設計等,旨在幫助學生進一步掌握SOPC系統設計的精髓。該方案既能實現SOPC系統基本模塊的實驗,又能為電子設計競賽和實際項目開發提供創新性平臺,有助于培養學生的SOPC綜合設計能力。
SOPC;Nios Ⅱ;FPGA;實驗教學平臺
SOPC(System On a Programmable Chip)即片上可編程系統,該技術使用FPGA(Field Programmable Gate Array)的邏輯單元以及植入FPGA內部的軟核處理器、存儲模塊和DSP模塊,設計出可裁剪、可擴充、可升級的嵌入式處理系統[1]。該系統不僅具有可編程系統的的靈活性,而且具有高速并行處理數據的能力。近年來,SOPC技術在數據采集、目標跟蹤、電能質量監測等領域得到了廣泛的應用[2~4]。
SOPC系統中的處理器通常有硬核和軟核2種:硬核是指嵌入在可編程芯片內部的具有固定掩模版圖的處理器內核,如ARM內核;軟核是指以硬件描述語言文件的形式存在,需經過編譯下載,最終固化到可編程芯片內部才可使用的處理器內核,如Altera公司推出的Nios Ⅱ嵌入式軟核。雖然硬核的處理性能更高,但由于用戶需支付額外的知識產權的費用,其推廣應用受到限制。相比之下,Nios Ⅱ軟核由Altera公司免費提供,用戶只使用很少的邏輯資源就可獲得一個功能強大的處理器,因此基于Nios Ⅱ軟核的SOPC系統設計具有較大的實際應用價值。
近年來,為了使教學實驗跟上高新技術發展的步伐,許多高校已經把SOPC技術引入到了教學實驗中。文獻[5]提出了基于Nios Ⅱ的SOPC實驗平臺的構建方法,在該平臺上可以實現SOPC系統的基本模塊實驗比如PIO、定時器、中斷等,但是由于FPGA芯片和外圍設備被裝配到同一塊電路板上,系統檢修和升級都不方便。文獻[6]提出了EDA、單片機以及SOPC一體化實驗的模式,硬件平臺由FPGA核心板和功能底板組成,具有擴展靈活、升級方便的優點。但該實驗平臺主要是基于8051單片機IP(Intellectual Property)軟核實現的,因此該實驗系統本質上仍然是單片機實驗,而不是SOPC系統實驗,也沒有利用到Nios Ⅱ軟核的處理優勢。為此,筆者設計了一種基于Nios Ⅱ軟核的新型實驗教學平臺設計方法。

圖1 SOPC實驗教學平臺的設計框圖
根據易擴展、易升級的原則,SOPC實驗教學平臺由核心板、底板和擴展板3部分組成。其中核心板是一個FPGA最小系統,主要包括EP4CE30F248N FPGA芯片、64Mbit的EPCS64配置芯片、4Mbit SRAM存儲器、256MbitSDRAM存儲器、128MbitCFI FLASH存儲器、主動編程AS接口、在系統編程JTAG接口;底板設計能夠滿足基本SOPC實驗模塊的實現,主要包括鍵盤、LED燈、七段數碼管、12864LCD顯示、RS232串口、步進電機驅動、直流電機驅動;擴展板是為擴展底板的功能使其滿足某些創新型實驗而設計,包括多通道數據采集板(板1)、多通道數模轉換板(板2)、USB2.0擴展板(板3)。該平臺的設計框圖如圖1所示,能夠實現的實驗項目及其硬件配置如表1所示。

表1 實驗項目及硬件配置
在上述硬件平臺上,可以完成表1的每個實驗項目的SOPC設計。不同于傳統的嵌入式系統設計方式,SOPC系統是硬件和軟件的協同設計,遵循如圖2所示的流程。硬件設計使用Quartus Ⅱ 11.0和SOPC Builder軟件,其中SOPC Buider可以通過Quartus Ⅱ中子菜單項啟動。Quartus Ⅱ可完成基于Nios Ⅱ軟核處理器的嵌入式系統的綜合、優化、適配、下載和調試等,SOPC Builder可完成Nios Ⅱ系統的配置和生成,允許設計者在很短時間內創建高度定制的可編程片上系統。軟件開發在Nios Ⅱ IDE集成開發環境中進行,該環境提供易用的圖形用戶界面和GCC編譯器,并能根據Nios Ⅱ的硬件配置自動生成硬件抽象層HAL(Hardware Abstraction Layer)以提供底層硬件訪問的驅動程序,并提供實時操作系統和TCP/IP協議棧的支持。從圖2中還可以看出,SOPC設計與FPGA設計的區別在于多了對軟核處理器和外設IP模塊的配置步驟,體現了SOPC設計的可裁剪和可配置特性。

圖2 SOPC設計流程
實驗項目設計中一個關鍵的環節是外設IP模塊的選擇和配置。Nios Ⅱ系統的外設可以分為標準外設和自定義外設。標準外設是由Altera公司所提供的一系列免費使用的外設IP,也是其他微控制器系統中通常會用到的外設,如定時器、串行通信接口、通用I/O口等。自定義外設是指當標準外設不能滿足用戶的需求時,用戶使用可編程邏輯資源自己定義外設集成到Nios Ⅱ系統之中。筆者所提出的實驗項目中基本實驗項目可以選擇標準外設來設計,如流水燈實驗可以選擇PIO內核,定時器中斷使用定時器內核,而創新型實驗項目中沒有現成的外設模塊可以使用,因此需要用戶自定義相應外設,如多通道數據采集和傳輸實驗可以通過設計具有FIFO(First Input First Output,先進先出)存儲結構和Avalon總線接口的外設模塊實現,多通道任意波形發生器實驗需要具有多路波形數字量的輸出和鎖存功能的外設模塊。自定義外設IP設計是SOPC設計的難點,要求學生具有邏輯設計和接口設計的基礎。
為具體說明SOPC實驗設計流程,筆者介紹一個具體的實驗項目實例——定時器中斷實驗。該實驗要求每定時1s,LED燈狀態發生反轉。
1)首先利用Quartus Ⅱ軟件建立一個新的工程以及頂層.bdf文件。頂層文件用于描述Nios Ⅱ系統和LPM模塊(Library of Parameterized Modules,參數化模塊庫)、用戶邏輯設計模塊之間的連接關系。
2)啟動SOPC Builder構建一個Nios Ⅱ系統。從組件庫中選取如下組件:1個Nios Ⅱ處理器、1個片上RAM存儲器、4個PIO內核,1個定時器組件、1個在系統編程JTAG組件、1個EPCS控制器組件,各組件在SOPC Builder中互聯情況如圖3所示。組件加入后需對其屬性進行配置,如Nios Ⅱ處理器選型和復位地址、異常地址的設置,RAM存儲器的容量和數據位寬的設置,PIO內核的數據寬度和數據傳輸方向的設置,定時器Timer組件的計數寬度、初值和預置模式的設置等。組件加入并配置完畢后,進行自動分配地址和中斷,最后點擊generate按鈕產生Nios Ⅱ系統。
3)在頂層文件中加入鎖相環符號niosp Ⅱ和Nios Ⅱ系統符號niosprj,鎖相環可通過MegaWizard Plug-In Manager工具加入,用于對板上晶振50MHz進行倍頻產生Nios Ⅱ系統的100MHz工作時鐘。將鎖相環和Nios Ⅱ系統連接,并進行引腳分配,結果如圖4所示。接下來對Quartus Ⅱ工程進行編譯,編譯成功后生成.sof配置文件和.ptf硬件描述文件。最后利用Programmer工具將.sof配置文件下載到FPGA的RAM中形成SOPC系統的硬件電路部分,至此SOPC系統硬件平臺已經生成。

圖3 SOPC Builder中的組件連接和地址分配

圖4 Quartus Ⅱ工程中的頂層文件
4)啟動Nios Ⅱ IDE集成開發環境,建立新的工程C/C++Application,指定目標硬件為剛生成的ptf文件,并選擇hello world模板;為實現定時中斷控制LED燈反轉,需改寫hello world.c文件代碼:
#include
#include“system.h”#include“altera_avalon_pio_regs.h”
#include“altera_avalon_timer_regs.h”
#include“sys/alt_irq.h”
Void Timer_init();
Void Timer_interrupts(void *context, alt_u32 id);
int i2=0;
Void Timer_init()
{alt_irq_register(TIMER_0_IRQ,0,Timer_interrupts); //中斷注冊函數
IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_BASE,0x0000); //清0定時器狀態
IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_0_BASE,0x5f5);
IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_0_BASE,0x0e100);//定時1s
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0_BASE,0x0007);//啟動連續定時
}
Void Timer_interrupts(void *context, alt_u32 id)//中斷服務函數
{IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_BASE,0); //清0定時器狀態
i2=~i2; //狀態變量取反
i2&=0x01;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE,i2); //狀態變量輸出
}
int main()
{
printf(“Hello from Nios Ⅱ!N”);
Timer_init();
while(1);
return 0;
}
該C文件中包含了標準C頭文件,如輸入輸出頭文件stdio.h,設備地址和中斷號定義頭文件system.h,內核寄存器訪問頭文件altera_avalon_pio_regs.h, altera_avalon_timer_regs.h,中斷頭文件sys/alt_irq.h。這些文件是由Nios Ⅱ IDE對文件進行編譯后自動生成,用戶無需對其進行修改。編譯Nios Ⅱ工程將產生可執行.elf文件,若在用戶應用程序文件夾上點擊右鍵執行run as-Nios Ⅱ Hardware,可以觀察Nios Ⅱ的C程序在目標硬件上全速執行的結果。
實驗表明,不同的實驗項目所遵循的實驗流程大致相同,其主要區別體現在3點:①頂層文件所包含的模塊和連接方式不同;②SOPC Builder中所加入的外設IP模塊不同;③Nios Ⅱ IDE中的C程序設計不同。而這些區別也正好體現了SOPC軟硬件設計的靈活性,學生的SOPC系統綜合設計能力的不同也能在這3個方面的設計中得以體現。
筆者所提出的SOPC實驗教學平臺在實踐中通過2種開設方式使用:①隨課實驗,即在SOPC系統理論課程中設置部分實驗學時;該部分實驗難度不大,平臺中的基本實驗模塊就能夠滿足需求,同時理論和實驗相結合加深了對SOPC系統的理解,有利于學生的入門級學習。②創新型實驗,這一部分作為SOPC設計競賽的訓練題目使用,安排在開放式創新實驗室進行;該部分實驗要求學生有較好的專業基礎,并配以專任輔導教師進行輔導,其目的是提高學生運用先進的SOPC設計技術創造性解決實際問題的能力。
提出了一種新型的SOPC實驗教學平臺的設計方法,介紹了該平臺的具體硬軟件設計,并提供一個具體的實驗例程說明該平臺實驗項目的設計流程。該平臺能夠實現基本實驗項目和創新型實驗項目,這2類實驗項目可以通過不同的實驗開設形式進行開展,滿足了不同層次的學生的需求,在高校SOPC實驗教學中有良好的應用前景。
[1]韋思健,張馳,韓文龍,等.最新的SOPC技術與EDA實驗教學[J].實驗技術與管理,2006,23(1):113~115.
[2] 王銳,雷金奎.基于軟核Nios Ⅱ的SOPC數據采集系統的設計[J].計算機測量與控制,2008,16(8):1199~1202.
[3] 賀明,王新賽.Nios Ⅱ的紅外圖像實時跟蹤系統設計[J].電光與控制,2008,15(3):90~96.
[4] 金燕,葛遠香,梁玲飛,等.基于SOPC的電能質量在線監測儀的設計[J].浙江工業大學學報,2008,36(6):664~668.
[5] 卓興旺,李廣軍.基于NIOS的SOPC實驗平臺的構建[J].實驗科學與技術,2004(4):30~33.
[6] 唐續,趙芳斌,王嘉.EDA與單片機及SOPC一體化實驗教學平臺研制[J].實驗技術與管理,2013,30(1):73~77.
[編輯]洪云飛
2016-04-27
湖北省教育廳科學技術研究重點項目(D20141303)。
陳曉靜(1980-),女,講師,博士生,現主要從事電磁測量與儀器方面的教學與研究工作。
吳愛平(1977-),男,副教授,博士,現主要從事信號采集與處理方面的教學與研究工作;E-mail:wuaping@yangtzeu.edu.cn。
TP368.1
A
1673-1409(2016)22-0009-05
[引著格式]陳曉靜,吳愛平.基于Nios Ⅱ的SOPC實驗教學平臺設計[J].長江大學學報(自科版),2016,13(22):9~13.