簡(jiǎn)單MicroBlaze微控制器的理念
掃描二維碼
隨時(shí)隨地手機(jī)看文章
MicroBlaze是一款基于構(gòu)造的的嵌入式微處理器,它的顯著優(yōu)勢(shì)在于能滿足復(fù)雜應(yīng)用的需求,在除了運(yùn)行簡(jiǎn)單的通用應(yīng)用以外,還能運(yùn)行操作系統(tǒng)。
設(shè)計(jì)人員能夠在當(dāng)前所有的賽靈思架構(gòu)中實(shí)施MicroBlaze軟處理器,在不同產(chǎn)品系列間實(shí)現(xiàn)方便的轉(zhuǎn)換,具有很高的靈活性。但是,MicroBlaze系統(tǒng)設(shè)計(jì)不僅要在70多種參數(shù)中選擇,而且還要借助一系列功能強(qiáng)大的嵌入式工具,如果應(yīng)用只需要簡(jiǎn)單的微控制器,這種設(shè)計(jì)方法反倒不實(shí)用。
但是,利用適當(dāng)?shù)募夹g(shù),用戶可以開(kāi)發(fā)構(gòu)造簡(jiǎn)單的預(yù)配置MicroBlaze微控制器,并方便快捷地將其添加到任何FPGA設(shè)計(jì)中。可將控制器的實(shí)例直接加入HDL。用戶能在標(biāo)準(zhǔn)的FPGA設(shè)計(jì)流程中直接使用,無(wú)須特殊的腳本或復(fù)雜的步驟。僅需三個(gè)文件即可啟動(dòng)設(shè)計(jì)工作,包括兩個(gè)硬件實(shí)施文件和一個(gè)軟件定義文件。這種方法使工程師不用學(xué)習(xí)或者只需很少量的學(xué)習(xí)就能快速啟動(dòng)FPGA嵌入式設(shè)計(jì)工作。
在ISE 11.1中啟動(dòng)MicroBlaze軟件開(kāi)發(fā)工作,可使用獨(dú)立的軟件開(kāi)發(fā)套件(SDK)進(jìn)行C和C++應(yīng)用的創(chuàng)建和調(diào)試,而無(wú)須全面的嵌入式開(kāi)發(fā)套件(EDK)。
微控制器預(yù)配置了兩種選項(xiàng),UART和調(diào)試。表1顯示了根據(jù)微控制器配置不同而給出的各種FPGA系列的尺寸估算值。此外,Virtex器件使用了兩個(gè)Block RAM,而Spartan器件使用四個(gè)Block RAM。對(duì)應(yīng)用代碼進(jìn)行調(diào)試后,用戶即可移除調(diào)試選項(xiàng),以減小控制器的尺寸。例如,Spartan-6微控制器僅需要220個(gè)切片。
微控制器概覽
簡(jiǎn)單MicroBlaze微控制器包含的組件有32位MicroBlaze處理器、8KB RAM/ROM、帶64KB尋址空間的32位用戶接口、中斷支持、可選UART,以及可選的JTAG調(diào)試接口。圖1顯示了系統(tǒng)方框圖。
圖1 SMM由MicroBlaze處理器、存儲(chǔ)器及接口組成
根據(jù)需要以及實(shí)施工具允許的范圍,時(shí)鐘輸入可高可低。有效高電平復(fù)位輸入與輸入時(shí)鐘內(nèi)部同步。中斷輸入信號(hào)可提供中斷支持,微控制器提供服務(wù)時(shí)用中斷確認(rèn)輸出進(jìn)行確認(rèn)。此外,簡(jiǎn)單的地址映射用戶接口也同步于時(shí)鐘,支持用戶定制。圖2顯示了用戶接口的時(shí)序。可將字節(jié)啟用用于字節(jié)和半字事務(wù)處理。
圖2 簡(jiǎn)單的地址映射用戶接口同步于時(shí)鐘
用于可對(duì)16位寬的軟件映射地址總線進(jìn)行解碼,以將不同的定制接口或外設(shè)連接至微控制器。在插入片選(Chip Select)兩個(gè)時(shí)鐘周期后對(duì)讀取數(shù)據(jù)進(jìn)行采樣。
一些預(yù)配置的版本可提供串行16450 UART選項(xiàng)。波特率在軟件中進(jìn)行編程,以保持UART獨(dú)立于時(shí)鐘輸入。調(diào)試選擇可使用內(nèi)部FPGA資源,并直接連接至FPGA JTAG接口,從而通過(guò)常規(guī)FPGA下載線纜實(shí)現(xiàn)應(yīng)用調(diào)試。
FPGA設(shè)計(jì)流程
FPGA設(shè)計(jì)流程遵循如圖3所示的標(biāo)準(zhǔn)ISE FPGA實(shí)施流程??稍贔PGA設(shè)計(jì)中的任何層級(jí)級(jí)別上通過(guò)Verilog或VHDL創(chuàng)建微控制器實(shí)例。使用兩個(gè)與硬件相關(guān)的文件微控制器網(wǎng)表(smm.ngc)和Block RAM存儲(chǔ)器映射文件(smm.bmm)即能完成FPGA的實(shí)施,用戶既不必費(fèi)心學(xué)習(xí)新的工具,也不用使用復(fù)雜的腳本流程。FPGA嵌入式設(shè)計(jì)從未如此的簡(jiǎn)單易行。微控制器配置之間的切換非常簡(jiǎn)單,只需替換所需的網(wǎng)表文件,然后重新實(shí)施FPGA即可。
圖3 FPGA設(shè)計(jì)流程遵循標(biāo)準(zhǔn)的ISE FPGA實(shí)施流程,無(wú)須新工具或腳本
運(yùn)行實(shí)施工具后,將額外生成一個(gè)文件,指示微控制器所使用(smm_bd.bmm)的Block RAM的物理位置。
軟件應(yīng)用設(shè)計(jì)流程
單個(gè)軟件描述文件(smm.xml)包含了啟動(dòng)微控制器應(yīng)用開(kāi)發(fā)工作所需的全部信息。開(kāi)發(fā)可獨(dú)立于FPGA設(shè)計(jì)流程進(jìn)行,甚至在任何FPGA設(shè)計(jì)實(shí)施之前就能啟動(dòng)。
從ISE 11.1開(kāi)始,SDK作為獨(dú)立選項(xiàng)提供,其包含完成軟件應(yīng)用設(shè)計(jì)所需的全部工具、驅(qū)動(dòng)器、程序庫(kù)以及實(shí)用程序等。
圖4 顯示了以軟件定義文件開(kāi)始的標(biāo)準(zhǔn)的SDK開(kāi)發(fā)流程。微控制器的地址空間包括8KB的RAM與用戶接口,在選擇UART選項(xiàng)的情況下,還包括UART寄存器空間。
圖4 SDK開(kāi)發(fā)流程始于軟件定義文件
設(shè)計(jì)實(shí)例
下面介紹一個(gè)LCD控制器參考設(shè)計(jì)實(shí)例,這種設(shè)計(jì)綜合采用了簡(jiǎn)單MicroBlaze微控制器的各種特性。LCD控制器非常適用于小型微控制器實(shí)施,因?yàn)槠溆布涌谳^慢,也比較簡(jiǎn)單,初始化序列較長(zhǎng),而且需要大量字符代碼。
通過(guò)綜合采用HDL和C代碼,設(shè)計(jì)可將消息輸出至電路板上的字符LCD屏。
HDL可處理硬件接口,而軟件則負(fù)責(zé)初始化和控制LCD屏。
LCD模塊的時(shí)序較慢,但同時(shí)需要指令或數(shù)據(jù)之間的較大延遲。例如,清空顯示的指令需要1.52ms的延遲,然后才能發(fā)出下一個(gè)指令或數(shù)據(jù)。部分指令需要40μs的延遲,其他的延遲則需要1μs。
我們可在C語(yǔ)言代碼中用while回路來(lái)處理延遲問(wèn)題,不過(guò)這樣做不夠準(zhǔn)確,而且還會(huì)影響編譯器的優(yōu)化。更好的選擇是在FPGA中創(chuàng)建軟件可載入的32位計(jì)數(shù)器,以便在到達(dá)編程的延遲時(shí)觸發(fā)控制器中斷。
MicroBlaze寫(xiě)入地址0x10,以根據(jù)用戶接口數(shù)據(jù)總線上的數(shù)據(jù)啟動(dòng)定時(shí)器。MicroBlaze隨后將等待中斷,以繼續(xù)執(zhí)行。
MicroBlaze寫(xiě)入用戶接口地址0x0會(huì)觸發(fā)LCD控制器硬件接口,硬件接口的時(shí)序由HDL處理。用戶接口數(shù)據(jù)總線可捕獲指令或數(shù)據(jù)值。按鈕輸入能夠連接至用戶接口地址0x20。
FPGA設(shè)計(jì)包括頂級(jí)模塊、LCD硬件時(shí)序模塊以及軟件可尋址可編程定時(shí)器。此外,文件還包括簡(jiǎn)單MicroBlaze微控制器的示例,運(yùn)行頻率為66MHz。
C語(yǔ)言應(yīng)用包含在單個(gè)文件中。該代碼不僅可實(shí)現(xiàn)MicroBlaze中斷、初始化LCD屏幕、管理不同的延遲情況、打印雙線LCD、等待按鈕輸入,同時(shí)還可清空屏幕并輸出新的消息。
微控制器的定制
由于微控制器采用MicroBlaze構(gòu)建而成,因此設(shè)計(jì)人員將能獲得許多標(biāo)準(zhǔn)的外設(shè)和選項(xiàng),以定制嵌入式系統(tǒng)。用戶可能希望部署不同的FPGA架構(gòu)或添加更多主存儲(chǔ)器、浮點(diǎn)單元或標(biāo)準(zhǔn)的SPI或I2C外設(shè)。
定制既定的系統(tǒng)需要EDK。它包括眾多作為嵌入式項(xiàng)目的不同配置,可根據(jù)用戶要求進(jìn)行修改。例如,如果需要16KB的存儲(chǔ)器而不是標(biāo)準(zhǔn)的8KB存儲(chǔ)器,那么用戶可以打開(kāi)EDK項(xiàng)目,修改MicroBlaze RAM空間并生成新的網(wǎng)表、Block RAM存儲(chǔ)器和軟件描述文件。用戶隨后即可將新的文件添加至ISE和SDK項(xiàng)目中。
誠(chéng)然,雖然簡(jiǎn)單的MicroBlaze微控制器不能滿足所有嵌入式設(shè)計(jì)的需要,但對(duì)于需要簡(jiǎn)單微控制器來(lái)高效提供控制功能的用戶來(lái)說(shuō)確實(shí)是非常好的選擇。此外,其還為希望共享和發(fā)布EDK設(shè)計(jì)的團(tuán)隊(duì)提供了一種定則,那就是無(wú)論嵌入式設(shè)計(jì)的尺寸大小,僅需三個(gè)文件就能完成整個(gè)實(shí)施工作。