NIOS II 创建示例设计_Quartus II 9.0
安裝設(shè)計文件
在繼續(xù)之前,您必須安裝 Quartus II 軟件和 Nios II 嵌入式設(shè)計套件。
?
分析系統(tǒng)要求
本部分介紹的教程示例設(shè)計的系統(tǒng)要求。設(shè)計的目標(biāo)如下:
?
有關(guān)這些和其他組件,完整詳細(xì)信息請參閱___<<NIOS II 外圍設(shè)備>>。
?
啟動 Quartus II 軟件并新建設(shè)計項目
在設(shè)計之前,應(yīng)該建立工作目錄。每個設(shè)計都是一項工程,一般都單獨建一個工作目錄。
在此設(shè)置的工作目錄為E:\sopc_project\led
1.啟動 Quartus II 軟件。
在 Windows 計算機上,單擊<開始>,指向<程序>,Altera,Quartus II 9.0,然后單擊 Quartus II 9.0。
2.啟動New Project Wizard
選擇File→New Project Wizard,彈出如圖1所示對話框。單擊該對話框最上一欄右側(cè)的按鈕“…”,設(shè)置當(dāng)前工作目錄。在第二欄設(shè)置當(dāng)前工程名字,一般將頂層文件的名字作為工程名,例如工程名為sopc_led。第三欄是頂層文件的實體名。
3.把設(shè)計文件添加到工程中
單擊Next按鈕,彈出Add File對話框,如圖2所示。在此可將有關(guān)的文件加入到工程中,選擇默認(rèn)即可。
4.選擇目標(biāo)器件
單擊Next按鈕,出現(xiàn)選擇目標(biāo)器件對話框,如圖3所示。在Family選項中選擇Cyclone II器件系列,并在Target device中選擇第二項
在可選的設(shè)備列表中指定目標(biāo)器件。可以通過右邊的Filters“過濾”選擇。在此選擇EP2C35F484C8器件。用戶可以根據(jù)自己開發(fā)板的情況進行不同的設(shè)置。
5.選擇綜合器和仿真器
單擊Next按鈕,則彈出選擇仿真器和綜合器的對話框EDA Tool Settings,如圖4所示。如果選擇默認(rèn)的None,則表示選擇Quartus II自帶的仿真器和綜合器。也可以選擇其他第三方綜合器和仿真器等專業(yè)EDA工具。
(5)、結(jié)束設(shè)置
單擊Next按鈕,出現(xiàn)工程設(shè)置信息顯示畫面,如圖5所示,對前面設(shè)置情況進行了匯總。點擊Finish按鈕,即完成了當(dāng)前工程的創(chuàng)建。在工程管理窗口中出現(xiàn)當(dāng)前工程的層次結(jié)構(gòu)顯示,如圖6所示。
創(chuàng)建一個新的 SOPC Builder系統(tǒng)
您可以使用 SOPC Builder來生成 Nios II 處理器的系統(tǒng),添加所需的組件,并配置它們?nèi)绾芜B接在一起。請執(zhí)行以下步驟來創(chuàng)建一個新的 SOPC Builder系統(tǒng):
1.在 Quartus II 軟件中的工具菜單上單擊 SOPC Builder。
SOPC Builder將啟動并顯示創(chuàng)建新的系統(tǒng)對話框。
2.鍵入 std_2c35 作為該系統(tǒng)的名稱。
3.選擇 Verilog 或 VHDL 作為目標(biāo)硬件描述語言。以后當(dāng)您生成的系統(tǒng),SOPC Builder將輸出中您選擇的語言的設(shè)計文件。
4.單擊確定。SOPC Builder GUI 將出現(xiàn),顯示系統(tǒng)目錄選項卡。
如下圖:SOPC Builder圖形用戶界面
使用SOPC Builder創(chuàng)建Nios II系統(tǒng)模塊
可以使用 SOPC Builder來定義硬件特性的 Nios II 系統(tǒng),例如,哪些 Nios II 核心要使用,以及哪些組件,包括在系統(tǒng)中。SOPC Builder并不定義軟件行為,如在內(nèi)存中存儲的指令或發(fā)送 stderr 字符流的位置在哪里。
在本節(jié)中,您將執(zhí)行以下步驟:
1.指定目標(biāo) FPGA 和時鐘設(shè)置。
2.添加 Nios II CPU、 內(nèi)存和其他組件。
3.指定基址和中斷請求 (IRQ) 的優(yōu)先事項。
4.生成 SOPC Builder系統(tǒng)。
SOPC Builder設(shè)計過程不需要是線性的。在本教程中的設(shè)計步驟為新用戶了解的最簡單的順序顯示。但是,您可以按不同的順序來執(zhí)行 SOPC Builder設(shè)計步驟。
指定目標(biāo) FPGA 和時鐘設(shè)置
系統(tǒng)內(nèi)容選項卡的目標(biāo)和時鐘設(shè)置部分指定系統(tǒng)中的 SOPC Builder系統(tǒng)關(guān)系到其他設(shè)備。請執(zhí)行以下步驟:
1.選擇匹配您的目標(biāo)的 Altera FPGA 的設(shè)備系列。
在這里選擇器件系列Device Family是cyclone II。
2. 系統(tǒng)的工作的外部時鐘頻率改為100 Mhz(雙擊它即可修改)。
添加Nios II CPU Core
選擇SOPC Builder組件選擇欄中的Component Library→Nios II Processor,雙擊或者單擊下面的“ADD”,打開添加Nios II Processor對話框,如圖10所示。
這里給我們提供了三種類型:
Nios II/e占用資源最少600-800LEs,功能也最簡單,速度最慢。
Nios II/s占資源比前者多一些,功能也多了,速度也要快一些。
Nios II/f占資源最多,功能也最多,速度最快。
選擇的時候要根據(jù)你的需求和你的芯片資源來決定。在這里,我選擇Nios II/f,功能和速度都可以得到滿足。
下面的:
Reset Vector是復(fù)位后啟動時的Memory類型和偏移量,
Exception Vector是異常情況時的Memory類型和偏移量。
現(xiàn)在還不能配置,需要SDRAM和FLASH設(shè)置好以后才能修改這里,這兩個地方很重要。
點擊Next,如下11所示,將Data master→Data Cache處選擇為None,也就是關(guān)閉Data Cache。
接下來連續(xù)點擊Next,一直到如圖12為止。
這是設(shè)置JTAG Debug Module,即JTAG調(diào)試時所用到的功能模塊。功能越多,需要的資源越多。這里我們選擇Level 1即可,不需要過多其他的功能。點擊Finish,結(jié)束Nios II Processor的建立后,如圖13所示。
添加SDRAM模塊
選擇SOPC Builder組件選擇欄中的system content→memories and memory controllers→SDRAM→SDRAM controller,雙擊或者單擊下面的“ADD”,打開SDRAM controller的對話框。如圖14所示。
在Presets中選擇第一項Custom。
在data width中選擇16.在Architecture中的chip select: 2 ,bank : 4。
在Address widths中的row: 13,column:9。
如圖15所示。
點擊Next,點擊Finish,完成SDRAM控制器的設(shè)置。在這里我們用的SDRAM是兩片HY57V561620。
添加EPCS控制器
選擇SOPC Builder組件選擇欄中的system content→memories and memory controllers→Flash→EPCS serial Flash。雙擊或者單擊下面的“ADD”,打開EPCS serial flash controller的對話框。如圖16所示。
直接點擊Finish完成添加。
添加JTAG UART
選擇SOPC Builder組件選擇欄中的system content→Interface protocols→serial→JTAG UART。雙擊或者單擊下面的“ADD”,打開JTAG UART的對話框。如圖18所示。
直接點擊Next→Finish完成。
添加systen ID模塊
選擇SOPC Builder組件選擇欄中的system content→peripherals→Debug and performance system ID peripheral。雙擊或者單擊下面的“ADD”,打開system ID peripheral的對話框。如圖17所示。
點擊Finish,完成System ID的建立。
添加PIO模塊
選擇SOPC Builder組件選擇欄中的system content→peripherals→microcontroller peripherals→PIO。雙擊或者單擊下面的“ADD”,打開PIO的對話框,配置成4位輸出。如圖19所示。
點擊Next→Finish完成。
到此為止,基本的NIOS系統(tǒng)模塊就建立完成了,如圖20所示。
如上圖所示,我們可以把各個模塊的名稱的后面的_0去掉,單擊要修改的名字ctrl+r或右鍵選Rename,輸入新名字即可。如21圖所示.
指定基址和中斷請求 (IRQ) 的優(yōu)先事項。
我們需要對FLASH地址進行鎖定,復(fù)位重啟的地址我們鎖定為0x00000000,雙擊cfi_flash_controller的base地址修改,修改完成后再點擊它前面的小鎖,使其鎖住。表示地址已鎖定,如圖23所示。
接下來是地址自動分配操作,點擊SYSTEM->Auto-assign Basic Addresses,如圖24所示。
接下來是中斷的自動分配,和地址自動分配一樣,SYSTEM-> Auto-assign IRQs,如圖25所示。也可以手動分配。
接下來我們需要對cpu進行設(shè)置,雙擊cpu,Reset Vector處的Memeory選擇cfi_flash_controller,Exceptioni Vector選擇sdram,其他不變,如圖22所示.
點擊Finish,完成cpu設(shè)置。
生成 SOPC Builder系統(tǒng)
生成Nios II系統(tǒng),單擊system Generation標(biāo)簽,在options下進行如圖26所示的設(shè)置。
點擊Generate。開始生成Nios II系統(tǒng)。需要等待一會兒。知道出現(xiàn)info:system generation was successful,如圖27所示。表示已經(jīng)編譯好,點擊Exit,回到了Quartus界面。
?
集成Nios II系統(tǒng)到Quartus II 項目
在本節(jié)中,您執(zhí)行以下步驟來完成的硬件設(shè)計:
■實例中,Quartus II SOPC Builder系統(tǒng)模塊化項目。
■分配 FPGA 針腳。
■編譯 Quartus II 項目。
■驗證時間。
?
配置工程
我們要對工程配置一下了,在左側(cè)邊框欄右鍵點擊,如圖47所示。
點擊setting后,如圖48所示,點擊Device and Pin Options。
點擊后如圖49所示,點擊Configuration。
點擊后,將use configuration device改為EPCS16,如圖50所示。
實例化 SOPC Builder系統(tǒng)模塊 Quartus II 項目中
首先創(chuàng)建一個頂層文件,在Quartus II 窗口中選擇File→New,打開如圖28所示的窗口,選擇block Diagram/schematic File,即建立原理圖文件。
點擊File→save As…保存為sopc_led.bdf,如圖29所示。
在sopc_led.bdf中的空白處雙擊,即可彈出symbol窗口。選擇project→std_2c35,如圖30所示。點擊OK,將系統(tǒng)模塊添加到了頂層模塊中。如圖31所示。
建立鎖相環(huán)PLL模塊。
接下來的工作我們需要建立一個鎖相環(huán),對時鐘進行倍頻,我們板子上是50MHz的有源晶振,我們要將其倍頻到100MHz滿足我們前面所設(shè)定的NOIS軟核的時鐘,還需要為SDRAM提供100MHz的時鐘。下面我們就開始鎖相環(huán)PLL模塊。在sopc_led.bdf的空白處雙擊鼠標(biāo),點擊megawizard plug-in manager…如圖32所示。
出現(xiàn)如圖33 點擊Next
選中IO下的ALTPLL,將鎖相環(huán)命名為PLL,如圖34所示。
點擊下一步,將General 的速度設(shè)置為8,輸入時鐘為50Mhz,如圖35所示。
設(shè)置好以后,點擊Next,將下圖中選中的地方去掉后。如圖36所示。
連續(xù)點擊Next,直到出現(xiàn)C0輸出頻率的設(shè)置,將倍頻設(shè)置為2,輸出100Mhz時鐘,如圖37所示。
設(shè)置好以后點擊Next,選中USE this clock,使用這部分給SDRAM提供時鐘,時鐘頻率為100Mhz,偏移量為-75deg。如圖38所示。
設(shè)置好以后,連續(xù)點擊Next,中間沒有需要修改的,最后點擊Finish,完成PLL的建立,然后點擊OK,回到Quartus界面,將我們建好的PLL放到空白處。
接下來的工作就是將PLL連接到NIOS軟核上。如圖39所示。
分配 FPGA 的針腳
PLL和std_3c25上點擊右鍵后點擊Generate Pins for symbol ports,這一步作用就是生成管腳,通過命名以后分配真實的引腳。如圖40所示。
生成引腳后,如圖41所示。
修改引腳的名稱,使其具有意義,與腳本文件中的引腳命名相對應(yīng),修改完成后如圖42所示。
腳本文件分配管腳
先將腳本文件復(fù)制到工程文件下面如圖43所示。
我們將會提供給大家寫好的TCL文件,到時候大家根據(jù)我給大家的TCL文件,將相應(yīng)的管腳命名即可。修改好以后,按圖44所示操作。
點擊以后,出現(xiàn)45圖,我們選擇第一個EP2C35F484C8.tcl。點擊RUN。
出現(xiàn)如圖46圖,說明腳本文件運行成功了。
編譯 Quartus II 項目
點擊Start Compilation如圖52所示的按鈕,開始編譯。接下來就開始了又一個漫長的編譯過程了,大家又可以休息一會了。
經(jīng)過了漫長的編譯過程,如果沒有問題,編譯成功后將出現(xiàn)如圖52所示的對話框。
點擊確定,編譯過程全部結(jié)束。我們可以通過編譯報告來看看我們用了多少資源,如圖53所示。
下載到目標(biāo) FPGA 的硬件設(shè)計
1. 打開編程窗口和配置文件
在Quartus II 中直接點擊Programmer或選擇主菜單Tools—>Programmer,打開編程窗口,如下圖所示,在Mode下拉列表框中有4種編程模式可以選擇:JTAG、Active Serial 、Passive Serial和In-Socket。為了直接對FPGA進行配置,選擇JTAG模式,并選中下載文件右側(cè)的第一個小方框Program/Configure,注意核對下載文件的路徑與文件名。如果此文件沒有出現(xiàn)或者有錯,可以單擊左側(cè)Add File 按鈕,手動配置所需下載的文件是sopc_led.sof。
2. 設(shè)置編程器
在配置好下載文件sopc_led.sof后,要進行編程器設(shè)置。如果是首次使用Programmer進行連接下載,則須將試驗系統(tǒng)與USB通信電纜連接好并打開電源。這時,系統(tǒng)提示用戶安裝USB-Blaster的驅(qū)動程序,用戶須指定驅(qū)動程序存放的路徑,然后進行安裝。安裝成功后,在編程窗口中Hardware Setup按鈕的右邊顯示出USB-Blaster編程方式。以后再打開編程窗口時,只要USB電纜連接好,電源打開,系統(tǒng)就會自動設(shè)置成USB-Blaster編程方式。
3. 下載配置文件
單擊編程窗口左側(cè)的Start按鈕,編程器開始把配置數(shù)據(jù)下載到FPGA中。這時,在下載進度條Progress段會顯示下載數(shù)據(jù)的百分比,如下圖。當(dāng)下載完成時,會在信息窗口出現(xiàn)下載成功的消息。
?
?
使用 Nios II IDE 的軟件開發(fā)
創(chuàng)建新的 Nios II C/c + + 應(yīng)用程序項目
1.啟動 IDE Nios II。在 Windows 計算機上,單擊開始,指向程序,Altera、 Nios II EDS 9.0,然后單擊 Nios II IDE 9.0。
2.在Nios II IDE中,選擇FileàNewàProject,開啟新項目對話框,選擇Altera Nios IIàC/C++ Application,如下圖:
3.單擊Next按鈕,進行新項目的設(shè)定。在這個步驟中提示用戶指定新項目名、項目工作路徑、目標(biāo)硬件及新項目模板。在此選擇項目模板為Hello World,設(shè)定項目名為Hello_led,設(shè)定工作路徑為D:\sopc_project\led\software,單擊SOPC Builder System右邊的Browse按鈕,選擇前面生成的ptf文件,因為Nios II IDE需要從這個文件中獲取該系統(tǒng)的相關(guān)信息。如下圖所示:
4.然后單擊Next按鈕,進入下一步,為項目創(chuàng)建系統(tǒng)庫。系統(tǒng)庫是設(shè)備驅(qū)動程序集,提供對目標(biāo)硬件的訪問,如下圖所示:
5.這樣,整個新項目創(chuàng)建完成了,單擊Finish按鈕,出現(xiàn)下圖:
修改源程序文件
修改程序的文件名。如下圖所示,選中Hello_World,右鍵選擇Rename。鍵入hello_led.c。
修改程序,雙擊helllo_led.c。編輯它,如圖所示:
編譯項目
1.右鍵單擊 hello_led,然后單擊System Library Properties。如下圖:
2.單擊System Library。
3.更改以下設(shè)置以減少編譯的可執(zhí)行文件的大小。如下圖:
a.開啟程序從不退出。
b.關(guān)閉支持 c + +。
c.關(guān)閉清潔退出 (刷新緩沖區(qū))。
d.打開小 C 庫。
4.單擊確定以關(guān)閉屬性對話框并返回到 IDE工作臺。
5.單擊ProjectàBuild All或按ctrl+B鍵,對項目進行編譯。如下圖:
編譯進度:
編譯完成:
運行程序
在項目編譯調(diào)試之后,就可以運行程序了。運行方式有:Nios II Hardware、Nios II Instruction Set Simulator,分別是目標(biāo)板運行、指令集仿真器運行。
運行程序的方法可以有如下幾種:
選擇RunàRun As,這種方式比較簡單、快捷。
選擇RunàRun…,此運行方式可進行一些具體的設(shè)置。
使用工具欄中運行圖標(biāo)也可以運行程序。
在此,選擇RunàRun…,出現(xiàn)如下圖所示的窗口。
根據(jù)需求選擇采用的目標(biāo)連接,在此選擇Nios II Hardware,然后右鍵單擊New按鈕,添加要運行的項目,如下圖所示。
如上圖所示的右側(cè)包含5個標(biāo)簽,可以根據(jù)要求進行相關(guān)的設(shè)定。其中Main標(biāo)簽顯示運行工程的名稱,最下方復(fù)選框Validate Nios II system ID before software download 為選擇在軟件下載前是否驗證Nios II系統(tǒng)ID,默認(rèn)情況為選中,即驗證系統(tǒng)ID;Target Connection標(biāo)簽用于建立目標(biāo)連接,選擇JTAG電纜、JTAG設(shè)備及Nios II 終端通信設(shè)備;Debugger標(biāo)簽用于調(diào)試配置。
設(shè)置完成后,單擊Run按鈕,則在控制臺上顯示運行結(jié)果“Hello_LED!”,如下圖所示,同時在開發(fā)板上顯示跑馬燈,運行成功。
當(dāng)然,如果用戶沒有開發(fā)板,則可以采用指令集仿真運行。使用指令集仿真運行,可以選擇RunàRun AsàNios II ISS運行工程,同樣出現(xiàn)“Hello_LED”運行結(jié)果如下圖所示。
轉(zhuǎn)載于:https://www.cnblogs.com/CXATG/archive/2013/03/26/2982819.html
總結(jié)
以上是生活随笔為你收集整理的NIOS II 创建示例设计_Quartus II 9.0的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【腾讯第二届校园编程马拉松】HDU-45
- 下一篇: Java中log4j控制写入日志开关