<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于FPGA的片上可編程系統(SOPC)設計之:典型實(shí)例-基于NIOS II處理器的“Hello LED”程序設計

基于FPGA的片上可編程系統(SOPC)設計之:典型實(shí)例-基于NIOS II處理器的“Hello LED”程序設計

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201706/348813.htm

8.4典型實(shí)例14:基于NIOSII處理器的“HelloLED”程序設計

8.4.1實(shí)例的內容及目標

1.實(shí)例的主要內容

本節旨在通過(guò)給定的工程實(shí)例——“HelloLED”來(lái)熟悉Altera軟嵌入式系統的軟硬件設計方法。同時(shí)使用基于A(yíng)ltera的開(kāi)發(fā)板將該實(shí)例進(jìn)行下載驗證,完成工程設計的硬件實(shí)現。本節主要講解下面一些知識點(diǎn)。

·QuartusIIBuilder使用方法。

·NIOSIIIDE軟件開(kāi)發(fā)流程。

通過(guò)這些知識點(diǎn),按照本節實(shí)例的實(shí)現過(guò)程,讀者可以迅速掌握Altera軟嵌入式軟硬件設計方法。

2.實(shí)例目標

通過(guò)詳細的流程講解,讀者應達到下面的目標。

·熟悉QuartusIIbuilder使用方法。

·熟悉NIOSIIIDE軟件設計方法。

8.4.2實(shí)例詳解

本實(shí)例使用圖解的方式將整個(gè)流程一步一步展現給讀者,使讀者能夠輕松掌握開(kāi)發(fā)的流程。

本實(shí)例重點(diǎn)在于熟悉使用QuartusⅡ和Builder來(lái)創(chuàng )建一個(gè)NiosⅡ嵌入式處理器系統,并通過(guò)軟件編程實(shí)現對實(shí)驗板上面的LED燈的控制,具體實(shí)現過(guò)程如下。

(1)新建工程。

新建一個(gè)工程目錄“sopc_led”,在此目錄下建立一個(gè)名為“sopc_led”的QuartusII工程,并新建一個(gè)頂層圖,保存于工程中。

(2)SOPCBuilder定制NIOSII處理器。

用SOPCBuilder定制處理器及其外設。打開(kāi)“Tools”/“SOPCBuilder”,如圖8.30所示。

圖8.30打開(kāi)Tools--SOPCBuilder

指定系統名字,本例中我們輸入niosii_c。單擊“OK”按鈕進(jìn)入SOPC定制界面。

圖8.31SOPCBuilder界面

為“Target”選擇“UnspecifiedBoard”,為“Clock(MHz)”選擇時(shí)鐘頻率為50.0,為“TargetDeviceFamily”選擇目標器件系列為Cyclone。

在SOPC定制界面的左邊,我們可以看到有很多功能模塊,用戶(hù)可以按照需要將這些模塊添加到所設計的系統中。

首先,我們需要一個(gè)CPU。選擇“Processor”/“AlteraCorporation”,彈出Altera對話(huà)框,我們選擇一個(gè)經(jīng)濟型的CPU核,即NiosII/e,如圖8.32所示。

圖8.32加入NIOSIICPU

單擊“JTAGDebugModule”標簽頁(yè),選擇第一級調試支持Level1:特點(diǎn)是占用邏輯資源少,編譯速度快,不包括緩存,如圖8.33所示。

圖8.33設置CPU調試模型

單擊“Finish”按鈕完成NiosIICPU的配置工作。項目中會(huì )增加一個(gè)NiosII處理器,名字為cpu_0,為了簡(jiǎn)便起見(jiàn),沒(méi)有將它改名。改名的方法是:?jiǎn)螕粲益I,選擇“Rename”,輸入名字后回車(chē)即可,如圖8.34。

圖8.34定制CPU完成圖

(3)SOPCBuilder定制JTAG串口。

在左側器件池中雙擊“JTAGUARTInterface”,使用默認參數設置,如圖8.35所示。

它是NiosII系統嵌入式處理器新添加的接口元件,通過(guò)內嵌在A(yíng)ltera內部的聯(lián)合測試行動(dòng)組(JTAG)電路,在PC主機和之間進(jìn)行串行字符流通信。特點(diǎn)是在運行時(shí)在調試區輸入信息可以與FPGA進(jìn)行交互。

(4)SOPCBuilder定制計時(shí)器。

在左側器件池中雙擊“IntervalTimer”。定時(shí)器對于HAL系統庫中的器件驅動(dòng)非常有用,比如JTAGUART驅動(dòng)使用定時(shí)器來(lái)實(shí)現10s的暫停。選擇“IntervalTimer”,在設置向導中周期選擇1msec,預設置中選擇Full-featured,如圖8.36所示。

圖8.35JTAGUART參數設置 圖8.36計時(shí)器設置

(5)SOPCBuilder定制外部Flash。

在左側器件池中雙擊“CompactFlashInterface”。在“Presets”中選自定義Custom,地址寬度21bits,帶寬16bits。由于Flash是通用設備,所以時(shí)序標簽使用默認設置。如圖8.37和8.38所示。

圖8.37Flash帶寬設參數置界面 圖8.38Flash時(shí)序參數設置界面

(6)SOPCBuilder定制外部SDRAM。

通常的系統都需要用戶(hù)指定一個(gè)內存空間,這個(gè)內存是指RAM,可以是片上的,也可以是片外的SDRAM或SRAM等。如果用戶(hù)程序較大,超出了FPGA所能定制的最大片上RAM容量,則也可以將程序放在SDRAM中運行。在左側器件池中雙擊“SDRAMcontroller”。

在“Presets”中選擇“micronMT48LC4M32B2-7chip”,其他的參數設置可以使用系統的默認選項,如圖8.39所示。

(7)SOPCBuilder定制外部RAM總線(xiàn)。

添加外部RAM總線(xiàn)(AvalonTri-StateBridge)。軟件使用Avalon接口來(lái)連接片上元件和Avalon主從端口。

圖8.39SDRAM參數設置

在Nios開(kāi)發(fā)板上,要實(shí)現Nios系統與FPGA片外存儲器通信,就必須在A(yíng)valon總線(xiàn)和連接外部存儲器的總線(xiàn)之間添加一個(gè)橋,這個(gè)橋就是Avalon三態(tài)總線(xiàn),如圖8.40所示。

圖8.40添加外部RAM總線(xiàn)

(8)SOPCBuilder定制串行通信設備UART。

通用串行總線(xiàn)RS-232協(xié)議是我們最常用的通信協(xié)議,所以把它也添加到我們的系統里。注意選擇所需的數據幀格式,如圖8.41所示。

(9)SOPCBuilder定制LCD液晶模塊。

使用標準16027字符型液晶顯示器。

(10)SOPCBuilder定制systemid。

在SOPCBuilder中使用默認定制的systemid。

(11)SOPCBuilder定制PIO。

添加4個(gè)LED和輸入設備按鍵開(kāi)關(guān)PIO,這是一個(gè)標準SOPC一般所需要的設備。

(12)SOPCBuilder指定基地址和中斷編號。

首先修改Flash的基地址為0x00000000,之后在Flash上單擊右鍵鎖定基地址,如圖8.42所示。

圖8.41串行通信設備UART參數設置

圖8.42鎖定Flash基地址

然后,選擇“System”/“Auto-AssignBaseAddresses”,讓系統自動(dòng)分配基地址,如圖8.43所示。

圖8.43自動(dòng)分配系統設備地址

最后,選擇“System”/“Auto-AssignIRQs”,讓系統自動(dòng)分配中斷,如圖8.44所示。

(13)SOPCBuilderNIOSIICPU其他設置。

單擊“NiosIIMore“cpu_0”Settings”選項卡,進(jìn)行處理器設定。在本實(shí)例中,將“ResetAddress”修改為“ext_flash”,“ExceptionAddress”修改為“sdram”,“BreakLocation”使用默認值,如圖8.45所示。

圖8.45自動(dòng)分配系統設備中斷編號

(14)生成軟嵌入式系統IP核。

單擊“SystemGeneration”選項卡,進(jìn)行最后的設定并生成系統。選中“HDLGeneratesystemmodulelogicinVerilog”。如果需要仿真,也選擇“SimulationCreateModelSim(tm)projectfiles”,然后單擊“Generate”按鈕,執行系統生成的任務(wù)。

然后,耐心地等待系統的生成。一般沒(méi)有問(wèn)題的話(huà),可以看到系統提示“SUCCESS:SYSTEMGENERATIONCOMPLETED”。如果看到此信息,則說(shuō)明系統被正確生成了。如果失敗,請返回并檢查、修改。

(15)在QuartusII工程中添加上述NIOS系統。

類(lèi)似向QuartusII工程添加功能模塊一樣,將所定制的NiosII軟核CPU添加到本例工程中。雙擊工程頂層圖空白處,彈出“Symbol”對話(huà)框,在“Project”下面可以找到剛才建立的niosii_c模塊,如圖8.46所示。

圖8.46在QuartusII中添加IP核

單擊“OK”按鈕將其niosii_c添加到頂層圖中。

(16)在QuartusII工程中添加端口分配管腳編譯。

首先在QuartusII中將NIOS等端口添加至工程中,并為工程添加相應的管腳約束,然后即可對工程進(jìn)行編譯。

(17)設計該工程軟件。

首先在A(yíng)lteraSOPCBuilder中,點(diǎn)擊RunNiosIIIDE,啟動(dòng)NiosIIIDE,如圖8.47所示。

圖8.47打開(kāi)NIOSIIIDE軟件

接下來(lái)我們要設計該工程的軟件。運行NiosIDE,在NiosIIIDE中,選擇“File”/“New”/“Project”選項,開(kāi)啟“NewProject”對話(huà)框,選擇“C/C++Application”,如圖8.48所示。

圖8.48新建軟件工程

然后單擊“Next”按鈕,進(jìn)入下一步,在模板中選擇“HelloLED”,如圖8.49所示。

單擊“SOPCBuilderSystem”右邊的“Browse”按鈕打開(kāi)目錄對話(huà)框,從該工程目錄下找到“niosii_c.ptf”,因為NiosIIIDE必須從這個(gè)文件獲取該系統的相關(guān)信息。單擊“Finish”按鈕,即建立一個(gè)名為Hello_LED_0的模板。

打開(kāi)項目中的文件:hello_led.c,根據需要進(jìn)行修改。在本實(shí)例程序中,“PIO_0_BASE”名稱(chēng)中的“PIO_0”應改為SOPCBuilder定義時(shí)的名稱(chēng),如圖8.49中的“Hello_LED_0”。

圖8.49采用設計模板

(18)編譯軟件。

右鍵單擊“hello_led_0”,在彈出的菜單中選擇“BuildProject”。(為使編譯過(guò)程更加順利,此時(shí)最好關(guān)閉殺毒軟件和其他占用電腦資源較大的軟件)。

如果無(wú)誤,可以看到以下信息:Buildcompleted。如果看到了這條提示,表示軟件編譯成功,可以看到程序占用空間等信息。

(19)下載驗證。

最后我們還要回到QuartusⅡ里面選擇“Tools”菜單里面的“Programmer”,下載整個(gè)配置到FPGA中去。

然后在NiosII環(huán)境中單擊“RunAsNiosIIHardware”按鈕將C程序下載到實(shí)驗板中。

本實(shí)例最終的硬件實(shí)現現象是led跑馬燈。

8.4.3小結

本節講解了一個(gè)完整的軟嵌入式設計流程。雖然此實(shí)例實(shí)現的功能比較簡(jiǎn)單,但對于初學(xué)者來(lái)說(shuō),是一個(gè)不錯的入門(mén)實(shí)例。其中硬件設計部分(SoPCbuilder)包括開(kāi)發(fā)板上所有設備,以后讀者可以在此硬件平臺上建立多個(gè)軟件運行。



關(guān)鍵詞: SOPC NiosII FPGA

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>