modelsim仿真教程
- 格式:pdf
- 大小:936.51 KB
- 文档页数:9
本教程使用软件的下载链接如下:/download/quartus_modelsim_setup.zipMolelsim仿真使用教程——利用quartus生成网表文件Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。
它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件,接下来以一个简单的例子介绍modelsim的基本使用方法。
第一步:建立工程,该过程与quartus使用的教程大部分是一样的,区别如下:在simluation选项中选择MoselSim-Altera作为仿真工具,fomat中的选项根据编程语言进行选择,本教程以VHDL为例。
第三方的仿真工具所以在此选择第二步:新建文件:新建一个源文件,保存为led.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity led isport(led_out : out std_logic_vector(7 downto 0);clk : in std_logic;rst_n : in std_logic);end led;architecture behavior of led issignal light : std_logic_vector (7 downto 0);beginprocess(clk,rst_n)beginif(rst_n = '0')thenlight <= "00000010";elsif(clk'event and clk ='1' )thenif(light = "10000000") thenlight <= "00000001";elselight <= light(6 downto 0)& '0';end if;end if;end process;led_out <= light;end behavior;新建一个testbench 文件,保存为testbench.vhd(testbench是电路的激励文件,在后面章节会详细介绍,这里仅仅作为软件的演示不具体介绍testbench的设计过程):library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.numeric_std.all;entity testbench isend testbench;architecture behavior of testbench iscomponent ledport ( clk : in std_logic;rst_n : in std_logic;led_out : out std_logic_vector(7 downto 0));end component;--input signalsignal clk : std_logic := '0' ;signal rst_n : std_logic :='0';--output signalsignal led_out : std_logic_vector (7 downto 0);--contstantconstant clk_period : time := 20ns;begincp1 : led port map (clk =>clk,rst_n => rst_n,led_out => led_out );clk_gen : processbeginclk <= '1';wait for clk_period/2;clk <= '0';wait for clk_period/2;end process;rst : processbeginrst_n <= '0';wait for 20ns;rst_n <= '1';wait for 200ns;wait;end process;end;然后对顶层模块led.vhd进行检查语法和编译,在编译的窗口出现EDA Netlist Writer 是表示第三方仿真工具所需要用到的网表文件(Netlist)成功生成。
在信息栏中会出现以下信息:led.vho 就是网表文件,led_vhd.sdo是时序仿真时候的时序文件(里面有线延时,寄存器延时等信息)网表文件和时序文件都已经生成完成,接下来开始使用modelsim进行仿真。
第三步:利用modelsim做仿真:1,在上一个步骤quartusii所建立的工程所保存的硬盘位置目录中多出一个文件夹:仿真需要的文件就在里面2,打开modelsim,新建工程(file>new>project),选择好保存路径和工作名称,点击OK:编译成功之后综合布线都成功当选择第三方工具的时候就会产生该项目,表示生成了其他软件所需要用到的vho和sdo文件建立Modelsim仿真工程。
3,添加文件:选择Add Existing File,将上步骤中simulation中的四个文件中的led.vho和led_vhd.sdo复制并添加到工程中,点击OK,然后以相同的方式将上面建立的testbench.vhd也复制到工程中,操作如下:该步骤实现将led.vho,led_vhd.sdo,testbench.vhd三个文件添加到仿真工程中,工程栏出现以下窗口:4,编译:两个问号表示在modelsim中还没有编译,所以接下来我们进行编译,点击快捷工具栏中的开始进行编译,信息栏中出现以下窗口表示编译已经成功:创建新文件添加已有文件到工程中,因为之前有综合出来的vho文件,直接添加到工程中选中则将文件复制到本工程中浏览文件,将led.vho,led_vhd.sdo,testbench.vhd添加到工程中5,功能仿真(主要是观察波形看看我们的逻辑是否正确):(1),点击仿真按钮,work下拉中找到testbench,选中后点击OK:(2)点击ok选中testbench对波形进行放大缩小,和整体显示波形窗口对应的信号(3)在testbench点击将led_out前面的加号,之后出现窗口:点击(run all),然后点击停止仿真()查看仿真波形:黄色标尺所在位置的数值执行run命令后的结果波形可观测到的信号(4)上个步骤并不是一次性就能够得到上图的现实效果,需要通过各个功能按键来选择不同的观察效果,要熟悉下列按键的使用:波形的放大缩小;将仿真时间内的全部波形显示在屏幕上默认模式,该模式下您在波形图中可以将黄线拉到不同位置,观察某时刻的具体值。
该模式下,您可以拉动某部分作为全屏幕显示停止仿真1)时序仿真时序仿真与功能仿真唯一的不同就是加入时延文件,仿真步骤有差别。
建立工程,添加vho,sdo,testbench文件,编译均与功能仿真相同,这里不再赘述。
(1)建立工程——>添加vho,sdo,testbench文件——>编译(2)开始时序仿真:编译完成后,点击依然在work下拉中找到testbench,然后在相同的这个对话框中点击SDF,点击add…将SDO文件(在工程目录中)添加进工程,并在SDF Options 两个都打勾:该选项卡是选择时序约束文件,既Quartus产生的sdo文件两个全部打勾,如果没有打勾可能会出错,但是这个出错是由于系统照成的,用户完全可以忽略(3)点击OK开始观看仿真波形,具体操作和上述功能仿真一样,结果仅仅出现很小的延时,在做大规模设计时候会看到明显是时延。
总结:Modelsim 已经成为了业界最优秀的仿真软件之一,它兼容了VHDL和Verilog HDL两种硬件描述语言,同时支持xilinx和altera等多家公司的器件仿真。
有良好的UI界面并且编译速度快,同时支持GUI控制和DOS控制。
相对于quartus ii自带的仿真工具而言,modelsim 的主要优势在于以下几个方面:◆quartus ii 是altera公司专用的集成开发工具,其自带的仿真器仅仅能够支持altera的器件,而modelsim则支持altera以及xilinx等多家公司的器件仿真;◆quartus ii的仿真时间最大一般不超过1ms,而使用modelsim仿真不会受到这方面的限制。
因此仿真运行时间超过1ms的系统,quartus ii做不到。
◆modelsim支持激励文件(testbench)的输入,测试仿真多种输入状态,quartus ii只能通过修改波形来改变输入的状态,当输入状态数量很大时,modelsim更加有优势。
◆quartus ii 10.0以上版本已经不带仿真功能了。