王 韜, 湯勇明
(東南大學(xué) 電子科學(xué)與工程學(xué)院, 江蘇 南京 210096)
MicroBlaze嵌入式微處理器教學(xué)實(shí)驗(yàn)設(shè)計(jì)
王 韜, 湯勇明
(東南大學(xué) 電子科學(xué)與工程學(xué)院, 江蘇 南京 210096)
嵌入式軟核處理器技術(shù)越來(lái)越多地應(yīng)用在綜合課程設(shè)計(jì)或?qū)W生課外設(shè)計(jì)作品中。本文以AD7192模數(shù)轉(zhuǎn)換芯片的控制為例,建設(shè)了在Xilinx公司的FPGA中進(jìn)行MicroBlaze嵌入式微處理器設(shè)計(jì)的教學(xué)案例,包括MicroBlaze IP核配置、SDK軟件編寫和調(diào)試、綜合編譯及下載等流程,此教學(xué)案例可滿足相關(guān)教學(xué)需求。
FPGA;MicroBlaze;AD7192
在FPGA上搭建嵌入式微處理器軟核系統(tǒng)是可編程片上系統(tǒng)SOPC(System On Programmable Chip)的一種解決辦法。SOPC作為一種特殊的嵌入式微處理器系統(tǒng), 使用邏輯資源構(gòu)建CPU核,在邏輯器件上實(shí)現(xiàn)微處理器架構(gòu),結(jié)合了SOC和FPGA的各自優(yōu)點(diǎn), 具有靈活的設(shè)計(jì)方式, 可裁減、可擴(kuò)充以及可升級(jí), 并具備軟硬件在系統(tǒng)可編程的功能[1,2]。Xilinx公司推出的32位MicroBlaze微處理器IP核是比較著名的主流嵌入式微處理器軟核,具有高效、靈活的特點(diǎn)。MicroBlaze 采用32 位哈佛RISC 架構(gòu),32 位獨(dú)立的地址總線和數(shù)據(jù)總線。對(duì)于簡(jiǎn)單的設(shè)計(jì),可以將代碼直接放入片上的BRAM 中;也可以將復(fù)雜設(shè)計(jì)的Bootloader 放在片上的BRAM中[3]。針對(duì)Xilinx FPAG器件而優(yōu)化的MicroBlaze軟核具有兼容性和重復(fù)利用性,因此是一種良好的SOPC解決方案。
本文圍繞MicroBlaze處理器IP核的結(jié)構(gòu)特性,以Digilent公司的NEXYS 4開發(fā)板為平臺(tái),結(jié)合帶有Pmod接口的AD7192模/數(shù)轉(zhuǎn)換模塊進(jìn)行教學(xué)實(shí)驗(yàn)設(shè)計(jì),向?qū)W生們展示在Xilinx FPGA上使用MicroBlaze軟核進(jìn)行開發(fā)的基本流程。
本實(shí)驗(yàn)旨在介紹使用嵌入式微處理器軟核開發(fā)FPGA的通用步驟,幫助學(xué)生掌握在最新Vivado開發(fā)環(huán)境下搭建嵌入式微處理器系統(tǒng)并在SDK開發(fā)環(huán)境下編寫C語(yǔ)言程序進(jìn)行調(diào)試的方法。同時(shí),在搭建嵌入式微處理器系統(tǒng)的過程中,增強(qiáng)學(xué)生們對(duì)嵌入式微處理器系統(tǒng)的基本組成部分、結(jié)構(gòu)體系的理解。
1.1 實(shí)驗(yàn)平臺(tái)選擇
由于MicroBlaze軟核具有非常好的適應(yīng)性和可配置性,在Xilinx公司的Spartan-6、Artix-7、Kintex-7等諸多系列的FPGA上都可實(shí)現(xiàn)。本實(shí)驗(yàn)選取Digilent公司的NEXY 4開發(fā)板為實(shí)驗(yàn)平臺(tái),該平臺(tái)板載有Xilinx公司的型號(hào)為XC7A100T的Artix-7系列FPGA,邏輯資源非常豐富。開發(fā)板上帶有5個(gè)Pmod接口(其中一個(gè)為XADC Pmod接口),用于同本實(shí)驗(yàn)中的AD7192模塊連接。
1.2 AD7192和Pmod接口模塊
AD7192是Analog Device公司的一款低噪聲、低漂移的24位∑-△型模數(shù)轉(zhuǎn)換器(ADC),是一款適合高精密測(cè)量應(yīng)用的低噪聲完整模擬前端。片內(nèi)集成可編程增益放大器(PGA),可配置為兩路差分輸入或四路偽差分輸入。片內(nèi)通道序列器可以使能多個(gè)通道,AD7192按順序在各使能通道上執(zhí)行轉(zhuǎn)換,以簡(jiǎn)化與器件的通信。片內(nèi)4.92 MHz時(shí)鐘可以用作ADC的時(shí)鐘源;也可以使用外部時(shí)鐘或晶振作為時(shí)鐘源。AD7192的輸出數(shù)據(jù)速率可在4.7 Hz至4.8 kHz的范圍內(nèi)變化。
在本實(shí)驗(yàn)中,AD7192模塊有4根信號(hào)線與FPGA相連,這4根信號(hào)線功能定義如表1所示:
表1 4根信號(hào)線引腳功能
名稱功能DIN串行數(shù)據(jù)輸入。FPGA通過該引腳向ADC輸入數(shù)據(jù)。DOUT串行數(shù)據(jù)輸出。ADC通過該引腳向FPGA輸出數(shù)據(jù)。SCLK串行時(shí)鐘輸入。向ADC寫入或讀出數(shù)據(jù)的時(shí)鐘信號(hào)。CS片選信號(hào)。若系統(tǒng)中有多個(gè)ADC模塊則可用于解碼。
Pmod接口是Digilent公司設(shè)計(jì)的一種用于擴(kuò)展FPGA、CPLD嵌入式開發(fā)板功能的簡(jiǎn)易接口標(biāo)準(zhǔn)。該接口由標(biāo)準(zhǔn)2.54 mm間距的6腳(單列)或12腳(雙列)接口構(gòu)成,用于開發(fā)板與帶有Pmod接口的模塊進(jìn)行連接通信。12腳的Pmod接口定義如圖1所示。
1.3 系統(tǒng)結(jié)構(gòu)概述與框圖
在FPGA上圍繞MicroBlaze軟核添加UART和GPIO模塊。GPIO模塊中4根信號(hào)線與AD7192連接,向AD7192發(fā)送命令并接收由AD7192轉(zhuǎn)換得到的數(shù)據(jù)以供FPGA進(jìn)行處理。AD7192轉(zhuǎn)換得到的數(shù)據(jù)經(jīng)過濾波處理,計(jì)算得到實(shí)際采集的電壓值。UART模塊用于同上位機(jī)進(jìn)行串口通訊,以在上位機(jī)上顯示AD7192采集得到的電壓值。FPGA與AD7192連接的系統(tǒng)框圖如圖2所示。
圖1 Pmod接口定義
圖2 系統(tǒng)框圖
本實(shí)驗(yàn)主要包括兩部分:在Vivado環(huán)境下以MicroBlaze軟核為核心的嵌入式微處理器系統(tǒng)硬件部分的搭建以及在SDK環(huán)境下進(jìn)行軟件編寫調(diào)試。
2.1 硬件平臺(tái)開發(fā)
一個(gè)基本的嵌入式系統(tǒng)應(yīng)包括五個(gè)基本單元:①微處理器內(nèi)核;②標(biāo)準(zhǔn)總線;③時(shí)鐘復(fù)位單元;④調(diào)試單元;⑤存儲(chǔ)單元,包括RAM、ROM等。
Vivado為MicroBlaze提供了一個(gè)集成開發(fā)環(huán)境。在Vivado 2014.2中新建原理圖,添加MicroBlaze IP核,通過Run Block Automation功能可以設(shè)置Local Memory大小、Debug模塊功能等,如圖3所示。
設(shè)置完成后Vivado將自動(dòng)生成與MicroBlaze軟核相連接的時(shí)鐘模塊、系統(tǒng)復(fù)位控制模塊、調(diào)試模塊以及片上存儲(chǔ)模塊Block RAM。MicroBlaze內(nèi)核通過LMB總線訪問Block RAM,可作為系統(tǒng)的程序數(shù)據(jù)存儲(chǔ)空間。完成MicroBlaze IP核的配置之后,再添加AXI Uartlite模塊和AXI GPIO模塊,這些模塊掛接在AXI總線上與MicroBlaze內(nèi)核進(jìn)行通信。
圖3 配置MicroBlaze軟核
平臺(tái)搭建之后,Vivado會(huì)自動(dòng)為Block RAM、UART和GPIO模塊分配地址,用戶也可以自行在Address Editor選項(xiàng)卡中改變這些模塊的地址。這部分工作相當(dāng)于將原本不可分割的ASIC專用集成芯片進(jìn)行拆卸,讓用戶深入到芯片內(nèi)部,根據(jù)自身的需求去選取芯片的功能模塊,并完成這些模塊與控制核的連接和地址分配,形成用戶最終定制的底層邏輯[4]。這使得系統(tǒng)的設(shè)計(jì)非常靈活且可擴(kuò)展,更加符合用戶的需求的同時(shí)也提高了芯片的資源利用率。
原理圖完成之后還需創(chuàng)建HDL wrapper文件,將原理圖轉(zhuǎn)換為HDL文件,如圖4所示。
圖4 創(chuàng)建HDL文件
本設(shè)計(jì)中由于沒有其他部分,故將MicroBlaze系統(tǒng)HDL文件設(shè)置為頂層文件。如果系統(tǒng)中還有別的邏輯設(shè)計(jì)電路則可用硬件描述語(yǔ)言實(shí)例引用wrapper得到的模塊。完成上述工作后對(duì)ucf文件按照目標(biāo)實(shí)際設(shè)計(jì)為每個(gè)模塊配置管腳,并編譯生成硬件比特流文件。將比特流文件下載入FPGA,完成FPGA硬件的配置。
2.2 軟件平臺(tái)開發(fā)
完成硬件平臺(tái)設(shè)計(jì)后,在File選項(xiàng)卡中選擇Export Hardware選項(xiàng),將Vivado中生成的硬件信息導(dǎo)入到SDK(Software Development Kit)中,并選擇Launch SDK打開SDK開發(fā)環(huán)境進(jìn)行軟件的編寫和調(diào)試。當(dāng)本設(shè)計(jì)的硬件信息導(dǎo)入到SDK中并新建工程之后,SDK將根據(jù)系統(tǒng)中所包含的各種外設(shè)模塊自動(dòng)生成板級(jí)支持包BSP(Board Support Package),提供操作外設(shè)的庫(kù)函數(shù),通過用戶接口函數(shù)API(Application Programming Interface),系統(tǒng)具體硬件便對(duì)用戶透明,方便用戶快速開發(fā)系統(tǒng)。
在本實(shí)驗(yàn)中,通過GPIO讀寫AD7192內(nèi)部寄存器,向AD7192發(fā)送指令,并將AD7192采集電壓值轉(zhuǎn)換得到的數(shù)據(jù)讀入處理器,經(jīng)軟件濾波算法處理后通過UART模塊發(fā)送至串口,在串口調(diào)試助手中顯示計(jì)算得到的電壓值。程序流程圖如圖5所示。
圖5 軟件流程圖
接收到的數(shù)據(jù)采用冒泡排序和中位值濾波算法進(jìn)行處理后,根據(jù)公式
計(jì)算得實(shí)際電壓值。其中,Data是經(jīng)處理后得到的轉(zhuǎn)換數(shù)據(jù),VRef是AD7192的參考電壓,VSample是計(jì)算得到的采集電壓。
<1),且各件產(chǎn)品是否為不合格品相互獨(dú)立.
代碼編寫完成后進(jìn)行編譯。由于本實(shí)驗(yàn)代碼量較小,可以直接將elf文件下載入Block RAM中執(zhí)行。在Run Configurations對(duì)話框中配置運(yùn)行參數(shù)后點(diǎn)擊Run即可在FPGA上運(yùn)行程序,如圖6所示。
采集計(jì)算得到的電壓值通過串口發(fā)送至上位機(jī)進(jìn)行顯示。
(王 韜等文)
圖6 運(yùn)行參數(shù)配置
本文介紹了以AD轉(zhuǎn)換芯片的控制實(shí)驗(yàn)為基
礎(chǔ),在Xilinx FPGA上及最新Vivado開發(fā)環(huán)境下,用MicroBlaze軟核開發(fā)的一款教學(xué)案例,為學(xué)生快速深入地進(jìn)行FPGA開發(fā)提供了學(xué)習(xí)資源,可幫助學(xué)生加強(qiáng)對(duì)SOPC的概念、嵌入式微處理器系統(tǒng)的結(jié)構(gòu)等方面的理解,為日后從事嵌入式系統(tǒng)研究與應(yīng)用方面的工作打下堅(jiān)實(shí)的基礎(chǔ)。
[1] 湯勇明,鄭姚生,吳忠,李曉華.“可編程邏輯器件的基礎(chǔ)與應(yīng)用”課程建設(shè)與教學(xué)實(shí)踐[J].南京:電氣電子教學(xué)學(xué)報(bào),2007,02:7-9+12.
[2] 龍霞飛,李仁發(fā).MicroBlaze微處理器IPCore的結(jié)構(gòu)及應(yīng)用[J].沈陽(yáng):微處理機(jī),2004,06:6-9.
[3] 孫豐祥,程玉偉,胡恩俊,鄭昌露.基于MicroBlaze軟核的嵌入式最小系統(tǒng)[J].蘭州:化工自動(dòng)化及儀表,2014,08:946-948.
[4] 單超,王萍,朱愛民,萬(wàn)娟.基于MicroBlaze軟核的嵌入式系統(tǒng)設(shè)計(jì)[J].北京:單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011,03:18-21.
Practical Experiment Design Based on MicroBlaze Embedded Microprocessor
WANG Tao, TANG Yong-ming
(SchoolofElectronicScienceandEngineering,SoutheastUniversity,Nanjing210096,China)
Techniques using embedded microprocessor IP cores have become more common in design works. An example of controlling AD7192 analog to digital converter via FPGA is given in this paper to conduct a teaching experiment about how to build a MicroBlaze system on FPGA, including MicroBlaze IP core configuration under Vivado IDE and software development under SDK IDE.
FPGA;MicroBlaze;AD7192
2015-05-01;
2015-07- 10
王 韜( 1992-),男,碩士研究生,研究方向?yàn)殡娐放c系統(tǒng),E-mail: 220141198@seu.edu.cn
湯勇明( 1973-),男,博士、研究員,主要從事顯示電子學(xué)和高等工程教育研究,E-mail: tym@seu.edu.cn
G643
A
1008-0686(2016)02-0122-04