avalon 总线怎么 用ise modelsim联合仿真仿真

Qsys与uC/OS学习笔记2:系统仿真
> Qsys与uC/OS学习笔记2:系统仿真
Qsys与uC/OS学习笔记2:系统仿真
  仿真在FPGA设计过程中举足轻重,在板级调试前若不好好花功夫做一些前期的验证和测试工作,后期肯定要不断的返工甚至推倒重来,这是FPGA设计的迭代特性所决定的。因此,在设计的前期做足了仿真测试工作,虽然不能完全避免后期问题和错误的发生,却能够大大减少后期调试和排错的工作量。本文引用地址:
  逻辑设计中需要做仿真,是因为逻辑设计大都是设计者原型开发的,不做仿真的话设计者肯定心里也没底。而用搭建的系统多是由已经成熟验证过的IP核组成的,还需要仿真否?这是个仁者见仁智者见智的问题,特权同学也无意深入其中不能自拔。过去用SOPC Builder时还确实想动手做做这类带CPU的系统级仿真,只可惜倒腾半天不是缺这个就是少那个,大都无功而返。这回上了,而且ModelSim-Altera对于Quatus II的支持也是做得越来越&体贴&了,所以今个再做了一些尝试,果然成功了,原厂把工具的使用做得越来越傻瓜便利的同时,工程师们从中大大获益。
  如图1所示,首先在Generations的Simulation选项中做好设置。
  Simulation设置选项的具体含义如图2所示。
  因为都是用Verilog,所以simulation model和testbench simulation model我们都选择Verilog,话说Altera其实主打的是Verilog语言,所以各种功能对Verilog的支持都是非常到位的,VHDL就不一定了。也用过Xilinx的东西,则正好相反。也不能谈论孰优孰劣,也是习惯使然。
  Standard和Simple的模型主要差别在于后者只是简单的在testbench里产生clock和reset信号,而前者则会对所有export信号产生激励或引出便于监视观察。
  确定完成Simulation的设置后就可以点击左下角的Generate重新生成系统。
  系统生成完毕,到&工程目录\myqsys\testbench\myqsys_tb\simulation&这个路径下有测试脚本的顶层文件myqsys_tb.v,打开后代码如下:
  `timescale 1 ps / 1 ps
  module myqsys_tb (
  wire myqsys_inst_clk_bfm_clk_ // myqsys_inst_clk_bfm:clk -& [myqsys_inst:clk_clk, myqsys_inst_reset_bfm:clk]
  wire myqsys_inst_reset_bfm_reset_ // myqsys_inst_reset_bfm:reset -& myqsys_inst:reset_reset_n
  wire [7:0] myqsys_inst_led_pio_external_connection_ // myqsys_inst:led_pio_external_connection_export -& myqsys_inst_led_pio_external_connection_bfm:sig_export
  myqsys myqsys_inst (
  .clk_clk (myqsys_inst_clk_bfm_clk_clk), // clk.clk
  .reset_reset_n (myqsys_inst_reset_bfm_reset_reset), // reset.reset_n
  .led_pio_external_connection_export (myqsys_inst_led_pio_external_connection_export) // led_pio_external_connection.export
  altera_avalon_clock_source #(
  .CLOCK_RATE (50)
  ) myqsys_inst_clk_bfm (
  .clk (myqsys_inst_clk_bfm_clk_clk) // clk.clk
  altera_avalon_reset_source #(
  .ASSERT_HIGH_RESET (0),
  .INITIAL_RESET_CYCLES (50)
  ) myqsys_inst_reset_bfm (
  .reset (myqsys_inst_reset_bfm_reset_reset), // reset.reset_n
  .clk (myqsys_inst_clk_bfm_clk_clk) // clk.clk
  altera_conduit_bfm myqsys_inst_led_pio_external_connection_bfm (
  .sig_export (myqsys_inst_led_pio_external_connection_export) // conduit.export
  endmodule
  该代码中首先例化了被测试系统myqsys,将其3个export信号引出。然后分别针对这3个export信号产生相应的激励和响应,即altera_avalon_clock_source用于产生clock,altera_avalon_reset_source用于产生reset信号,altera_conduit_bfm则用于观察led_pio输出。这三个模块的详细代码都可以在同目录的submodules子文件夹下找到。
  接下来,我们需要打开EDS中的软件工程并对其进行仿真。我们接着使用上一个笔记中创建的countbinary_prj工程进行仿真,首先我们需要到BSP Editor里面去重新generate,因为有改动并重新生成了。接着修改其main函数如下:
  int main(void)
  alt_u16
  for(cnt=0;cnt&256;cnt++)
  IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,cnt);
  while(1);
  目前工程代码执行的意图是:在上电初始化完成后,led_pio会从0连续的递增一直到255,然后停止。保存修改的软件代码并重新编译工程,然后在应用工程上点击右键值并选择Rus as&Niso II ModelSim,如图3所示。
  第一次运行通常会弹出如图4所示的窗口,需要对仿真选项做一些配置。选择选择仿真的工程名(Project name)、仿真的elf可执行文件(Project ELF file name)、ModelSim软件的安装路径(ModelSim path)和Qsys测试脚本封装描述文件(Qsys Testbench Simulation Package Descriptor File name)存储位置。设计好后点击Run即启动ModelSim进行仿真。
  弹出ModelSim-Altera后,我们可以讲顶层文件的3个export信号添加的Wave窗口中,然后Run起来,看看仿真时间有2-3秒后我们可以回放仿真波形(具体的时间需要看PC的状况,特权同学的Pentium E5800跑了应该有半分多钟),如图5、图6和图7所示。
  如图5,刚上电0ns开始,reset信号有一段时间的低脉冲,大约50个clk周期,正如我们的testbench中所设计的。
  如图6所示,在仿真进行到大约1.3s时刻,led_pio信号有一段变化的波形,初始0值在经过这段变化波形后最终变为255,这也是我们软件代码里面所设置的最终值。
  再来看图7,我们将led_pio的变化段波形放大,果然是我们软件编程的递增的值,一直从0递增到255为止。
  仿真的流程基本就是这样,很easy,我们只要动动指尖就可以完成,当然了,如果要做很多个性化的细致的仿真验证,那么在testbench里面我们倒是可以动些手脚,输出结果也不光只是看看波形而已。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一FPGA_IP_CORE使用(1)
& 最近实验室要做一个项目,由PPC通过RapidIO总线传来的图像解析数据到FPGA,在上面通过二维FFT处理再返还给PPC,由于刚回家笔记本环境还没配,今天配了一下ISE14.3和Modelsim10.0a。一番捣腾画图大概准备使用RapidIOv5.6 Core,xfft Core,Dual Block Ram Core和FIFO Generatior Core,所以准备把FIFO,FFT,RapidIO核结合Datasheet在ModelSim上跑一下熟悉一下。
& 在准备使用Modelsim仿真FIFO时,遇到了下面的错误,在此记录一下:
Library unisim not found.
在网上查了一下,是需要新建一个library,并命名unisim,然后在Modelsim.ini中建立和映射这个库,然后找到下面两个文件,
然后在ModelSim命令行中输入vcom -work unisim D:/Xilinx/14.3/ISE_DS/ISE/vhdl/src/unisims/unisim_VPKG.vhd和vcom -work unisim D:/Xilinx/14.3/ISE_DS/ISE/vhdl/src/unisims/unisim_VCOMP.vhd
错误解除!
2. 第一个错误通过之后,以为已经搞定,又出现下一个错误,原来Xilinx的仿真库没有编译进Modelsim中
有点坑啊,在网上找答案的时候发现上面解决第一个问题的方法也不是长久之计,因为在下一次使用Modelsim的时候查找Modelsim.ini启动时,是无法找到unisim这个库的,也就是上面的方法是一个临时方法。后来在网上找到了答案,先用compxlib工具(在ISE commad输入compxlib启动即可)将仿真库链接到Modelsim中。经过20分钟左右编译完成,灰常兴奋,又在Modelsim编译,发现还是刚才的错误,这是咋回事啊,我一看Modelsim安装目录下的Modelsim.ini的内容没有丝毫变化啊,那要是错误解除就怪了,我又找了下刚才编译完的库文件夹,发现里边也有一个叫Modelsim.ini的文件,打开一看好嘛库都链接上了,赶紧把链接复制到Modelsim下的Modelsim.ini中(Library和vcom中间),再一次尝试OK,问题解决,波形出现!!!
大家如果碰到同样的问题可以按我的方法尝试,如果有问题请留言~~
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:73713次
积分:1303
积分:1303
排名:千里之外
原创:53篇
转载:16篇
评论:19条
西工大CS在读硕士,主要研究方向FPGA数字信号处理&数字图像处理&神经网络&计算视觉等方面,希望大家能多多交流!新浪微博:
算法与数据结构:【图文】modelsim教程(中文)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
modelsim教程(中文)
上传于|0|0|文档简介
&&modelsim使用指示
大小:638.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢浏览:1356次
评论:0条 &时间:
1 引言目前,在军事、工业和医学领域存在着大量的非标准视频系统,其视频信号只能在专..[转载]&转&使用ModelSim-Altera对NiosII进行仿真(Model
使用ModelSim-Altera对NiosII进行仿真
原文参考:
初学者可能会遇到这样的问题,在Run As Nios II Hardware下方,看到Run As Nios II
ModelSim就觉得很奇怪,Nios II明明是嵌入式系統,怎么能用ModelSim仿真呢?
使用環境:Quartus II 7.2 SP3 + Nios II EDS 7.2 SP3 + ModelSim-Altera
6.1g + DE2(Cyclone II EP2C35F627C6)
用ModelSim对数字系统作仿真,这个大家可能都很熟悉。Nios&II虽然是个嵌入式系统,但毕竟基于FPGA技术,所以比ARM这类hardcore多了使用ModelSim仿真的方式。这也是Altera四大天王(Quartus&II、Nios&II&EDS、ModelSim-Altera、DSP&Builder)中的三大天王首次同台演出。
Altera在文件中,有谈到如何用ModelSim-Altera对Nios&II作仿真,不过一如以往,Altera的文件要在DE2能动,还是得做不少修改。
Quartus II与SOPC
Builder部分Step 1:
文件中的那个系统并不适合DE2,用了一定不能动,所以就自己建立一个最简单的Nios&II系统。为了要简单,就先使用onchip&memory与ledg与button就好,其他IP都先别用,以减少失败的变因。
JTAG UART设定
使用ModelSim-Altera仿真后,对于C的printf()要怎么显示呢?这要对JTAG UART做设定。
Button本来是在runtime由user去决定,若你想在testbench就模拟user的按键,可在此设定,此步骤并非必须,只是demo可藉由此方式设定PIO的初始值。
在SOPC Builder设定ModelSim-Altera路径
Tools -& Options -& Category:HDL
记得要将『Simulation. Create project simulator files』打勾。
DE2_NIOS_ModelSim2.v / Verilog
<span STYLE="CoLor: #&<span STYLE="CoLor: #&<span STYLE="CoLor: #&module DE2_NIOS_ModelSim2 (<span STYLE="CoLor: #&& input CLOCK_50,<span STYLE="CoLor: #&& input [<span STYLE="CoLor: #:<span STYLE="CoLor: #]
KEY,<span STYLE="CoLor: #&& output [<span STYLE="CoLor: #:<span STYLE="CoLor: #]
LEDG<span STYLE="CoLor: #&);<span STYLE="CoLor: #&<span STYLE="CoLor: #&wire&&&
CPU_CLK;<span STYLE="CoLor: #&wire&&&
CPU_RESET;<span STYLE="CoLor: #&<span STYLE="CoLor: #&Reset_Delay&&&
delay1 (<span STYLE="CoLor: #&& .iRST(KEY[<span STYLE="CoLor: #]),<span STYLE="CoLor: #&&
.iCLK(CLOCK_50),<span STYLE="CoLor: #&&
.oRESET(CPU_RESET)<span STYLE="CoLor: #&);<span STYLE="CoLor: #&<span STYLE="CoLor: #&SDRAM_PLL PLL1 (<span STYLE="CoLor: #&&
.inclk0(CLOCK_50),<span STYLE="CoLor: #&&
.c1(CPU_CLK)<span STYLE="CoLor: #&);<span STYLE="CoLor: #&<span STYLE="CoLor: #&nios_ii u0 (<span STYLE="CoLor: #&&
.clk(CPU_CLK),<span STYLE="CoLor: #&&
.reset_n(CPU_RESET),<span STYLE="CoLor: #&&
.in_port_to_the_button_pio(KEY),<span STYLE="CoLor: #&&
.out_port_from_the_ledg_pio(LEDG)<span STYLE="CoLor: #&);<span STYLE="CoLor: #&<span STYLE="CoLor: #&endmodule
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部分
建立Hello World project
hello_world.c / C
<span STYLE="CoLor: #&#include &stdio.h&<span STYLE="CoLor: #&#include "system.h"<span STYLE="CoLor: #&#include "altera_avalon_pio_regs.h"<span STYLE="CoLor: #&<span STYLE="CoLor: #&int main()
{<span STYLE="CoLor: #&& int i;<span STYLE="CoLor: #&& printf("Hello from
Nios II!n");<span STYLE="CoLor: #&& <span STYLE="CoLor: #&& for(i
=&<span STYLE="CoLor: #; i
&&<span STYLE="CoLor: #6;
i++)<span STYLE="CoLor: #&&&&
IOWR_ALTERA_AVALON_PIO_DATA(LEDG_PIO_BASE,
i);<span STYLE="CoLor: #&<span STYLE="CoLor: #&& return&<span STYLE="CoLor: #;<span STYLE="CoLor: #&}
LEDG_PIO_BASE這個巨集跟文件的不一樣,因為在SOPC Builder中,我們已經使用了不同的名稱。
修改System Library设定
由于我们使用的onchip&memory只有40K,正常的Nios&II是无法执行的,所以必须做些设定,让code&size变小。在Altera原厂文件并没有这一步,因为它用的是SDRAM够大,根本不用考虑code&size的问题。
选择不支援C++会让code&size小一点,另外要勾选ModelSim&only,&no&hardware。
设定让gcc编译出的code&size小一点,若你对code&size最佳化有兴趣,建议参考。
编译Hello World且Run As Nios II ModelSim。
Nios&II&EDS部分已经完成,接着会出现ModelSim-Altera。
ModelSim-Altera部分
编译Verilog
Quartus&II已经产生好ModelSim的macro,你只要打s就可重新编译,这是最危险的时刻,若会失败都是出在这个时候,我之前曾经使用友晶的Nios&II&Reference&Design来做仿真,但有些module无法编译成功,目前原因还不明。若成功编译,会有以下的结果:
# Reading C:/altera/<span STYLE="CoLor: #/modelsim_ae/tcl/vsim/pref.tcl
# Reading D:/<span STYLE="CoLor: #Clare/DE2/DE2_NIOS_ModelSim2/nios_ii_sim/modelsim.tcl
# c:/altera/<span STYLE="CoLor: #/quartus//sopc_builder#
c:/altera/<span STYLE="CoLor: #/quartus//bin/perl#
Sopc_Builder Directory: c:/altera/<span STYLE="CoLor: #/quartus//sopc_builder #
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@ setup_sim.do
# @@ Defined aliases:
# @@ s -- Load all design (HDL)
# @@ re-vlog/re-vcom
and re-vsim
the design.
# @@ c -- Re-compile
memory contents.
# @@ Builds C-&and assembly-language
# @@ (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
# @@ 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
# @@ simulation. This command 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_sim
# Model Technology ModelSim ALTERA vlog <span STYLE="CoLor: #.1g
Compiler <span STYLE="CoLor: #06.08
Aug <span STYLE="CoLor: #&<span STYLE="CoLor: #06
# -- Compiling module button_pio_s1_arbitrator
# -- Compiling module cpu_jtag_debug_module_arbitrator
# -- Compiling module cpu_data_master_arbitrator
# -- Compiling module cpu_instruction_master_arbitrator
# -- Compiling module jtag_uart_avalon_jtag_slave_arbitrator
# -- Compiling module ledg_pio_s1_arbitrator
# -- Compiling module onchip_mem_s1_arbitrator
# -- Compiling module sysid_control_slave_arbitrator
# -- Compiling module nios_ii_reset_clk_domain_synch_module
# -- Compiling module nios_ii
# -- Compiling module lcell
# -- Compiling module ALTERA_MF_MEMORY_INITIALIZATION
# -- Compiling module ALTERA_MF_HINT_EVALUATION
# -- Compiling module ALTERA_DEVICE_FAMILIES
# -- Compiling module dffp
# -- Compiling module pll_iobuf
# -- Compiling module stx_m_cntr
# -- Compiling module stx_n_cntr
# -- Compiling module stx_scale_cntr
# -- Compiling module MF_pll_reg
# -- Compiling module MF_stratix_pll
# -- Compiling module arm_m_cntr
# -- Compiling module arm_n_cntr
# -- Compiling module arm_scale_cntr
# -- Compiling module MF_stratixii_pll
# -- Compiling module ttn_m_cntr
# -- Compiling module ttn_n_cntr
# -- Compiling module ttn_scale_cntr
# -- Compiling module MF_stratixiii_pll
# -- Compiling module cda_m_cntr
# -- Compiling module cda_n_cntr
# -- Compiling module cda_scale_cntr
# -- Compiling module MF_cycloneiii_pll
# -- Compiling module altpll
# -- Compiling module altlvds_rx
# -- Compiling module stratix_lvds_rx
# -- Compiling module stratixgx_dpa_lvds_rx
# -- Compiling module stratixii_lvds_rx
# -- Compiling module flexible_lvds_rx
# -- Compiling module stratixiii_lvds_rx
# -- Compiling module stratixiii_lvds_rx_channel
# -- Compiling module stratixiii_lvds_rx_dpa
# -- Compiling module altlvds_tx
# -- Compiling module stratix_tx_outclk
# -- Compiling module stratixii_tx_outclk
# -- Compiling module flexible_lvds_tx
# -- Compiling module altaccumulate
# -- Compiling module altmult_accum
# -- Compiling module altmult_add
# -- Compiling module altfp_mult
# -- Compiling module altsqrt
# -- Compiling module altclklock
# -- Compiling module altddio_in
# -- Compiling module altddio_out
# -- Compiling module altddio_bidir
# -- Compiling module hssi_pll
# -- Compiling module MF_ram7x20_syn
# -- Compiling module hssi_fifo
# -- Compiling module hssi_rx
# -- Compiling module hssi_tx
# -- Compiling module altcdr_rx
# -- Compiling module altcdr_tx
# -- Compiling module altcam
# -- Compiling module altdpram
# -- Compiling module altsyncram
# -- Compiling module alt3pram
# -- Compiling module altqpram
# -- Compiling module parallel_add
# -- Compiling module scfifo
# -- Compiling module dcfifo_dffpipe
# -- Compiling module dcfifo_fefifo
# -- Compiling module dcfifo_async
# -- Compiling module dcfifo_sync
# -- Compiling module dcfifo_low_latency
# -- Compiling module dcfifo_mixed_widths
# -- Compiling module dcfifo
# -- Compiling module altshift_taps
# -- Compiling module a_graycounter
# -- Compiling module altsquare
# -- Compiling module signal_gen
# -- Compiling module jtag_tap_controller
# -- Compiling module dummy_hub
# -- Compiling module sld_virtual_jtag
# -- Compiling module sld_signaltap
# -- Compiling module altstratixii_oct
# -- Compiling module altparallel_flash_loader
# -- Compiling module altserial_flash_loader
# -- Compiling module LPM_MEMORY_INITIALIZATION
# -- Compiling module LPM_HINT_EVALUATION
# -- Compiling module LPM_DEVICE_FAMILIES
# -- Compiling module lpm_constant
# -- Compiling module lpm_inv
# -- Compiling module lpm_and
# -- Compiling module lpm_or
# -- Compiling module lpm_xor
# -- Compiling module lpm_bustri
# -- Compiling module lpm_mux
# -- Compiling module lpm_decode
# -- Compiling module lpm_clshift
# -- Compiling module lpm_add_sub
# -- Compiling module lpm_compare
# -- Compiling module lpm_mult
# -- Compiling module lpm_divide
# -- Compiling module lpm_abs
# -- Compiling module lpm_counter
# -- Compiling module lpm_latch
# -- Compiling module lpm_ff
# -- Compiling module lpm_shiftreg
# -- Compiling module lpm_ram_dq
# -- Compiling module lpm_ram_dp
# -- Compiling module lpm_ram_io
# -- Compiling module lpm_rom
# -- Compiling module lpm_fifo
# -- Compiling module lpm_fifo_dc_dffpipe
# -- Compiling module lpm_fifo_dc_fefifo
# -- Compiling module lpm_fifo_dc_async
# -- Compiling module lpm_fifo_dc
# -- Compiling module lpm_inpad
# -- Compiling module lpm_outpad
# -- Compiling module lpm_bipad
# -- Compiling module oper_add
# -- Compiling module oper_addsub
# -- Compiling module mux21
# -- Compiling module io_buf_tri
# -- Compiling module io_buf_opdrn
# -- Compiling module oper_mult
# -- Compiling module tri_bus
# -- Compiling module oper_div
# -- Compiling module oper_mod
# -- Compiling module oper_left_shift
# -- Compiling module oper_right_shift
# -- Compiling module oper_rotate_left
# -- Compiling module oper_rotate_right
# -- Compiling module oper_less_than
# -- Compiling module oper_mux
# -- Compiling module oper_selector
# -- Compiling module oper_decoder
# -- Compiling module oper_bus_mux
# -- Compiling module oper_latch
# -- Compiling module onchip_mem
# -- Compiling module cpu_test_bench
# -- Compiling module cpu_mult_cell
# -- Compiling module cpu_jtag_debug_module
# -- Compiling module cpu_jtag_debug_module_wrapper
# -- Compiling module cpu
# -- Compiling module sysid
# -- Compiling module jtag_uart_log_module
# -- Compiling module jtag_uart_sim_scfifo_w
# -- Compiling module jtag_uart_scfifo_w
# -- Compiling module jtag_uart_drom_module
# -- Compiling module jtag_uart_sim_scfifo_r
# -- Compiling module jtag_uart_scfifo_r
# -- Compiling module jtag_uart
# -- Compiling module ledg_pio
# -- Compiling module button_pio
# -- Compiling module test_bench
# Top level modules:
altlvds_rx
altlvds_tx
altaccumulate
altmult_accum
altfp_mult
altddio_bidir
parallel_add
altshift_taps
a_graycounter
sld_virtual_jtag
sld_signaltap
altstratixii_oct
altparallel_flash_loader
altserial_flash_loader
lpm_constant
lpm_bustri
lpm_compare
lpm_counter
lpm_shiftreg
lpm_ram_dq
lpm_ram_dp
lpm_ram_io
lpm_fifo_dc
lpm_outpad
oper_addsub
io_buf_tri
io_buf_opdrn
oper_left_shift
oper_right_shift
oper_rotate_left
oper_rotate_right
oper_selector
oper_decoder
oper_bus_mux
oper_latch
test_bench
# vsim +nowarnTFMPC -L
lpm_ver -L sgate_ver -L
altera_mf_ver -L
altgxb_ver -L stratixiigx_hssi_ver -L
stratixgx_ver -L
stratixgx_gxb_ver -L
stratixiigx -L
altera_ver -L stratixiii_ver -L
stratixii_ver -L
cycloneii_ver -L
cycloneiii_ver -t ps
test_bench
# //& ModelSim ALTERA 6.1g Aug 12
2006 # //# //& Copyright 2006 Mentor Graphics
Corporation#
//&&&&&&&&&&&&&
All Rights Reserved.#
//# //& THIS WORK CONTAINS TRADE SECRET
AND # //& PROPRIETARY INFORMATION WHICH
IS THE PROPERTY#
//& OF MENTOR GRAPHICS CORPORATION
OR ITS LICENSORS#
//& AND IS SUBJECT TO LICENSE
TERMS.# //#
Loading work.test_bench
# Loading work.nios_ii
# Loading work.button_pio_s1_arbitrator
# Loading work.button_pio
# Loading work.cpu_jtag_debug_module_arbitrator
# Loading work.cpu_data_master_arbitrator
# Loading work.cpu_instruction_master_arbitrator
# Loading work.cpu
# Loading C:altera<span STYLE="CoLor: #modelsim_aewin32aloem/../altera/verilog/altera_mf.altsyncram
# Loading C:altera<span STYLE="CoLor: #modelsim_aewin32aloem/../altera/verilog/altera_mf.ALTERA_DEVICE_FAMILIES
# Loading C:altera<span STYLE="CoLor: #modelsim_aewin32aloem/../altera/verilog/altera_mf.ALTERA_MF_MEMORY_INITIALIZATION
# Loading work.cpu_jtag_debug_module_wrapper
# Loading work.cpu_jtag_debug_module
# Loading work.cpu_mult_cell
# Loading C:altera<span STYLE="CoLor: #modelsim_aewin32aloem/../altera/verilog/altera_mf.altmult_add
# Loading work.cpu_test_bench
# Loading C:altera<span STYLE="CoLor: #modelsim_aewin32aloem/../altera/verilog/sgate.oper_add
# Loading C:altera<span STYLE="CoLor: #modelsim_aewin32aloem/../altera/verilog/<span STYLE="CoLor: #0model.lpm_add_sub
# Loading C:altera<span STYLE="CoLor: #modelsim_aewin32aloem/../altera/verilog/sgate.oper_less_than
# Loading work.jtag_uart_avalon_jtag_slave_arbitrator
# Loading work.jtag_uart
# Loading work.jtag_uart_scfifo_w
# Loading work.jtag_uart_sim_scfifo_w
# Loading work.jtag_uart_log_module
# Loading work.jtag_uart_scfifo_r
# Loading work.jtag_uart_sim_scfifo_r
# Loading work.jtag_uart_drom_module
# Loading work.ledg_pio_s1_arbitrator
# Loading work.ledg_pio
# Loading work.onchip_mem_s1_arbitrator
# Loading work.onchip_mem
# Loading work.sysid_control_slave_arbitrator
# Loading work.sysid
# Loading work.nios_ii_reset_clk_domain_synch_module
VSIM <span STYLE="CoLor: #&
显示JTAG UART窗口
输入jtag_uart_drive,printf()的结果将显示在这里
显示waveform window
输入巨集&w&载入wave_presets.do,将载入预设要仿真的信号,也可以自行在加入其他信号。图中的out_port_from_the_ledg_pio就是自行加入的。
输入&run&800&us,表示开始仿真800&us,结果如下图所示。
之前在hello_world.c中,我们曾经
for(i=&0;&i&&256;&i++)
&&IOWR_ALTERA_AVALON_PIO_DATA(LEDG_PIO_BASE,&i);&
若真的在DE2跑起来,只会发现LEDG是全亮的,因为0到255的变化人眼无法辨识,但在ModelSim-Altera就可以看到out_port_from_the_ledg_pio从0、1、2....不断的变化。
结束语又是一次很神奇的经验,竟然让ModelSim和Nios&II结合在一起,这对debug帮助很大,不过ModelSim-Altera与Nios&II的整合似乎有待加强,也或许是我功力不足,更复杂的Nios&II系统,我也没把握能在ModelSim-Altera仿真成功,毕竟连Nios&II&Reference&Design都过不了,实在令人担心,或许要对Verilog&RTL做些修正才能成功仿真。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 avalon总线 核 的文章

 

随机推荐