原创 【转】Nios II仿真简介

2010-10-19 22:29 2519 6 7 分类: FPGA/CPLD

原文地址: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是否被正确得配置。如下图:


5cd57895-1631-42f8-8a01-8ea8d85e4809.jpg



  2生成niosII系统的时候,仿真环境被自动生成。也就是在生成sopc系统的时候,Simulation. Create ModelSim(tm) project file被打勾选中。


a68d6694-817b-412d-985c-70dadab311da.jpg



  3部分组件,比如JTAGUART,PIO,DRAM也有针对仿真选项,请你正确得选择!


  4如果您的系统比较复杂,需要专门生成针对simulation的代码。也就是在ModelSim only, no hardware support前打勾。否则仅仅是系统初始化的过程,就让人无法忍受,因为仿真比正常的运行要慢太多了。但如果系统简单,直接仿真在硬件上实际运行的代码也无妨(也就是无需在ModelSim only, no hardware support前打勾。)


9967e616-2939-4761-9a00-08fbf579b157.jpg



  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,进入仿真环境。


e417e2e5-9527-486f-a41d-84e083ea1416.jpg



7键入s,并回车


fbe84624-63fd-4c60-9883-f2044c94b106.jpg



  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窗口。


db510461-5672-4b19-bb44-109ecd163c5a.jpg



  9在Object中,选中clk,然后点击右键。在弹出来的对话框中,选择Add to Wave->Selected Sinals,添加clk信号到Wave窗口中。


1c0a795f-434a-45a9-ae30-0a8bf0c19133.jpg



  10如法炮制,添加你感兴趣的信号到WAVE窗口中,比如,我添加了/test_bench/reset_n, /test_bench/out_port_from_the_led_pio等,如下图:


bf0056cb-c9c7-410a-a403-924fa5ec8d72.jpg



  11然后键入run1ms并回车,系统就会开始仿真1ms,你可以键入你感兴趣的仿真时间,比如2ms等等了。注意,不要键入太长的仿真时间,不然会是很很漫长的等待,因为与实际硬件想比较,仿真是很慢很慢很慢的。


5cbf1ff9-62a6-4806-8212-ebfda1a28a33.jpg



  12 仿真结束后,可以察看Wave窗口,可以看到led_pio的变化:0-〉0100-〉1000-〉0000->等等,呵呵,与硬件的变化完全一致。


02cb27f8-c196-4721-b198-78413f021898.jpg



  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 中,如下图:


3c162864-6d68-4c15-b3f1-01b9f0948c4c.jpg


4ab71ad8-4bb3-4f05-afa5-ac1bc52b64ec.jpg


后续工作按文中所述,一切顺利!

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户402891 2011-3-31 19:53

好东西,学习啦!
相关推荐阅读
真大虫无双 2010-11-27 13:02
【原创】怎么在NIOS中快速定位找到宏定义的声明位置?
先引用一下这位仁兄的日志:源地址:http://maozheng11.blog.hexun.com/42962227_d.html--------------原------------------文-...
真大虫无双 2010-11-24 18:09
【转载】Quartus_II软件显示窗口标签(tab)的问题
转自:http://cqulpj.blogbus.com/logs/68406619.html第一次装Quartus II的时候(那时候还是6.0版本),使用过程中不小心在窗口标签上右键然后点了一下“...
真大虫无双 2010-11-20 18:52
【转载】找回quartus中pin planner中分配引脚的对话框
转载出处:http://www.cnblogs.com/icelyb24/archive/2009/11/10/1599689.html今天在使用quartus的时候分配引脚的时候一不小心把  pin...
真大虫无双 2010-11-07 11:27
【原创】为什么已和谐好的Quartus的License会失效且NIC ID会时常出现两个
最近我用Quartus 9.0时老是出问题:症状1:明明已经破解好的Quartus软件,经常会出现进入时蹦出License对话框,用得好好的License怎么会失效呢?症状2:在Quartus中查看电...
真大虫无双 2010-11-02 20:22
【转】office2007不允许修改,因为所选内容已被锁定
以下转自:http://hi.baidu.com/yashua839/blog/item/f971378b9a8fc219c9fc7a6f.html我的系统是用Windows 7 ,一直用的好好的Of...
真大虫无双 2010-11-01 15:01
【转】[艾米原创].在Quartus II中分配管脚的两种常用方法
转帖出处:http://www.cnblogs.com/yuphone/archive/2010/01/18/1650612.html示范程序seg7_test.v/* * seg7 x 8 查找表测...
EE直播间
更多
我要评论
1
6
关闭 站长推荐上一条 /3 下一条