SOPCIIepcNIOSII實驗指導書(第二版)_第1頁
SOPCIIepcNIOSII實驗指導書(第二版)_第2頁
SOPCIIepcNIOSII實驗指導書(第二版)_第3頁
SOPCIIepcNIOSII實驗指導書(第二版)_第4頁
SOPCIIepcNIOSII實驗指導書(第二版)_第5頁
已閱讀5頁,還剩156頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 NIOSII 基礎(chǔ)實驗分冊 前 言隨著電子技術(shù)和計算機應用技術(shù)的深入發(fā)展以及EDA設(shè)計技術(shù)的不斷完善,不僅給電子系統(tǒng)的設(shè)計和應用帶來了新的設(shè)計思路和發(fā)展機遇,也對傳統(tǒng)的電子系統(tǒng)設(shè)計手段提出了嚴峻的挑戰(zhàn)。傳統(tǒng)的電子系統(tǒng)設(shè)計,是以各種不同的集成電路芯片為基礎(chǔ),按照功能要求要印制電路板上將不同的芯片拼連、組合,構(gòu)成實現(xiàn)某種功能的電子系統(tǒng)。這樣的設(shè)計方法不僅繁瑣,而且設(shè)計過程中的錯誤和不足之處不能及早的發(fā)現(xiàn);進入調(diào)試階段后,一旦發(fā)現(xiàn)錯誤或缺陷,也不能現(xiàn)場更正。無疑,這將使研發(fā)時間變長,研發(fā)成本加大。能夠克服上述缺點的是片上可編程系統(tǒng)(簡稱SOPC),它向傳統(tǒng)的電子系統(tǒng)設(shè)計方法發(fā)起了挑戰(zhàn)。微電子技術(shù)、

2、計算機應用技術(shù)的飛速發(fā)展,不僅使得電子系統(tǒng)的小型化、微型化進程加快,而且給電子系統(tǒng)設(shè)計帶來了前所未有的變革。大規(guī)模的FPGA芯片的問世,為電子系統(tǒng)設(shè)計提供了硬件基礎(chǔ),幾乎大多數(shù)的電子系統(tǒng)都可以在一片芯片上實現(xiàn)。ALTERA公司的QUARTUSII軟件就是EDA設(shè)計的最優(yōu)秀的軟件之一,使用它不僅可以靈活的設(shè)計電子系統(tǒng),而且還可以對設(shè)計方案進行模擬仿真,及早發(fā)現(xiàn)錯誤和缺陷。更為激動人心的是,SOPC設(shè)計是可裁剪和可配置的,尤其NIOSII CPU的構(gòu)造是可以靈活配置的。本實驗指導書以ALTERA公司的NIOSII IP核為中心,通過詳盡的說明讓讀者盡快的熟悉NIOSII的SOPC設(shè)計。本實驗指導書

3、只適用于SOPC-NIOSII EDA/SOPC實驗開發(fā)平臺的系列產(chǎn)品。由于時間倉促,作者水平有限,書中難免出現(xiàn)錯誤和遺漏,希望讀者批評指正。E-mail:whphtao QQ:308574616 編者 2006年11月目 錄SOPC概述1NIOS II實驗實驗一 建立簡單的NIOSII系統(tǒng)4實驗二 建立一個帶SRAM和JTAG UART的HELLO實驗35實驗三 PIO外部中斷按鍵開關(guān)實驗42實驗四 讀取開關(guān)信號的PIO輸入/輸出實驗52實驗五 基于Timer核的定時器的設(shè)計56實驗六 鍵盤掃描與顯示的設(shè)計66實驗七 串口通信實驗72實驗八 高速AD/DA實驗82實驗九 基于IIC的 EEP

4、ROM讀寫實驗89實驗十 圖形點陣液晶LCD顯示控制設(shè)計97實驗十一 PS/2鍵盤操作實驗106實驗十二 USB的枚舉實驗117實驗十三 以太網(wǎng)通迅實驗131附表一核心板載資源與EP2C35 I/O接口對照表138附表二EP2C35與開發(fā)平臺硬件資源I/O接口對照表140SOPC-NIOSII EDA/SOPC System Platform NIOSII Experiment GuidanceSOPC 概述SOPC是system on a programmable chip的縮寫,顧名思義就是把一個系統(tǒng)集成在單片可編程芯片中。一個最小系統(tǒng)應該包括中央處理單元(CPU)、隨機存儲器(RAM)和

5、Flash ROM(存儲代碼、數(shù)據(jù)等),稍微復雜點的系統(tǒng)至少應該包括UART、DMA、Timer、中斷管理模塊以及GPIO等。早在2002年的時候,Altera公司就基于SOC的設(shè)計思想,推出了其第一款32位RISC CPU軟核Nios,那時的Nios CPU功能簡單,執(zhí)行效率低下且不支持在線調(diào)試,所以并未得到很大的推廣。在Nios CPU基礎(chǔ)上,Altera公司又于2005年推出了其第二代32位RISC CPUNios II。與Nios CPU相比,Nios II CPU在性能方面得到了質(zhì)的提升,指令執(zhí)行速度快,執(zhí)行效率高,且支持JTAG在線調(diào)試。Nios II CPU的開發(fā)流程與Nios

6、CPU基本一致,唯一不同的就是Nios CPU的軟件開發(fā)是在Nios SDK Shell下進行,而Nios II CPU則是在Nios II IDE集成環(huán)境下開發(fā)。其基本開發(fā)流程依舊為:(1) 在Quartus II中新建一個工程(硬件)。(2) 在SOPC Builder中根據(jù)自己的需要加入各種IP核。(3) 利用SOPC Builder產(chǎn)生Quartus II能夠識別的文件。(4) 在(1)中新建的工程中加入(3)中生成的文件。(5) 加入輸入、輸出以及雙向端口,并根據(jù)需要對其命名。(6) 對(5)中命名的輸入、輸出核雙向端口根據(jù)選定的FPGA進行引腳分配。(7) 編譯工程。(8) 下載編

7、輯代碼到FPGA。(9) 利用Nios II IDE新建另一個工程(軟件)。(10) 根據(jù)(2)中的資源,編寫項目需要的代碼。(11) 編譯、下載并調(diào)試,查看運行結(jié)果,直到正確。(12) 如果需要,將(11)中生成的代碼下載到代碼Flash中。 說簡單一點,實際上SOPC的開發(fā)流程是一個軟硬件協(xié)同開發(fā)的過程,首先根據(jù)硬件需要,決定使用何種性能的CPU,加入系統(tǒng)需要的外設(shè)(SRAM、Flash、Timer、UART、Timer和GPIO等),此時一個基本的硬件系統(tǒng)便搭建起來了。利用專用工具,對這些象積木一樣搭起來的系統(tǒng)進行編譯,產(chǎn)生FPGA軟件可以識別的文件,然后再用FPGA專用軟件對這些文件進

8、行編譯,產(chǎn)生滿足加載FPGA的代碼,這樣一個硬件平臺就全部完成了。接下來工作就是軟件開發(fā),在軟件集成開發(fā)環(huán)境中編寫代碼,編譯后,下載到CPU中進行調(diào)試。整個過程中軟件工作量相對較大。下面對Altera的軟件開發(fā)環(huán)境作一些簡要說明。Nios II CPU使用的軟件開發(fā)環(huán)境叫Nios II IDE,它是Nios II系列嵌入式處理器的基本軟件開發(fā)工具。所有軟件開發(fā)任務(wù)都可以Nios II IDE下完成,包括編輯、編譯和調(diào)試程序。Nios II IDE提供了一個統(tǒng)一的開發(fā)平臺,用于所有Nios II處理器系統(tǒng)。僅僅通過一臺PC機、一片Altera的FPGA以及一根JTAG下載電纜,軟件開發(fā)人員就能夠

9、往Nios II 處理器系統(tǒng)寫入程序以及和Nios II處理器系統(tǒng)進行通訊。Nios II IDE基于開放式的、可擴展Eclipse IDE project工程以及Eclipse C/C+ 開發(fā)工具(CDT)工程。Nios II IDE為軟件開發(fā)提供四個主要的功能:(1)工程管理器Nios II IDE提供多個工程管理任務(wù),加快嵌入式應用程序的開發(fā)進度。新工程向?qū)ios II IDE推出了一個新工程向?qū)?,用于自動建立C/C+應用程序工程和系統(tǒng)庫工程。采用新工程向?qū)?,能夠輕松地在Nios II IDE中創(chuàng)建新工程。軟件工程模板除了工程創(chuàng)建向?qū)?,Nios II IDE還以工程模板的形式提供了軟件

10、代碼實例,幫助軟件工程師盡可能快速地推出可運行的系統(tǒng)。(2)編輯器和編譯器Altera Nios II IDE提供了一個全功能的源代碼編輯器和C/C+編譯器和文本編輯器Nios II IDE文本編輯器是一個成熟的全功能源文件編輯器。這些功能包括:語法高亮顯示 - C/C+、代碼輔助/代碼協(xié)助完成、全面的搜索工具、文件管理、廣泛的在線幫助主題和教程、引入輔助、快速定位自動糾錯、內(nèi)置調(diào)試功能。C/C+編譯器Nios II IDE為GCC編譯器提供了一個圖形化用戶界面,Nios II IDE編譯環(huán)境使設(shè)計Altera的Nios II處理器軟件更容易,它提供了一個易用的按鈕式流程,同時允許開發(fā)人員手工

11、設(shè)置高級編譯選項。Nios II IDE編譯環(huán)境自動地生成一個基于用戶特定系統(tǒng)配置(SOPC Builder生成的PTF文件)的makefile。Nios II IDE中編譯/鏈接設(shè)置的任何改變都會自動映射到這個自動生成的makefile中。這些設(shè)置可包括生成存儲器初始化文件(MIF)的選項、閃存內(nèi)容、仿真器初始化文件(DAT/HEX)以及profile總結(jié)文件的相關(guān)選項。(3)調(diào)試器Nios II IDE包含一個強大的、在GNU調(diào)試器基礎(chǔ)之上的軟件調(diào)試器GDB。該調(diào)試器提供了許多基本調(diào)試功能,以及一些在低成本處理器開發(fā)套件中不會經(jīng)常用到的高級調(diào)試功能?;菊{(diào)試功能Nios II IDE調(diào)試器

12、包含如下的基本調(diào)試功能:運行控制、調(diào)用堆棧查看、軟件斷點、反匯編代碼查看、調(diào)試信息查看、指令集仿真器。高級調(diào)試 除了上述基本調(diào)試功能之外,Nios II IDE調(diào)試器還支持以下高級調(diào)試功能:硬件斷點調(diào)試ROM或閃存中的代碼、數(shù)據(jù)觸發(fā)、指令跟蹤。(4)閃存編程器使用Nios II處理器的設(shè)計都在單板上采用了閃存,可以用來存儲FPGA配置數(shù)據(jù)和/或Nios II編程數(shù)據(jù)。Nios II IDE提供了一個方便的閃存編程方法。任何連接到FPGA的兼容通用閃存接口(CFI)的閃存器件都可以通過Nios II IDE閃存編程器來燒寫。除CFI閃存之外,Nios II IDE閃存編程器能夠?qū)B接到FPGA的

13、任何Altera串行配置器件進行編程。實驗一 建立簡單的NIOSII系統(tǒng)一、 實驗目的1、 學習QuartusII、SOPC Builder、NiosII IDE的基本操作。2、 初步了解SOPC的開發(fā)流程。3、 初步了解NIOSII IP核的設(shè)計流程。4、 掌握NIOSII IDE軟件的開發(fā)流程的使作調(diào)試方法。二、 實驗設(shè)備1、 硬件:PC機,SOPC-NIOS II EDA/SOPC系統(tǒng)開發(fā)平臺。2、 軟件:QuartusII 5.1、SOPC Builder 5.1、NiosII IDE 5.1。三、 實驗內(nèi)容快速建立一個用于控制LED燈閃爍的最簡單的NIOS II處理器系統(tǒng),讓使作者了

14、解一個SOPC開發(fā)的基本流程。整個開發(fā)流程包括以下幾個步驟:1、 在QuartusII中建立一個工程。2、 使用SOPC Builder建立并生成一個簡單的NIOS II硬件系統(tǒng)。3、 在QuartusII中編譯這個簡單的NIOS II硬件系統(tǒng)并生成其配置文件.SOF或.POF文件。4、 在NiosII IDE中建立一個相對應于這個NIOS II硬件系統(tǒng)的用戶C/C+工程,編寫一個簡單的用于處理這個簡單NIOS II硬件系統(tǒng)的用戶程序。5、 在NiosII IDE中編譯、修改、調(diào)試用戶程序,最后生成可執(zhí)行文件.elf文件。6、 將配置文件.SOF和可執(zhí)行文件.elf都下載到FPGA進行調(diào)試運行

15、。四、 實驗原理 為了使讀者更加快速的了解SOPC的開發(fā)流程,在這個實驗中,我們建立一個最簡單的SOPC系統(tǒng)??刂芁ED燈閃爍的用戶程序代碼很小,我們直接可以將其固化在片內(nèi)的ROM中來執(zhí)行。運行時使用片內(nèi)的RAM。因此這個NIOS II系統(tǒng)可以不使用任何處部的存儲器。相關(guān)的實驗電路請參考用戶手冊。整個系統(tǒng)框圖如圖1-1所示。圖1-1 控制LED的NIOSII系統(tǒng)框圖 我們還可以根據(jù)設(shè)計的需要,將其它的一些邏輯電路加入FPGA中。NIOSII系統(tǒng)可以與其它的邏輯電路相互作用。在本實驗中只用到了NIOSII系統(tǒng),沒有將其它的邏輯電路設(shè)計進去。五、 實驗步驟1、 使用QuartusII建立一個工程文

16、件 1)選擇開始>程序>Altera>QuartusII5.1,運行QUARTUSII軟件?;蛘唠p擊桌面上的QUARTUSII的圖標運行QUARTUSII軟件,出現(xiàn)如圖1-2所示,如果是第一次打開QUARTUSII軟件可能會有其它的提示信息,使用者可以根據(jù)自己的實際情況進行設(shè)定后進入圖1-2所示界面。圖1-2 QUARTUSII軟件運行界面2)選擇軟件中的菜單File>New Project Wizard,新建一個工程。如圖1-3所示。3)點擊圖1-3中的【NEXT】進入工作目錄,工程名的設(shè)定對話框如圖1-4所示。第一個輸入框為工程目錄輸入框,用戶可以輸入如e:/SOP

17、C等工作路徑來設(shè)定工程的目錄,設(shè)定好后,所有的生成文件將放入這個工作目錄。第二個輸入框為工程名稱輸入框,第三個輸入框為頂層實體名稱輸入框。用戶可以設(shè)定如EXP1,一般情況下工程名稱與實體名稱相同。使用者也可以根據(jù)自已的實際情況來設(shè)定。圖1-3 新建工程對話框圖1-4 指定工程名稱及工作目錄4)點擊【NEXT】,進入下一個設(shè)定對話框,按默認選項直接點擊NEXT進行器件選擇對話框。如圖1-5所示。這里我們以選用Cyclone系列芯片EP1C12F324C8為例進行介紹。用戶可以根據(jù)使用的不同芯片來進行設(shè)定。圖1-5 器件選擇界面首先在圖1-5的對話框的左上方的Family下拉菜單中選取Cyclon

18、e,在中間右邊的Speed grade下拉菜單中選取8,在左下方的Available devices框中選取EP1C12F324C8,點擊【NEXT】完成器件的選取,進入EDA TOOL設(shè)定界面如圖1-6所示。圖1-6 EDA TOOL對話框5)在按默認選項,點擊【NEXT】出現(xiàn)新建工程以前所有的設(shè)定信息,如圖1-7所示,點擊【FINISH】完成新建工程的建立。圖1-7 新建工程信息 6)在創(chuàng)建好設(shè)計工程后,選擇File>NEW菜單,出現(xiàn)圖1-8所示的新建設(shè)計文件類型選擇窗口。在圖1-8中選擇Block Diagram/Schematic File,單擊【OK】建立一個空的頂層模塊,缺省

19、名為Block.bpf,如圖1-9所示。圖1-8 新建設(shè)計文件選擇窗口圖1-9 將BDF存盤7)在Quartue II中的File菜單中點選“Save as”存盤并保證該文件添加到工程中,可以命名為EXP1。至此,頂層模塊文件建立完成。2、 使用SOPC Builder建立一個簡單的NIOSII硬件系統(tǒng)1) 啟動SOPC Builder在Quartue II集成開發(fā)軟件環(huán)境中選擇TOOLS菜單下的SOPC Builder選項或者點選快捷按鈕來啟動SOPC Builder。SOPC Builder啟動后顯示Create New System對話框,如圖1-10所示。值得注意的是打開SOPC Bu

20、ilder之前必須打開一個工程文件,否則SOPC Builder將無法打開。圖1-10 Create New System對話框 在圖1-10中的System Name輸入框中輸入NIOSII的名稱,名稱不得與工程名稱相同,否則這個NIOSII系統(tǒng)模塊無法插入到頂層模塊中。名稱設(shè)定完成后,點選輸出的設(shè)計語言,如VHDL,點選【OK】進入SOPC Builder圖形界面,如圖1-11 。圖1-11 SOPC Builder圖形界面2) 指定目標FPGA及時鐘在圖1-11中,Target和Clock選項區(qū)是用來設(shè)置SOPC Builder系統(tǒng)與外部的聯(lián)系。如果使用NIOS II IDE的FLASH

21、編程工具進行編程,則必須選取一個目標板Flash編程設(shè)計。在本實驗中沒有用到Flash進行編程設(shè)計,所以不用選取其它的目標板。所以Board選取“Unspecified Board”即可。由于開發(fā)平臺使用的時鐘為50M的時鐘,所以時鐘設(shè)置輸入50M。在Device Family下拉列表中選取開發(fā)平臺所用的目標FPGA芯片的系列“Cyclone”。的用戶可以根據(jù)開發(fā)的需要來進行設(shè)置。3) 添加NIOS II內(nèi)核在圖1-11所示的工作界面上,在可用元件列表區(qū)里,展開Avalon Components選取NIOS II Process Altera Corporation。點擊下方的【ADD】按鈕,

22、如圖1-12所示,進入Altera NIOS II配置向?qū)?,如圖1-13所示。在圖1-13中首先顯示的是Nios II Core設(shè)置選項,我們可以看到Nios II在該系列的FPGA中支持3種類型的CPU。每個CPU的具體參數(shù)下方都有說明,讀者可以根據(jù)應用要求和目標FPGA中的器件約束來選擇合適的CPU。在本開發(fā)平臺中我們選取Nios II/s內(nèi)核的CPU。具體配置如下:圖1-12 SOPC Builder圖形界面圖1-13 Nios II Core配置選項² Select a Nios II Core:Nios II/s² Hardware Multiply: None&

23、#178; Hardware Divide: 不選中點擊【NEXT】按鈕進入Cache&Tightly Coupled Memories設(shè)置選項,如圖1-14所示。用戶可以根據(jù)自己的實際情況進行設(shè)置,在本實驗中我們按默認選項進行設(shè)置。圖1-14 Cache&Tightly Coupled Memories設(shè)置選項點擊【NEXT】按鈕進入JTAG Debug Module設(shè)置選項,如圖1-15所示。為了方便調(diào)試,給CPU加入JTAG調(diào)試模塊。JTAG調(diào)試模塊要占用較多的邏輯單元,如果整個系統(tǒng)已調(diào)試完畢,可以選用“No Debugger”,以減少系統(tǒng)占用資源。JTAG調(diào)試模塊根據(jù)功

24、能的不同分成多級,每一級的功能在下方都有說明。本實驗選擇“Level 1”,支持軟件斷點調(diào)試。圖1-15 JTAG Debug Module設(shè)置選項點擊【NEXT】按鈕進入Custom Instructions 設(shè)置選項,如圖1-16所示。該設(shè)置選項用于用戶定制的指令。本實驗不使用用戶指定的指令,按按默認選項進行設(shè)置即可。圖1-16 Custom Instructions 設(shè)置選項單擊【Finish 】按鈕完成Nios II處理器的配置,生成一個帶JTAG調(diào)試接口的Nios II/s型的CPU核。要工作區(qū)將會出現(xiàn)一個名稱為cpu_0的Nios II內(nèi)核。在工作區(qū)內(nèi)右擊名稱為cpu_0的Nios

25、 II內(nèi)核,然后選擇“Renane” 將其重命名為cpu,如圖1-17所示,此時Nios II處理器內(nèi)核添加完成。圖1-17 加入名為CPU的myCPU系統(tǒng)注意:在添加完Nios II內(nèi)核后,要消息窗口會出現(xiàn)紅色錯誤提示,用戶可以不用理會,等其它外設(shè)添加結(jié)束后,這些錯誤信息會自動消失。4) 添加片內(nèi)存儲器 大家都知道,處理器至少要求一個存儲器用于數(shù)據(jù)和指令的存儲。因為本實驗的代碼相對較少,所以可以使用片內(nèi)的存儲器來進行存儲。本實驗設(shè)計一個2KB的片內(nèi)ROM存儲器(Onchip_ROM)用于存儲程序代碼。2KB的片內(nèi)RAM存儲器(Onchip_RAM)用于變量存儲、Heap、Stack等。其添加

26、步驟如下:在可用元件列表中,展開Memory選項,如圖1-18所示,選擇其組件下的“On_chip Memory-(RAM or ROM)”選項,點擊下方的【Add 】按鈕進入添加片內(nèi)存儲器配置向?qū)?,如圖1-19所示。圖1-18 SOPC Builder圖形界面圖1-19 片內(nèi)存儲器配置向?qū)?在Memory Type選項區(qū)域選中“RAM(writeable)”,指定為片內(nèi)的RAM型。 在Size選項中的“Total Memory Size”的輸入框中輸入“2”來指定2KB的存儲容量,其它設(shè)置不做更改,按默認設(shè)置即可。點擊【FinishT】按鈕完成片內(nèi)RAM的配置。此時在工作區(qū)內(nèi)將會出現(xiàn)一個名為

27、Onchip_memory_0的片內(nèi)RAM。右擊工作區(qū)中的Onchip_memory_0,然后選擇“Rname”將Onchip_memory_0重命名為Onchip_RAM,完成片內(nèi)RAM的添加。用相同的方法對片內(nèi)的ROM進行配置,不同的只是在Memory Type選項區(qū)域選中“ROM(read-only)”,指定為片內(nèi)的ROM型。在Size選項中輸入指定的大小,完成后,將工作內(nèi)生成的Onchip_memory_0重命名為Onchip_ROM,完成片內(nèi)ROM的添加。片內(nèi)ROM和片內(nèi)RAM添加完成后如圖1-20所示。圖1-20 加入名為onchip_ram和onchip_rom的myCPU系統(tǒng)5

28、) 添加PIOPIO為Nios II處理器系統(tǒng)接收輸入輸出信號提供了一種簡易的方法,根據(jù)本實驗的設(shè)計要求,加入一個一位的PIO用來驅(qū)動開發(fā)平臺上的一個LED燈。添加PIO的具體步驟如下:在可用元件列表中,展開Other選項,如圖1-21所示,選擇其組件下的“PIO(Parallel I/O)”選項,點擊下方的【Add 】按鈕進入添加PIO配置向?qū)В鐖D1-22所示。圖1-21 SOPC Builder圖形界面圖1-22 PIO配置向?qū)г趫D1-22所示的配置向?qū)е械腤idth選項區(qū)的輸入框內(nèi)輸入1,將PIO的寬度改為1位,在Direction選項區(qū)內(nèi)選擇Output ports only,即選擇

29、PIO為輸出模式。點擊Finish按鈕,在工作區(qū)內(nèi)將出現(xiàn)一個名為pio_0的PIO。右擊pio_0,然后選擇Rname選項,更名為LED_PIO。PIO設(shè)置完成后,如圖1-23所示。圖1-23 加入led_pio后的myCPU系統(tǒng)至此,整個設(shè)計所需要的IP核基本添加完畢。用戶可以根據(jù)自己的習慣來對添加的IP核重新命名。但要在IDE的用戶程序中使用相應的名稱。用戶還可以根據(jù)自己的設(shè)計需要添加如系統(tǒng)ID等其它外設(shè),其方法基本相同,這里不作說明。6) 指定基地址和中斷優(yōu)先級系統(tǒng)的IP核添加完成后,要對添加的IP核分配基地址和中斷請求優(yōu)先級(IRQ)。SOPC Builder提供Auto-Assign

30、 Base Address和Auto-Assign IRQs命令,這兩個命令分別可以簡單分配IP的基地址和中斷優(yōu)先級。用戶可點擊System菜單下的Auto-Assign Base Address和Auto-Assign IRQs,重新分配基地址和中斷優(yōu)先級。由于本實驗中所有的IP都沒有中斷,所以不需要進行中斷優(yōu)先級的分配。如圖1-24所示。圖1-24 自動分配基地址和中斷優(yōu)先級7) 設(shè)置Nios II復位和異常地址在圖1-24所示的SOPC Builder 的System Contens選項中,點擊【NEXT】按鈕進入到NiosII More “CPU” Settings選項,如圖1-25所

31、示。圖1-25設(shè)置Nios II復位和異常地址本實驗在系統(tǒng)上電后,從內(nèi)部ROM開始運行,所以將Reset Address的Memory Module設(shè)置為onchip_ROM,Offset地址為0X00000000。異常向量表放在內(nèi)部RAM中,所以將Exception Address的Memory Module設(shè)置為onchip_RAM,Offset地址為0X00000020。值得注意的是,Reset Address和Exception Address的Offset只有在多處理器系統(tǒng)中才進行設(shè)置,并且其值必須是0X20的倍數(shù)。如果地址設(shè)置違反規(guī)則,消息窗口將會給出錯誤提示。在圖1-25中的Le

32、gacy SDK support復選框用于生成第一代的Nios32處理器的軟件開發(fā)包(SDK),里面定義了有關(guān)Nios32處理器的軟件接口。本實驗介紹的均采用Nios IICPU 核,沒有使用Legacy系列的外設(shè)模塊,所以不需要選擇Legacy SDK support復選框。8) 編譯生成Nios II系統(tǒng)在圖1-25所示的SOPC Builder 的NiosII More “CPU” Settings選項中,點擊【NEXT】按鈕進入到System generation選項,如圖1-26所示。圖1-26 System generation選項Simulation. Create simula

33、tor project files.復選框不選中,以節(jié)省時間,因為本實驗不進行硬件仿真。單擊下方的【Generate】按鈕,系統(tǒng)生成開始。在系統(tǒng)生成過程中SOPC Builder會執(zhí)行很多操作。本節(jié)實驗中,SOPC Builder會執(zhí)行下列操作,用戶可以根據(jù)這些操作來理解SOPC Builder生成的各種文件的作用。² 為系統(tǒng)生成Nios II IDE軟件開發(fā)所需要的硬件抽象層(HAL)、C以及匯編語言頭文件。² 為系統(tǒng)編譯定制的軟件庫。² 生成VHDL源文件。² 生成片內(nèi)ROM和片內(nèi)RAM使用的HEX文件(空白文件)。Nios II系統(tǒng)生成后會生成下列

34、文件:² SOPC Builder系統(tǒng)文件mycpu.ptf。該文件存儲Nios II的硬件內(nèi)容。² VHDL文件mycpu.vhd和各外設(shè)的VHDL語言源文件。² Quartus II符號模塊文件mycpu.bsf。該文件用于添加到工程頂層文件中。系統(tǒng)生成過程的時間和PC機的性能有關(guān),一般需要幾分鐘。System generation選項的窗口會顯示整個生成的過程。當系統(tǒng)生成結(jié)束時,System generation選項的窗口會顯示系統(tǒng)生成完成的消息“SUCCESS:SYSTEM GENERATION COMPLETED。”,如圖1-27所示。單擊【NEXT】按

35、鈕退出并返回到Quartus II軟件開發(fā)界面,至此已經(jīng)完成Nios II處理器系統(tǒng)的創(chuàng)建。圖1-27 系統(tǒng)生成完成顯示3、 在QuartusII中編譯這個簡單的NIOS II硬件系統(tǒng)并生成其配置文件在本實驗中,由SOPC Builder生成Nios II處理器系統(tǒng)時將生成一個mycpu.bsf文件,我們還要將這個符號文件加入到已經(jīng)生成的頂層文件EXP1.BDF中,其具體步驟如下:1) 進入QuartusII中,在EXP1.BDF圖形編輯窗口的任意處雙擊,彈出添加符號(Symbol)對話設(shè)置框,如圖1-28所示。圖1-28 Symbol對話框2) 如圖1-28所標記,展開Libraries窗口

36、下面Project文件夾,會出現(xiàn)我們在前面生成的Nios II處理器系統(tǒng)myCPU。選取myCPU,其右邊窗口中會出現(xiàn)一個大的myCPU的符號文件。點擊下方的【OK】按鈕,myCPU符號文件被附在鼠標的指針上,我們可以在EXP1.BDF圖形編輯窗口的適合位置放置該符號文件。如圖1-29所示。圖1-29 添加mycpu系統(tǒng)后的頂層模塊窗口3) 在圖1-29中,clk和 reset_n是Nios II處理器的端口,out_prot_from_the_led_pio是我們前面定義的控制LED的輸出信號端口。下面我們還要為這些引腳添加輸入和輸出引腳。和添加mycpu一樣,在EXP1.BDF圖形編輯窗口

37、的任意處雙擊,彈出添加符號(Symbol)對話設(shè)置框,如圖1-30所示。圖1-30 Symbol對話設(shè)置框展開c:/altera/quartus51/libraries下的primitives文件夾下的pin文件夾。選擇pin文件夾下的input組件,單擊下方的【OK】按鈕,拖動鼠標將input放置到合適的位置,用戶也可以在Name文本輸入框內(nèi)輸出想要的組件名稱,得到想要的組件,放置在頂層模塊文件中。通過模塊編輯工具將input引腳與相應的Nios II處理器的端口連接起來。4) 用同樣的方法添加其它端口的輸入/輸出引腳。一般來講,在系統(tǒng)左邊的端口為輸入(input)端口,在右邊的端口為輸出(

38、output)端口和輸入/輸出雙向(bidir)端口。在本實驗中只用到了輸入(input)端口和輸出(output)端口。通過模塊編輯工具將輸入/輸出引腳與相應的端口連接好。完成后如下圖1-31所示。圖1-31 加入輸入/輸出引腳后的Nios II系統(tǒng)5) 雙擊各引腳符號,進行引腳命名。在本實驗中完成引腳命名后如下圖1-32所示。在圖中可以看到,clk端口的引腳命名為clk,reset_n端口的引腳命名為reset,out_port_from_the_led_pio命名為led。圖1-32 更名后的Nios II系統(tǒng)6) 命名完成后,要選擇器件的型號,因為有開始的時候已經(jīng)選擇了器件的型號,這一

39、步可以跳過。用戶根據(jù)實際情況來選擇。完成后進行編譯,這一步主要是看生成的頂層文件是否有錯誤。并修改正確。其步驟如下: 點擊Processing菜單下面的Start Compilation(也可直接點擊工具欄上的編譯按鈕),開始編譯當前工程。如果編譯出現(xiàn)紅色的錯誤提示,要找出錯誤并更正,直到編譯無誤。7) 編譯無誤之后,要對輸入/輸出的引腳分配到FPGA當中,用戶可以根據(jù)本實驗指導書的附錄部分,找到要分配的系統(tǒng)的各端口對應的FPGA的引腳。本實驗系統(tǒng)的各端口對應的FPGA的引腳如下表1-1所示。以后的實驗用戶可以查找附錄中實驗平臺與FPGA的引腳對應表,我們將不再列表說明。本實驗引腳分配的步驟如

40、下:端口名稱信號說明FPGA引腳號說明Clk時鐘信號J350MReset復位信號C4ledLED燈D1A9表1-1 系統(tǒng)各端口與FPGA對應表 點擊Assignments菜單下面的Pin Planner(也可直接點擊工具欄上的引腳分配按鈕),進入到引腳分配窗口。左鍵單擊Quartus II引腳分配窗口中clk對應的Value欄,待其變成藍色背景后,鍵入J3,按回車鍵,會發(fā)現(xiàn)軟件自動將其更改為PIN_J3,同時藍色選擇條會自動跳轉(zhuǎn)到Value欄的下一行,這表明軟件已經(jīng)將clk分配到FPGA的J3引腳上。按上面的步驟和各端口對應的FPGA引腳表,將其它端口對應的FPAG引腳進行分配,完成后如圖1-

41、33所示。圖1-33 FPGA引腳分配8) 為使分配的引腳生效,重新編譯工程。工程成功編譯后會彈出一個對話框,點擊【確認】按鈕即可,如圖1-34所示。需要說明的是,在編譯的過程中,要對FPGA沒有使用的管腳進行設(shè)置。一般來講,我們將沒有使用的引腳定義為高阻輸入,這樣上電后FPGA的所有不使作的引腳將進入高阻抗狀態(tài)。具體的操作步驟請讀者自行參考Altera公司的QuartusII的使用手冊。在本實驗平臺上實驗不使用的引腳實際還是與其它功能模塊相連接,這樣下載后,會使有些LED發(fā)光管被點亮,這是正?,F(xiàn)象。圖1-34 編譯完成窗口9) 至此,一個基于Nios II系統(tǒng)的硬件工程文件及其配置文件生成完

42、成。用戶在生成的過程中可能會產(chǎn)生很多的警告信息,但不會影響設(shè)計的結(jié)果,用戶可以優(yōu)化設(shè)計,來消除這些警告信息。同時用戶還可以查看編譯報告、綜合報告、適配報告、時序分析報告等。這里不再做詳細的說明。4、 在NiosII IDE中建立用戶C/C+工程,編寫用戶程序 生成基于NiosII系統(tǒng)的硬件系統(tǒng)后,我們要設(shè)計一個應用程序使Nios II系統(tǒng)運行起來。本實驗將建立和編譯一個簡單的LED燈閃爍的C語言程序,來說明建立的整個過程。其步驟如下:1) 在【開始】菜單中,啟動Nios II IDE。啟動后,出現(xiàn)Workspace Launcher對話框,如圖1-35所示。單擊【Browse】按鈕為Quart

43、us II工程的文件夾設(shè)置工作空間。點擊【OK】按鈕進入Nios II IDE編輯界面。若是第一次進入工作區(qū),Nios II IDE會先彈出一個歡迎界面,此時單擊歡迎界面右上角的Workbench圖標,就可進入Nios II IDE編輯界面。如圖1-36所示圖1-35 設(shè)置IDE工作空間圖1-36 Nios II IDE編輯窗口2) 在圖1-36所示的IDE編輯窗口中,選擇file菜單下的New子菜單中的Project,會出現(xiàn)圖1-37所示工程類型選擇窗口(也可以通過點擊工具欄上的新建工程圖標)。圖1-37 選擇工程類型對話框3) 直接選擇C/C+ Application后,點擊【Next】按

44、鈕,進入到創(chuàng)建工程對話框。在對話框中作如下的設(shè)置。設(shè)置完成后如圖1-38所示。² Name: niosii_led 工程文件的名稱² Use Default Lacation:選中² SOPC Builder System:D:sopctestexample1mycpu.ptf即前節(jié)生成 的mycpu.ptf文件,指向當前的硬件設(shè)計文件。² Select Project Template:Blank Project 空的工程不使作工程模板。圖1-38 完成設(shè)置后的工程向?qū)?) 設(shè)置完成后,點擊【NEXT】按鈕,進入工程文件系統(tǒng)庫設(shè)置對話框,如圖1-39所

45、示。圖1-39 系統(tǒng)庫設(shè)置對話框5) 在圖1-39的對話框中選擇Create a new system library named:,然后點擊【Finish】按鈕,完成新工程的創(chuàng)建。此時在Nios II IDE左側(cè)的C/C+ Projects選項中會出現(xiàn)niosii_led和niosii_led_syslib兩種新的工程。其中niosii_led是C/C+應用工程,niosii_led_syslib是描述系統(tǒng)硬件的系統(tǒng)庫。6) 此時的工程是一個空的工程,沒有用戶文件,所以必須創(chuàng)建一個新的文件,來編寫屬于自己的程序代碼。右鍵點擊C/C+ Projects窗口中Hello_Nios_II工程,點擊

46、快捷菜單中New/File,如圖1-40。彈出圖1-41所示對話框后,在File name中鍵入文件名main.c,然后點擊【Finish】按鈕,此時工程中會出現(xiàn)該文件。圖1-40 創(chuàng)建新的文件圖1-41 設(shè)置文件名7) 設(shè)置完成后,現(xiàn)在可以編寫C程序了。在C程序輸入框輸入應用程序,如圖1-42所示。應用程序源代碼已列在其中,僅供讀者參考。圖1-42 輸入C程序8) 程序設(shè)計完成后存盤,點擊Project菜單下的Build All(可以點擊工具欄上的編譯按鈕),編譯文件,如圖1-43所示。對錯誤的程序根據(jù)錯誤提示信息,進行修改直到編譯通過。圖1-43 編譯文件9) 編譯完成之后,會在消息窗口顯

47、示編譯的信息,如文件大小等,讀者可以自己去了解其含義。至此,對Nios II處理器的應用工程文件全部設(shè)計完成。需要說明的是,在進行編譯之前,有時要對工程系統(tǒng)屬性進行設(shè)置。Nios II IDE中的工程和屬性設(shè)置控制了工程與硬件系統(tǒng),會影響到IDE將怎樣編譯工程文件。本實驗工程系統(tǒng)屬性按默認設(shè)置進行設(shè)置。其具體的設(shè)置將在以后的實驗中作詳細說明,這里不贅述。5、 調(diào)試、運行程序在調(diào)試運行之前首先要對硬件進行連接,這樣軟件才能夠檢測到連接的硬件,才能正確的調(diào)試運行。1) 將開發(fā)平臺與PC機通過下載電纜連接起來,如果用的是并口的下載電纜,將并口下載電纜的JTAG插入開發(fā)平臺的核心板的JTAG下載口,另

48、一端接上PC機的并行口。如果用的是USB的下載線,JTAG連接相同,其下載線的另一個端口則連接到PC機的USB口。在以下的圖片中,均使用的是USB下載電纜。打開開發(fā)系統(tǒng)的電源,保證開發(fā)平臺電源正常。2) 在Quartus II中通過USB下載電纜將EXP1.sof文件通過JTAG接口下載到FPGA中。等數(shù)據(jù)配置完成后,返回Nios_II IDE窗口。點擊Nios II IDE中Run菜單下的Run,會出現(xiàn)圖1-44所示的設(shè)置Nios II硬件窗口。圖1-44 設(shè)置Nios硬件窗口3) 右鍵點擊Configuration窗口中的Nios II Hardware,然后點擊快捷菜單中的New。新建一

49、個Nios II配置,此時軟件會自動搜索硬件連接,最后出現(xiàn)圖1-45所示的Run窗口界面。圖1-45 新建的硬件配置在新建的硬件配置中作如下設(shè)置:² Main標簽ü Project:niosii_led 用戶可以通過【Browse】按鈕來選擇工作的工程文件。本實驗中只有一個工程,按默認即可。² Target Connection標簽ü JTAG cable:USB-Blaster USB-0 檢測到的USB下載電纜。ü JTAG device:1 EP1C12 用戶可以按選擇autoomatic。ü Nios II Terminal

50、communication device:none其它標簽均按照默認設(shè)置。設(shè)置完成后,點擊【Apply】按鈕,將改配置應用到新建的工程中,然后關(guān)閉Run窗口。如圖1-46所示。圖1-46 將新建的系統(tǒng)配置應用到當前軟件工程4) 運行程序。點擊Run菜單Run AS子菜單中的Nios II Hardware(也可點擊工具欄中的運行圖標),運行程序。正確運行后,在IDE的消息窗口會出現(xiàn)如圖1-47所示界面。圖1-47 運行完成后的IDE界面六、 實驗結(jié)果 程序運行后,在開發(fā)平臺上的LED燈模塊的D1會按照設(shè)計程序的要求開始閃爍。驗證完成后,請退出Nios II IDE軟件,關(guān)閉Quartus II

51、軟件,關(guān)閉實驗箱電源,拔出USB下載電纜。七、 實驗報告 總結(jié)SOPC開發(fā)流程。實驗二 帶SRAM和JTAG UART的HELLO實驗一、 實驗目的1、 進一步熟悉用Quartus II開發(fā)SOPC的基本流程。2、 進一步了解SOPC的開發(fā)流程。3、 熟悉用Nios II IDE進行C語言編譯、下載的基本過程。4、 掌握整個Nios II集成開發(fā)環(huán)境。二、 實驗設(shè)備1、 硬件:PC機,SOPC-NIOS II EDA/SOPC系統(tǒng)開發(fā)平臺。2、 軟件:QuartusII 5.1、SOPC Builder 5.1、NiosII IDE 5.1。三、 實驗內(nèi)容為了進一步熟悉SOPC的基本開發(fā)流程,

52、本實驗要完成的任務(wù)就是設(shè)計一個帶外扣SRAM和JTAG輸出的系統(tǒng),系統(tǒng)中包括Nios II CPU、作為標準輸入/輸出的JTAG UART以及存儲執(zhí)行代碼SRAM。通過SOPC Builder對系統(tǒng)進行編譯,然后通過Quartus II對系統(tǒng)進行二次編譯,并把產(chǎn)生的FPGA配置文件通過USB下載電纜下載到實驗箱上,這時便完成了本實驗中的硬件開發(fā)。接下來的工作是軟件協(xié)同開發(fā)在Nios II IDE中編寫一個最簡單的C代碼,對其編譯后,通過USB下載電纜下載到FPGA中執(zhí)行,執(zhí)行的結(jié)果就是在Nios II IDE的Console窗口打印一條信息“Hello Nios II!”。四、 實驗原理 本實驗的實驗原理與實驗一的實驗原理基本一致,在本實驗中用外部的SRAM代替了片內(nèi)的RAM和ROM用來存儲執(zhí)行代碼。同時本實驗增加了一個標準輸入/輸出的JTAG UART端口。因為在核心板上SRAM與FLASH只用一組數(shù)據(jù)線,為了防止數(shù)據(jù)沖突,所以我們在設(shè)計系統(tǒng)硬件的時候還要加入一個FLASH的片選信號。相關(guān)的實驗電路請參考用戶手冊。五、 實驗步驟1、 使用QuartusII建立一個工程文件和頂層文件,方法與實驗一相同。2、 使用SOPC Builder建立一個簡單的NIOSII硬件系統(tǒng)。1) 啟動SOPC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論