原文地址:http://article.ednchina.com/EDA/20080921112013.htm
Nios II仿真简介
与开发ARM等通常的处理器不同,Nios II的开发多了一个非常重要的手段:仿真。因为Nios II毕竟还是基于FPGA的软核处理器。在这里,我粗略得介绍一下nios的仿真;更加详细的帮助信息请您参考Altera公司提供的文档。如果本文能对您有一点点帮助,我都会感到非常高兴。
对于仿真,我主要讲述一下在ModelSim6.0环境下的前仿真(nios II系统生成的时候,可以自动生成仿真环境)。后仿真需要自己建立TestBench,比较繁琐一点,在此我就不再赘述了)。我只挑要点讲一下,关于仿真的详细指导,请您参考官方提供的help文档。
1、准备工作:
在硬件调试(Debug as hardware)前,有几个准备工作要做:
1配置modelsim的路径。在Altera SOPC Builder中,选择File-〉SOPC Builder Setup,检察ModelSim Directory是否被正确得配置。如下图:
2生成niosII系统的时候,仿真环境被自动生成。也就是在生成sopc系统的时候,Simulation. Create ModelSim(tm) project file被打勾选中。
3部分组件,比如JTAGUART,PIO,DRAM也有针对仿真选项,请你正确得选择!
4如果您的系统比较复杂,需要专门生成针对simulation的代码。也就是在ModelSim only, no hardware support前打勾。否则仅仅是系统初始化的过程,就让人无法忍受,因为仿真比正常的运行要慢太多了。但如果系统简单,直接仿真在硬件上实际运行的代码也无妨(也就是无需在ModelSim only, no hardware support前打勾。)
5 适当得修改代码,使之合适于仿真。
比如,我将
i=0;
while(i<50000)
i++;
修改为:
i=0;
while(i<5)
i++;
否则,这个循环会花费太多的仿真时间。
6 ModelSim6.0已经被正确得安装。如够没有搞定,请参考我以前写的EDA软件的安装与配置。
下面我们以调试在Nios无痛入门中生成系统为范例,介绍如何仿真nios处理器。
1启动Nios II IDE。
2选中待仿真的C/C++ Project
3适当得修改代码,使之与仿真相合适。
需要将
i=0;
while(i<50000)
i++;
修改为:
i=0;
while(i<5)
i++;
4专门生成针对simulation的代码。也就是在ModelSim only, no hardware support前打勾。其实这个project比较简单,直接仿真在硬件上实际运行的代码也无妨(也就是无需在ModelSim only, no hardware support前打勾。)
5然后选择Project->Build Project(Crtl+Shift+F3)
6选择Run->Run As->3.NiosIIModelSim
系统会自动调用ModelSim6.0,进入仿真环境。
7键入s,并回车
s是个宏命令,表示重新载入所有的HDL并编译、仿真。
如下是一些预定制的macro的含义:
#@@ s—Load all design (HDL) files.
#@@ re-vlog and re-vsim the design.
#@@
#@@ c-- Re-compile 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 design
#@@ Each SOPC-Builder component may have
#@@ signals 'marked' for 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 'marked' for listing during
#@@ simulation. This command opens a list-
#@@ window containing all such signals.
#@@
#@@ jtag_uart_0_drive—display interactive input window for jtag_uart_0
#@@
#@@ h—print this message
8然后,选择View->DebugWindows->Wave,打开WAVE窗口。
9在Object中,选中clk,然后点击右键。在弹出来的对话框中,选择Add to Wave->Selected Sinals,添加clk信号到Wave窗口中。
10如法炮制,添加你感兴趣的信号到WAVE窗口中,比如,我添加了/test_bench/reset_n, /test_bench/out_port_from_the_led_pio等,如下图:
11然后键入run1ms并回车,系统就会开始仿真1ms,你可以键入你感兴趣的仿真时间,比如2ms等等了。注意,不要键入太长的仿真时间,不然会是很很漫长的等待,因为与实际硬件想比较,仿真是很慢很慢很慢的。
12 仿真结束后,可以察看Wave窗口,可以看到led_pio的变化:0-〉0100-〉1000-〉0000->等等,呵呵,与硬件的变化完全一致。
OK。仿真就先介绍到这儿!
在FPGA设计、IC设计中,仿真都是极其重要的手段。仿真的内容也很多,希望你可以参考软件的随机手册,进一步熟练仿真的应用。
我通常仅仅把ModelSim作为仿真工具,而察看波形,Debug HDL代码都使用Debussy,因为当设计比较大的时候,ModelSim的Wave窗口的效率、速度实在是不敢恭维。您也可以使用自己喜爱的工具来配合modelsim工作。
--------------------------------------------------------------------------------------------------------------------------------------
刚试了下,我的环境是Quartus II 10.0 + NIOS II 10.0 IDE + Modelsim-Altera 6.5e Starter Edition,
在Quartus II 10.0 的Altera SOPC Builder中,Modelsim路径的配置是在Tools -> Options -> HDL Simulator 中,如下图:
后续工作按文中所述,一切顺利!
用户402891 2011-3-31 19:53