中國石油天然氣運(yùn)輸公司長慶運(yùn)輸分公司 孫以環(huán)
基于Nios-II的FPGA系統(tǒng)設(shè)計(jì)與研究
中國石油天然氣運(yùn)輸公司長慶運(yùn)輸分公司 孫以環(huán)
FPGA內(nèi)嵌Nios-II軟核具有成本低、靈活性高、生產(chǎn)周期短等特點(diǎn),廣泛應(yīng)用于智能電子產(chǎn)品、醫(yī)療電子設(shè)備、無線通信產(chǎn)業(yè)中。本文主要研究了基于FPGA內(nèi)嵌Nios-II軟核的性能及其應(yīng)用,重點(diǎn)進(jìn)行硬件和軟件的設(shè)計(jì),其中軟核設(shè)計(jì)是通過Quartus-II軟件里的SOPC-builder開發(fā)工具進(jìn)行設(shè)計(jì);最后FPGA內(nèi)嵌Nios-II軟核可以根據(jù)實(shí)際需求定制所需要的外設(shè)接口,靈活可變。調(diào)試方式引入了仿真器,可以進(jìn)行寄存器、變量實(shí)時(shí)查詢,改變以往FPGA只能通過仿真和測(cè)試端口進(jìn)行調(diào)試的不便局面。本次設(shè)計(jì)通過驗(yàn)證滿足ADC采樣誤差精度、PWM占空比精度、中斷響應(yīng)速度等設(shè)計(jì)要求,并能夠進(jìn)行正常的通信。
嵌入式系統(tǒng);FPGA;Nios-II軟核;ADC采樣
FPGA即現(xiàn)場(chǎng)可編程門陣列,是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上發(fā)展起來的。應(yīng)用在專用集成電路領(lǐng)域中,不但可以彌補(bǔ)原有可編程器件門電路有限的不足,還可以解決定制電路的缺陷。
隨著大規(guī)模信息技術(shù)和集成電路技術(shù)的不斷發(fā)展,F(xiàn)PGA內(nèi)嵌Nios-II軟核的技術(shù)作為目前最受歡迎的嵌入式系統(tǒng)開發(fā),并且該邏輯門電路密度不斷提高,設(shè)計(jì)工具不斷優(yōu)化,因此能夠?qū)崿F(xiàn)越來越多的功能。FPGA內(nèi)嵌Nios-II軟核技術(shù)具有研發(fā)成本低、設(shè)計(jì)周期短、產(chǎn)品便于更新、產(chǎn)品更改靈活方便等優(yōu)點(diǎn),受到越來越多的設(shè)計(jì)開發(fā)人員廣泛的關(guān)注與推廣,F(xiàn)PGA內(nèi)嵌Nios-II軟核的研究方法迅速成為了集成電子設(shè)計(jì)領(lǐng)域中的非常重要組成部分[1~2]。
目前FPGA的研究主要集中在以下三個(gè)方向:
第一個(gè)方向,集成電路仿真測(cè)試。即測(cè)試新設(shè)計(jì)完成的集成電路芯片是否正確好用。然而如果直接生產(chǎn)測(cè)試芯片制作成本比較高,代工廠商不愿意制作少批量的試制品[3]。
第二個(gè)方向,通信設(shè)備的高速接口電路設(shè)計(jì)是FPGA的另一個(gè)重要應(yīng)用方向,通過FPGA的高速處理接口的協(xié)議,可以實(shí)現(xiàn)高速的數(shù)據(jù)收發(fā)和交換[4]。
第三個(gè)方向,數(shù)學(xué)計(jì)算或者數(shù)字信號(hào)處理方向已成為一個(gè)新的研究方向,該方向在較大程度上已經(jīng)超出了信號(hào)處理的范圍[5]。
本文的目的就是將CPU卡上的ARM7和FPGA整合為一個(gè)內(nèi)嵌Nios-II軟核的FPGA,使內(nèi)嵌的Nios-II軟核具有ARM7功能,同時(shí)還保留原有FPGA通信功能。采用黑金開發(fā)板為平臺(tái)實(shí)現(xiàn)軟核功能,然后通過飛線連接模擬量采樣板。整個(gè)開發(fā)流程圖如圖1所示:
圖1 項(xiàng)目整體開發(fā)流程圖
3.1硬件總體設(shè)計(jì)
FPGA內(nèi)嵌Nios-II軟核的硬件電路設(shè)計(jì)大體可分為兩部分,其一為FPGA核心控件部分,即為黑金開發(fā)板;其二為外圍應(yīng)用電路,即為模擬量采樣板。
由于FPGA本身功能強(qiáng)大并且線路很復(fù)雜。核心部分電路圍繞型號(hào)為EP4CE15F17C18的FPGA芯片,配合SRAM芯片或SDRAM芯片作為擴(kuò)展內(nèi)存使用,同時(shí)基本EEPROM配置芯片和復(fù)位控制芯片也集成在上面[6]。圖2所示為黑金開發(fā)板與模擬量通道卡飛線連接圖。其模擬量通道板為8點(diǎn)RTD卡,這樣的簡化處理不但節(jié)省了制板和器件費(fèi)用,而且能起到類似的研究結(jié)果。
圖2 黑金開發(fā)板與模擬量通道卡飛線連接圖
整體硬件設(shè)計(jì)原理圖如圖3所示。開發(fā)板上的FPGA為主控制部分,模擬量通道板上的ADC為軟核的主要應(yīng)用功能部分,F(xiàn)PGA原有功能則是需要保留的功能。Nios-II軟核相當(dāng)于CPU,通過SPI接口與模擬量通道卡的AD相連接;串口與上位機(jī)相連,進(jìn)行數(shù)據(jù)的標(biāo)定;軟核與鐵電FRAM通過并行I/O口進(jìn)行數(shù)據(jù)交換[7];SDRAM/SRAM主要用作存儲(chǔ)器設(shè)備,而數(shù)碼管和液晶顯示器主要用作顯示設(shè)備。
圖3 整體硬件設(shè)計(jì)原理圖
本文采用的芯片是FPGA(EP4CE15F17C18)芯片,圖4為FPGA芯片的硬件電路圖。
圖4 FPGA芯片的硬件電路
本文采用的存儲(chǔ)器芯片為EPCS64(EEPROM)芯片,如圖5所示。
圖5 EPCS引腳配置圖
本文的一些其他外設(shè)主要有:AD7793芯片、串口模塊、數(shù)碼管顯示模塊、液晶顯示模塊、電源模塊等。
3.2軟件總體設(shè)計(jì)
本文的FPGA內(nèi)嵌Nios-II軟核的軟件設(shè)計(jì)分為兩大部分:Nios-II軟核設(shè)計(jì)和硬件驅(qū)動(dòng)程序編寫。其中軟核設(shè)計(jì)主要是在Quartus-II軟件中的SOPC下設(shè)計(jì)自己所需要的軟核,而驅(qū)動(dòng)程序編寫則是在Nios-II IDE軟件里,用C語言或者匯編語言進(jìn)行驅(qū)動(dòng)程序編寫。
不同于以往硬件和軟件概念的區(qū)分,軟核的設(shè)計(jì)是屬于一種模糊概念的應(yīng)用設(shè)計(jì)。其主要目的是根據(jù)需求來定制一個(gè)合適的CPU軟核,使之可以滿足項(xiàng)目要求。具體到本研究中的軟核,我們將定制Nios核(計(jì)算核心)、倍頻電路(鎖相環(huán)PLL提高指令運(yùn)行速度最高到100MHz)、JTAG調(diào)試口、外設(shè)(SPI、IIC、中斷等等)、系統(tǒng)ID(system ID)、程序存儲(chǔ)器(FRAM,最大到64Mbit存儲(chǔ)空間)和數(shù)據(jù)存儲(chǔ)器(SRAM/SDRAM共用,最大到64Mbit)、LED、六位數(shù)碼管、液晶顯示器,采用Avalon總線連接。原CPU卡上的LPC2136則為:ARM7內(nèi)核、最高60MHz倍頻電路、JTAG、外設(shè)、程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,AHB/APB總線連接,整個(gè)軟核框架示意圖如圖6所示。
圖6 FPGA內(nèi)嵌CPU軟核結(jié)構(gòu)示意圖
本文的軟核開發(fā)環(huán)境是Quartus-II軟件,選擇的是Altera公司的綜合性PLD/FPGA開發(fā)工具Quartus-II 11.0sp1(32bit)軟件[8]。
本設(shè)計(jì)中,兩個(gè)處理器的軟件程序都擁有自己獨(dú)有的一段存儲(chǔ)空間,這些存儲(chǔ)空間都位于同一個(gè)物理存儲(chǔ)設(shè)備SDRAM上,如圖7所示。
圖7 具有Avalon-MM接口的SDRAM控制器方框圖
SopcBuilder是Altera公司提供的一款圖形化系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)工具,內(nèi)嵌于Quartus II軟件中。利用SopcBuilder實(shí)現(xiàn)的雙核系統(tǒng),如圖8所示。
圖8 內(nèi)嵌Nios-II軟核的部分組件
在ALTERA公司的SOC產(chǎn)品配套開發(fā)工具里,SOPC組件已經(jīng)嵌入到Quartus-II軟件的FPGA編譯工具中。打開該組件即可進(jìn)行直觀的可視化操作。其中簡單的組件可以直接按提示操作。
在整個(gè)FPGA內(nèi)嵌Nios-II軟核中,主程序是整個(gè)驅(qū)動(dòng)程序的核心,是協(xié)調(diào)各個(gè)模塊正常工作的主體。主程序主要是進(jìn)行初始化設(shè)置,具體的主程序流程圖如圖9所示,操作步驟如下:
(1)系統(tǒng)初始化主要包括并行端口初始化、IIC通信協(xié)議初始化、AD采樣模塊初始化、液晶顯示器模塊初始化、全局參數(shù)初始化。
(2)打開定時(shí)器,通過程序編寫相應(yīng)PWM模塊的占空比,用示波器測(cè)量PWM波形,PWM的主要作用是控制AO口的輸出,既PWM占空比輸出紋波電壓,再由紋波電壓和精密電阻輸出4~20毫安的電流。
(3)通過串口協(xié)議進(jìn)行相應(yīng)的操作,該協(xié)議由簡單的一個(gè)字節(jié)組成RS232通信機(jī)制,如果通過串口發(fā)送過來的地址和卡件本身硬件設(shè)置的地址相同,則模擬卡件會(huì)執(zhí)行相應(yīng)的數(shù)據(jù)接收和發(fā)送,否則不會(huì)執(zhí)行任何操作。
(4)檢查鐵電存儲(chǔ)器是否有更新,如果有數(shù)據(jù)更新就是通過串口發(fā)送過來的標(biāo)定數(shù)據(jù),則把數(shù)據(jù)值存到FRAM中,然后再從FRAM中讀取存儲(chǔ)的數(shù)值,對(duì)比兩者是否一樣,從而保證數(shù)據(jù)的可靠性。
(5)讀取AD采樣過來的數(shù)據(jù)并放入緩存中,再將數(shù)據(jù)進(jìn)行相應(yīng)的標(biāo)定,然后通過數(shù)碼管和液晶顯示器顯示,或者通過串口發(fā)送給上位機(jī)。
(6)整個(gè)程序結(jié)束。
圖9 主程序設(shè)計(jì)流程圖
FPGA內(nèi)嵌Nios-II軟核完成后需要進(jìn)行性能測(cè)試。本文在IDE軟件中編寫的應(yīng)用驅(qū)動(dòng)程序,在Nios-II軟核成功運(yùn)行后,串口調(diào)試功能和PWM波形圖數(shù)據(jù)進(jìn)行測(cè)試。根據(jù)原CPU卡上ARM芯片LPC2136的功能情況,我們?cè)O(shè)定了程序主流程為軟核接收UART命令后,將外部ADC采樣后的數(shù)據(jù)經(jīng)標(biāo)定再通過串口發(fā)送回上位機(jī),標(biāo)定數(shù)據(jù)同樣來自于UART,同時(shí)根據(jù)UART送出的占空比為3:5的一路周期8ms的PWM。串口通信發(fā)送協(xié)議為8字節(jié),從高到低依次為:采集命令(1個(gè)字節(jié))、標(biāo)定有無(1個(gè)字節(jié)),標(biāo)定數(shù)據(jù)(4個(gè)字節(jié))、占空比(2個(gè)字節(jié));接收協(xié)議為8字節(jié),從高到低依次為采樣數(shù)據(jù)(2個(gè)字節(jié))、出錯(cuò)標(biāo)志(1個(gè)字節(jié)),其余為零,波特率為115200bit/s。
圖10 串口調(diào)試助手圖
并行通信具體協(xié)議為:55 01 xx xx xx xx 03 05。具體協(xié)議如下:只有給串口發(fā)送0x55 開頭的8個(gè)字節(jié)的命令,串口才開始顯示相應(yīng)的AD采樣數(shù)據(jù),否則此命令視為無效命令;第二個(gè)字節(jié)0x01或者0x00,其中0x01表示后面兩個(gè)字節(jié)是數(shù)據(jù)標(biāo)定值,0x00表示沒有標(biāo)定數(shù)據(jù);第三到六個(gè)字節(jié)表示要標(biāo)定的數(shù)據(jù),這里默認(rèn)為0x01 0x00,0x00 0x00;最后兩個(gè)字節(jié)為PWM占空比數(shù)據(jù),這里默認(rèn)為0x03和0x05,表示占空比為3:5。如圖10所示串口調(diào)試助手,協(xié)議為 55 01 01 00 00 03 05 的串口調(diào)試助手返回的AD采樣碼值,其協(xié)議為發(fā)送命令,標(biāo)定值為K=1,B=0,PWM占空比為3:5。
PWM又稱脈沖寬度調(diào)制,是利用Nios-II軟核的數(shù)字輸出對(duì)模擬電路進(jìn)行控制的一種有效手段,本項(xiàng)目主要是利用精準(zhǔn)的PWM波形對(duì)模擬量通道板上的電壓進(jìn)行控制,既通過PWM產(chǎn)生充放電電路,充放電電路根據(jù)充放電的時(shí)間間隔之比轉(zhuǎn)換成不同的紋波電壓,紋波電壓比上精密電阻產(chǎn)生4~20mA電流,所以對(duì)PWM的精度要求很高,如圖11所示為示波器測(cè)出的PWM波形圖,其占空比為3:5,可以用示波器測(cè)量出其高電平與低電平的比值很接近3:5。
本文主要完成以下工作:
(1)依托SUPMAX2000 DCS系統(tǒng)中的DPU卡和CPU卡為研究背景,使CPU卡上的ARM芯片和FPGA芯片合二為一,并且探究FPGA內(nèi)嵌Nios-II軟核技術(shù)的背景以及研究意義,綜合本項(xiàng)目的實(shí)際需求和可用資源與技術(shù),提出FPGA內(nèi)嵌Nios-II軟核技術(shù)的方案。
圖11 PWM波形圖
(2)軟核和應(yīng)用程序設(shè)計(jì)完成后,需要進(jìn)行功能測(cè)試。在AD兩端飛兩根線接在信號(hào)源兩端,通過給信號(hào)源不同的電壓值,用數(shù)碼管和液晶顯示器讀出采樣值,再用示波器對(duì)LED兩端進(jìn)行PWM波形測(cè)試,最后通過串口調(diào)試助手與上位機(jī)進(jìn)行通信。
綜上所述,通過FPGA內(nèi)嵌Nios-II軟核的技術(shù),經(jīng)過測(cè)試AD采樣功能模塊,基本滿足所有卡件千分之二的誤差要求;經(jīng)過測(cè)試PWM波形為占空比3:5,以及整個(gè)程序運(yùn)行時(shí)間和中斷響應(yīng)速度,和原LPC2136芯片上的性能相當(dāng)。實(shí)現(xiàn)了將原SUPMAX 2000 DCS系統(tǒng)中CPU卡上的LPC2136芯片和FPGA芯片整合為單一具有Nios-II軟核的FPGA芯片,并且使原有功能保持不變。
[1] Kung, Ying-Shieh, Huang, Ping-Hang, Su, Fong-Chin et al. Realization of an FPGA-based Motion control system for electric standing wheelchairs[C].//2011 IEEE Symposium on Industrial Electronics and Applications. 2011 : 47 - 52.
[2] A. Ben Atitallah, P. Kadiohik, N. Masmoudi et al. FPGA implementation of a HW/SW platform for multimedia embedded systems[J]. Design Automation for Embedded Systems,2008,12(4) : 293 - 311.
[3] 宋強(qiáng), 劉文華. 多電平通用空間矢量調(diào)制集成電路及其FPGA實(shí)現(xiàn)[J]. 中國電機(jī)工程學(xué)報(bào), 2008, 28(12) : 95 - 100.
[4] 賈龍, 林巖. 基于DSP和FPGA的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)[J]. 電子測(cè)量技術(shù), 2007, 30(5) : 95 - 97, 100.
[5] 紀(jì)志成. FPGA數(shù)字信號(hào)處理設(shè)計(jì)教程-System Generator入門與提高[M].西安 : 西安電子科技大學(xué)出版社, 2008.
[6] 李列文, 桂衛(wèi)華. 面向FPGA的低泄漏功耗SRAM單元設(shè)計(jì)方法研究[J].高技術(shù)通訊, 2012, 22(12) : 1292 - 1298.
[7] 王磊, 江小華. 基于SPI總線的FRAM存儲(chǔ)設(shè)計(jì)[J]. 現(xiàn)代電子技術(shù), 2013, 36(4) : 44 - 46.
[8] Fang, Yi-yuan, Chen, Xue-jun. Design and simulation of DDS based on Quartus II[C]. //2011 IEEE International Conference on Computer Science and Automation Engineering. v.2.2011 : 357 - 360.
FPGA System Design and Research Based on Nios-II
FPGA embedded Nios-II soft core is developed on the basis of traditional hardcore, which has the characteristics of low costs, high flexibility, short production cycle etc and are widely used in the intelligent electronic products, medical devices, wireless communication industry. This paper studies the performance and application of FPGA based soft core embedded Nios-II by focusing on the design of hardware and software. The main work of software design includes soft core design and driver writing soft core design which is designed in Quartus-II software development tools in the SOPC. Finally, soft-core technology embedded FPGA can customize the required peripheral interfaces according to the actual needs flexibly. By introducing emulator debug mode, you can query register and variable on real-time which changes the past inconvenient situation only to debug FPGA simulation and test port. By verifying the design, it can meet the precision of ADC sampling error, the precision of PWM duty ratio, the speed of interrupt response and conduct normal communications.
Embedded system; FPGA; Nios-II soft-core; ADC sampling
孫以環(huán)(1983-),女,江蘇沐陽人,碩士在讀,現(xiàn)任中國石油天然氣運(yùn)輸公司長慶運(yùn)輸分公司交通運(yùn)輸管理服務(wù)中心黨支部書記,主要研究方向?yàn)閮x器儀表質(zhì)量控制。