1、有关Nios的ModelSim仿真Abstract在剛學習Nios II時,每次在Run As Nios II Hardware下方,看到Run As Nios II ModelSim就覺得很好奇,Nios II明明是嵌入式系統,怎麼能用ModelSim仿真呢?Introduction使用環境:Quartus II 7.2 SP3 + Nios II EDS 7.2 SP3 + ModelSim-Altera 6.1g + DE2(Cyclone II EP2C35F627C6)用ModelSim對數字系統作仿真,這個大家都很熟悉,在(原創) 如何解決在Quartus II無法使用ModelS
2、im-Altera模擬的問題? (SOC) (Quartus II) (ModelSim)與(原創) 如何做functional simulation? (SOC) (Quartus II) (ModelSim)都曾經討論過。Nios II雖然是個嵌入式系統,但畢竟基於FPGA技術,所以比ARM這類hardcore多了使用ModelSim仿真的方式。這也是Altera四大天王(Quartus II、Nios II EDS、ModelSim-Altera、DSP Builder)中的三大天王首次同台演出。Altera在Simulating Nios II Embedded Processor D
3、esigns文件中,有談到如何用ModelSim-Altera對Nios II作仿真,不過一如以往,Altera的文件要在DE2能動,還是得做不少修改,昨晚弄了一晚也弄不出來,在大家常去的Altera Forum 、Nios Forum與EDACN的討論中發現,真正做出來的人並不多。今天早上運氣好竟然成功了,趕快將心得記下來。 Quartus II與SOPC Builder部分Step 1:建立一個最簡單的Nios II系統 文件中的那個系統並不適合DE2,用了一定不能動,所以就自己建立一個最簡單的Nios II系統。為了要簡單,就先使用onchip memory與ledg與button就好,
4、其他IP都先別用,以減少失敗的變因。 Step 2:JTAG UART設定 使用ModelSim-Altera仿真後,對於C的printf()要怎麼顯示呢?這要對JTAG UART做設定。 Step 3:對PIO做初始值設定 Button本來是在runtime由user去決定,若你想在testbench就模擬user的按鍵,可在此設定,此步驟並非必須,只是demo可藉由此方式設定PIO的初始值。 Step 4:在SOPC Builder設定ModelSim-Altera路徑 Tools - Options - Category:HDL Simulator Step 5:產生能仿真的Nios I
5、I系統 記得要將Simulation. Create project simulator files打勾。 Step 6:DE2_NIOS_ModelSim2.v / Verilog1/*2(C) OOMusou 2008 34Filename : DE2_NIOS_ModelSim2.v5Compiler : Quartus II 7.2 SP36Description : Demo how to simulate Nios II by ModelSim-Altera7Release : 08/02/2008 1.08*/910module DE2_NIOS_ModelSim2 (11 in
6、put CLOCK_50,12 input 3:0 KEY,13 output 8:0 LEDG14);1516wire CPU_CLK;17wire CPU_RESET;1819Reset_Delay delay1 (20 .iRST(KEY0),21 .iCLK(CLOCK_50),22 .oRESET(CPU_RESET)23);2425SDRAM_PLL PLL1 (26 .inclk0(CLOCK_50),27 .c1(CPU_CLK)28);2930nios_ii u0 (31 .clk(CPU_CLK),32 .reset_n(CPU_RESET),33 .in_port_to_
7、the_button_pio(KEY),34 .out_port_from_the_ledg_pio(LEDG)35);3637endmodule25行SDRAM_PLL PLL1 ( .inclk0(CLOCK_50), .c1(CPU_CLK);別被SDRAM_PLL嚇到了,只是借用這個PLL產生100 Mhz的clock給Nios II用,你也可以自己重新產生一個100 Mhz的clock而不用SDRAM_PLL。Quartus II與SOPC Builder部分已經完成,編譯後可燒進DE2。Nios II EDS部分Step 1:建立Hello World projecthello_w
8、orld.c / C1#include 2#include system.h3#include altera_avalon_pio_regs.h45int main() 6 int i;7 printf(Hello from Nios II!n);8 9 for(i =0; i 256; i+)10 IOWR_ALTERA_AVALON_PIO_DATA(LEDG_PIO_BASE, i);1112 return0;13LEDG_PIO_BASE這個巨集跟文件的不一樣,因為在SOPC Builder中,我們已經使用了不同的名稱。Step 2:修改System Library設定由於我們使用的o
9、nchip memory只有40K,正常的Nios II是無法執行的,所以必須做些設定,讓code size變小。在Altera原廠文件並沒有這一步,因為它用的是SDRAM夠大,根本不用考慮code size的問題。選擇不支援C+會讓code size小一點,另外要勾選ModelSim only, no hardware。設定讓gcc編譯出的code size小一點,若你對code size最佳化有興趣,建議參考(原創) 如何有效減少Nios II EDS所編譯程式碼大小? (IC Design) (Nios II)。Step 3:編譯Hello World且Run As Nios II Mo
10、delSim。Nios II EDS部分已經完成,接著會出現ModelSim-Altera。ModelSim-Altera部分Step 1:編譯VerilogQuartus II已經產生好ModelSim的macro,你只要打s就可重新編譯,這是最危險的時刻,若會失敗都是出在這個時候,我之前曾經使用友晶的Nios II Reference Design來做仿真,但有些module無法編譯成功,目前原因還不明。若成功編譯,會有以下的結果:# Reading C:/altera/72/modelsim_ae/tcl/vsim/pref.tcl # Reading D:/0Clare/DE2/DE2
11、_NIOS_ModelSim2/nios_ii_sim/modelsim.tcl # c:/altera/72/quartus/sopc_builder# c:/altera/72/quartus/bin/perl# Sopc_Builder Directory: c:/altera/72/quartus/sopc_builder # # # setup_sim.do # # Defined aliases: # # s - Load all design (HDL) files. # re-vlog/re-vcom and re-vsim the design. # # c - Re-com
12、pile memory contents. # Builds C-and assembly-language programs # (and associated simulation data-files # such as UART simulation strings) for# refreshing memory contents. # Does NOT re-generate hardware (HDL) files # ONLY WORKS WITH LEGACY SDK (Not the Nios IDE) # # w - Sets-up waveforms for this d
13、esign# Each SOPC-Builder component may have # signals markedfor display during # simulation. This command opens a wave-# window containing all such signals. # # l - Sets-up list waveforms for this design# Each SOPC-Builder component may have # signals markedfor listing during # simulation. This comm
14、and opens a list-# window containing all such signals. # # jtag_uart_drive - display interactive input window for jtag_uart # # h - print this message # # # OpenFile nios_ii_sim.mpf# Loading project nios_ii_sims# Model Technology ModelSim ALTERA vlog 6.1g Compiler 2006.08 Aug 122006# - Compiling module button_pio_s1_arbitrator# - Compiling module cpu_jtag_debug_module_arbitrator# - Compiling module cpu_data_master_arbitrator# - Compiling module cpu_instruction_master
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1