有关Nios的ModelSim仿真.docx

上传人:b****3 文档编号:2792129 上传时间:2022-11-15 格式:DOCX 页数:22 大小:148.13KB
下载 相关 举报
有关Nios的ModelSim仿真.docx_第1页
第1页 / 共22页
有关Nios的ModelSim仿真.docx_第2页
第2页 / 共22页
有关Nios的ModelSim仿真.docx_第3页
第3页 / 共22页
有关Nios的ModelSim仿真.docx_第4页
第4页 / 共22页
有关Nios的ModelSim仿真.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

有关Nios的ModelSim仿真.docx

《有关Nios的ModelSim仿真.docx》由会员分享,可在线阅读,更多相关《有关Nios的ModelSim仿真.docx(22页珍藏版)》请在冰豆网上搜索。

有关Nios的ModelSim仿真.docx

有关Nios的ModelSim仿真

Abstract

在剛學習NiosII時,每次在RunAsNiosIIHardware下方,看到RunAsNiosIIModelSim就覺得很好奇,NiosII明明是嵌入式系統,怎麼能用ModelSim仿真呢?

Introduction

使用環境:

QuartusII7.2SP3+NiosIIEDS7.2SP3+ModelSim-Altera6.1g+DE2(CycloneIIEP2C35F627C6)

用ModelSim對數字系統作仿真,這個大家都很熟悉,在(原創)如何解決在QuartusII無法使用ModelSim-Altera模擬的問題?

(SOC)(QuartusII)(ModelSim)與(原創)如何做functionalsimulation?

(SOC)(QuartusII)(ModelSim)都曾經討論過。

NiosII雖然是個嵌入式系統,但畢竟基於FPGA技術,所以比ARM這類hardcore多了使用ModelSim仿真的方式。

這也是Altera四大天王(QuartusII、NiosIIEDS、ModelSim-Altera、DSPBuilder)中的三大天王首次同台演出。

Altera在SimulatingNiosIIEmbeddedProcessorDesigns文件中,有談到如何用ModelSim-Altera對NiosII作仿真,不過一如以往,Altera的文件要在DE2能動,還是得做不少修改,昨晚弄了一晚也弄不出來,在大家常去的AlteraForum、NiosForum與EDACN的討論中發現,真正做出來的人並不多。

今天早上運氣好竟然成功了,趕快將心得記下來。

QuartusII與SOPCBuilder部分

Step1:

建立一個最簡單的NiosII系統

文件中的那個系統並不適合DE2,用了一定不能動,所以就自己建立一個最簡單的NiosII系統。

為了要簡單,就先使用onchipmemory與ledg與button就好,其他IP都先別用,以減少失敗的變因。

Step2:

JTAGUART設定

使用ModelSim-Altera仿真後,對於C的printf()要怎麼顯示呢?

這要對JTAGUART做設定。

Step3:

對PIO做初始值設定

Button本來是在runtime由user去決定,若你想在testbench就模擬user的按鍵,可在此設定,此步驟並非必須,只是demo可藉由此方式設定PIO的初始值。

Step4:

在SOPCBuilder設定ModelSim-Altera路徑

Tools->Options->Category:

HDLSimulator

Step5:

產生能仿真的NiosII系統

記得要將『Simulation.Createprojectsimulatorfiles』打勾。

Step6:

DE2_NIOS_ModelSim2.v/Verilog

1 /* 

2 (C)OOMusou2008

4 Filename   :

DE2_NIOS_ModelSim2.v

5 Compiler   :

QuartusII7.2SP3

6 Description:

DemohowtosimulateNiosIIbyModelSim-Altera

7 Release    :

08/02/20081.0

8 */

10 moduleDE2_NIOS_ModelSim2(

11  inputCLOCK_50,

12  input[3:

0]KEY,

13  output[8:

0]LEDG

14 );

15 

16 wire   CPU_CLK;

17 wire   CPU_RESET;

18 

19 Reset_Delay   delay1(

20  .iRST(KEY[0]),

21  .iCLK(CLOCK_50),

22  .oRESET(CPU_RESET)

23 );

24 

25 SDRAM_PLLPLL1(

26  .inclk0(CLOCK_50),

27  .c1(CPU_CLK)

28 );

29 

30 nios_iiu0(

31  .clk(CPU_CLK),

32  .reset_n(CPU_RESET),

33  .in_port_to_the_button_pio(KEY),

34  .out_port_from_the_ledg_pio(LEDG)

35 );

36 

37 endmodule

25行

SDRAM_PLLPLL1(

 .inclk0(CLOCK_50),

 .c1(CPU_CLK)

);

別被SDRAM_PLL嚇到了,只是借用這個PLL產生100Mhz的clock給NiosII用,你也可以自己重新產生一個100Mhz的clock而不用SDRAM_PLL。

QuartusII與SOPCBuilder部分已經完成,編譯後可燒進DE2。

NiosIIEDS部分

Step1:

建立HelloWorldproject

hello_world.c/C

1 #include

2 #include"system.h"

3 #include"altera_avalon_pio_regs.h"

5 intmain(){

6  inti;

7  printf("HellofromNiosII!

\n");

8  

9  for(i= 0;i< 256;i++)

10    IOWR_ALTERA_AVALON_PIO_DATA(LEDG_PIO_BASE,i);

11 

12  return 0;

13 }

LEDG_PIO_BASE這個巨集跟文件的不一樣,因為在SOPCBuilder中,我們已經使用了不同的名稱。

Step2:

修改SystemLibrary設定

由於我們使用的onchipmemory只有40K,正常的NiosII是無法執行的,所以必須做些設定,讓codesize變小。

在Altera原廠文件並沒有這一步,因為它用的是SDRAM夠大,根本不用考慮codesize的問題。

選擇不支援C++會讓codesize小一點,另外要勾選ModelSimonly,nohardware。

設定讓gcc編譯出的codesize小一點,若你對codesize最佳化有興趣,建議參考(原創)如何有效減少NiosIIEDS所編譯程式碼大小?

(ICDesign)(NiosII)。

Step3:

編譯HelloWorld且RunAsNiosIIModelSim。

NiosIIEDS部分已經完成,接著會出現ModelSim-Altera。

ModelSim-Altera部分

Step1:

編譯Verilog

QuartusII已經產生好ModelSim的macro,你只要打s就可重新編譯,這是最危險的時刻,若會失敗都是出在這個時候,我之前曾經使用友晶的NiosIIReferenceDesign來做仿真,但有些module無法編譯成功,目前原因還不明。

若成功編譯,會有以下的結果:

#ReadingC:

/altera/72/modelsim_ae/tcl/vsim/pref.tcl

#ReadingD:

/0Clare/DE2/DE2_NIOS_ModelSim2/nios_ii_sim/modelsim.tcl

#c:

/altera/72/quartus//sopc_builder

#c:

/altera/72/quartus//bin/perl

#Sopc_BuilderDirectory:

c:

/altera/72/quartus//sopc_builder

#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

#@@

#@@setup_sim.do

#@@

#@@Definedaliases:

#@@

#@@s--Loadalldesign(HDL)files.

#@@re-vlog/re-vcomandre-vsimthedesign.

#@@

#@@c--Re-compilememorycontents.

#@@BuildsC- andassembly-languageprograms

#@@(andassociatedsimulationdata-files

#@@suchasUARTsimulationstrings)for 

#@@refreshingmemorycontents.

#@@DoesNOTre-generatehardware(HDL)files

#@@ONLYWORKSWITHLEGACYSDK(NottheNiosIDE)

#@@

#@@w--Sets-upwaveformsforthisdesign 

#@@EachSOPC-Buildercomponentmayhave

#@@signals'marked' fordisplayduring

#@@simulation.Thiscommandopensawave- 

#@@windowcontainingallsuchsignals.

#@@

#@@l--Sets-uplistwaveformsforthisdesign 

#@@EachSOPC-Buildercomponentmayhave

#@@signals'marked' forlistingduring

#@@simulation.Thiscommandopensalist- 

#@@windowcontainingallsuchsignals.

#@@

#@@jtag_uart_drive--displayinteractiveinputwindowforjtag_uart

#@@

#@@h--printthismessage

#@@

#@@

# OpenFile"nios_ii_sim.mpf" 

#Loadingprojectnios_ii_sim

s

#ModelTechnologyModelSimALTERAvlog6.1gCompiler2006.08Aug12 2006

#--Compilingmodulebutton_pio_s1_arbitrator

#--Compilingmodulecpu_jtag_debug_module_arbitrator

#--Compilingmodulecpu_data_master_arbitrator

#--Compilingmodulecpu_instruction_master

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1