《基于FPGA的现代数字系统设计》课件第5章.ppt

上传人(卖家):momomo 文档编号:8095398 上传时间:2024-11-26 格式:PPT 页数:104 大小:2.07MB
下载 相关 举报
《基于FPGA的现代数字系统设计》课件第5章.ppt_第1页
第1页 / 共104页
《基于FPGA的现代数字系统设计》课件第5章.ppt_第2页
第2页 / 共104页
《基于FPGA的现代数字系统设计》课件第5章.ppt_第3页
第3页 / 共104页
《基于FPGA的现代数字系统设计》课件第5章.ppt_第4页
第4页 / 共104页
《基于FPGA的现代数字系统设计》课件第5章.ppt_第5页
第5页 / 共104页
点击查看更多>>
资源描述

1、第5章 系 统 仿 真 5.1 ModelSim软件的安装及简介软件的安装及简介5.2 在在ISE中调用中调用ModelSim5.3 在在ModelSim中进行仿真中进行仿真5.4 基于基于IP Core的的FIFO仿真实例仿真实例小结小结习题习题实验项目实验项目5.1 ModelSim软件的安装及简介软件的安装及简介 5.1.1 ModelSim软件的安装软件的安装 首先从Mentor Graphics官方网(http:/ XE版本,然后双击setup.exe文件,启动ModelSim安装向导进行安装。首先根据向导提示选择(完全版)或者(评估版),然后根据向导提示选择安装路径,软件安装完成后

2、会弹出授权向导【License Wizard】窗口,在该窗口中单击按钮,弹出授权文件加载窗口【License File Location】,在该窗口中单击按钮加载授权文件。然后点击按钮,向导提示授权文件加载成功,软件就可以使用了。若没有成功安装授权文件,启动Modelsim时会提示“Unable check out a license”(没有检测到授权文件)的提示信息,此时可通过从Windows桌面单击任务栏【开始】【程序】【Modelsim 6.2SE】【License Wizard】命令,弹出【License Wizard】窗口对授权文件进行加载,如图5.1所示。图5.1 授权文件加载窗口

3、 5.1.2 ModelSim窗口简介窗口简介 ModelSim仿真工具有一个随着ModelSim的启动而打开的主窗口和多个子窗口(如图5.2所示):源程序窗口、进程(Active Prosess)窗口、数据流(dataflow)窗口、波形(wave)窗口、列表(list)窗口、对象(Objects)窗口和监视(Watch)窗口等。打开ModelSim仿真工具,单击主窗口工具栏上的【View】命令,在弹出页中勾选相应的子窗口选项即可看到对应的子窗口。每个子窗口右上角的 按钮,可以将其锁定在主窗口中或解除与主窗口的锁定,解锁后可以单独对该子窗口进行操作。图5.2 ModelSim的窗口 下面介绍

4、ModelSim中的主窗口和几个常用的子窗口:(1)主窗口:它是所有其它窗口运行的基础,包含工作(Workspace)区和脚本(Transcript)区。当【Transcript】区中显示设计加载提示符“ModelSim”时,在当前状态下能浏览帮助编辑库、编辑源代码;当设计导入后,【Transcript】区显示提示符“VSIM”,可以显示仿真器的行为动作,如命令、信息、声明等。【Workspace】区的视图数量在不同的仿真流程中会有所不同,包括库文件(Library)视图、文件(Files)视图、数据集合(sim)视图、工程(Project)视图、存储(Memories)视图,每种仿真流程中都

5、有库文件视图,它显示了当前工作库包含的所有设计单元信息。(2)源程序窗口:该窗口是编辑源程序的地方,窗口视窗左上角显示源程序的路径和名称。在此窗口中可以设置断点,用于调试。设置了断点后该行前面会有一个红色圆指示,取消断点后变为空心灰色指示。也可以查找或标注某一个待查信号,标注后该行前面会有一个圆圈指示。(3)进程【Active Prosess】窗口:该窗口显示了仿真中用到的所有进程的列表。选择【View】【Debug Windows】【Active】菜单命令,可以在该窗口显示当前工程中的全部进程。每一个进程都有、和三个不同的状态。:表示这个进程将在当前的计算机能分辨最短时间内被执行。:表示进程

6、正在等待VHDL信号或者Verilog网表和信号的变化。:表示进程正在执行等待语句。(4)对象【Objects】窗口:该窗口主要用来选择要查看的信号。在仿真时,可以将此窗口中的信号拖动到待导入的窗口,或者在此窗口中选中需要查看的信号,然后右击,选择待导入的窗口。如将信号导入到【wave】窗口,首先在【Objects】窗口中右击待查看的信号,选择【Add to Wave】选项,然后单击【Selected Signals】二级选项就可将待观察的信号导入到【wave】窗口中,也可以如图5.3所示单击工具栏上【Add】【Wave】【Selected Signals】完成同样的操作。每个窗口导入选项下都

7、有【Selected Signals】、【Signals in Region】和【Signals in Design】三个二级选项。【Selected Signals】指【Objects】窗口中被选中的信号;【Signals in Region】指【Objects】窗口中所有的信号;【Signals in Design】指当前设计中所有端口信号。另外,【Objects】窗口中的信号列表将根据【Workspace】区【sim】视图中设计层次的变化而发生变化。另外,在【Objects】窗口右击某信号,选择【Force】选项,在弹出的【Force Selected Signal】对话框中根据需要可以

8、强制改变信号的值,如图5.3所示。图5.3 对象窗口(5)列表【list】窗口:该窗口使用表格的形式显示仿真的结果。窗口被分为左右两个部分,左边为仿真运行时间以及仿真的Delta时间,右边为信号列表,如图5.4所示。向【list】窗口中导入信号有如下方法:从【Objects】窗口、【Workspace】区的【sim】视图、【wave】窗口或【dataflow】窗口中选中信号并拖动到【list】窗口中。在【Workspace】区的【sim】视图或【Objects】窗口中选中被观察信号,然后右击选择【Add to List】选项或者单击主窗口中工具栏上【Add】【Add to List】选项下的【

9、Selected Signals】、【Signals in Region】或【Signals in Design】某一选项可以将待观察的信号导入到【list】窗口中。图5.4 列表窗口(6)波形【wave】窗口:在【wave】窗口可以查看仿真的波形文件,如图5.5所示,【wave】窗口中的竖线是光标。【wave】窗口从左到右分为三个不同的区域,分别用来显示信号名称及路径、光标处的信号值和波形。【wave】窗口导入数据的方法与【list】窗口类似,该窗口可以使用【Add】【Divider】命令将数据分为多个组,也可以使用【Add】【Window Pane】命令分为多个窗口,以便于信号分析,所有信

10、号可以在多个窗口和区域之间进行拷贝、复制和移动等。如图5.5中的【wave】窗口被一条横穿窗口的横线分为上下两个窗口,且上面窗口右边的信号列表被分为两组。在【wave】窗口中可以直观地对信号进行分析。拖曳光标,会出现一粗一细两条光标,在两条光标间显示仿真的相对时间。单击工具栏上的 或 按钮,光标移动到被选信号邻近的下降沿或上升沿。激活工具栏上的 按钮,在【wave】窗口的波形上进行拖曳,可对被选区域放大。工具栏上的【Tools】命令可实现信号波形比较【Waveform Compare】、设置断点【Breakpoints】以及进行信号分组【Group】等。图 5.5 波形窗口(7)数据流窗口【d

11、ataflow】:通过该窗口可以跟踪设计中的物理连接、设计中事件的传播、寄存器、网线等,如图5.6所示。在【dataflow】窗口中可以显示进程、信号、网线和寄存器等,也可以显示设计中的内部连接。向该窗口中导入信号的方法与【list】窗口类似,双击【wave】窗口中任何一个信号波形也可将信号导入到【dataflow】窗口。图5.6 数据流窗口 5.1.3 ModelSim的使用方式的使用方式单独使用ModelSim有两种方式:基本方式和工程方式。1基本方式基本方式基本方式的仿真步骤:首先建立仿真库,编译源代码,然后启动仿真器,执行仿真。(1)建立仿真库。为了便于文件管理,建立库前首先要改变库的

12、路径。在ModelSim主窗口中选择【File】【Change Directory】,选择库将要存放的路径,然后在主窗口中选择【File】【New】【Library】命令,弹出如图5.7所示对话框,输入仿真库的名字,默认为“work”。这个操作相当于在命令控制台输入“vlib work”或“vmap work work”命令。图5.7 新建一个库(2)编译源代码。在主窗口中选择【Compile】【Compile】,弹出如图5.8所示对话框。选择库名“work”,然后选择已编写好的一个或者多个Verilog HDL文件,单击按钮进行编译。此处选用ModelSim安装目录下【examplestut

13、orialsverilogbasicSimulation】中的源程序counter.v。counter.v是ModelSim安装自带的示例文件,可以实现八位二进制计数器功能。如果编译通过,就会在“work”库中出现导入的模块,否则在【transcript】区中就会出现某个文件编译不能通过的提示信息,以及错误的原因和源程序代码的行号。双击提示信息后将弹出源程序窗口且提示的错误行被标注,根据错误提示信息,修改源程序后重复编译步骤直到该文件通过编译为止。图5.8 选择要编译的文件(3)启动仿真器。启动仿真器。编译通过后就可对导入的模块进行仿真,测试该模块逻辑功能是否正确实现八位二进制计数器功能。首先

14、须对其编写测试激励(test_bencher)文件,测试文件编译通过后就可以进行仿真了。此处我们选择ModelSim安装目录下“examplestutorialsverilogbasicSimulation”文件夹中的测试激励文件tcounter.v,按上一步的方法将激励文件编译后,双击结构窗口中的“tset_counter”模块或者单击工具栏上的按钮,或者在主窗口中选择【Simulate】【Start Simulation】命令,弹出如图5.9所示窗口,选择要仿真的test_counter模块,然后单击按钮把该模块导入到库中,启动仿真器进入下一步。图5.9 输入待仿真的模块(4)运行仿真。在

15、如图5.10所示的仿真器中就可以在【Workspace】区的【sim】视图中看到仿真模块的结构图,其中test_counter单元调用了由counter.v模块例化的单元dut。此时可先右击待观察的模块,然后将其添加到【wave】窗口、【dataflow】窗口或者【list】窗口中。也可以在【Objects】窗口中对某个需要观察的信号拖入或者右击,将其导入到【wave】窗口、【dataflow】窗口或者【list】窗口。图5.10 将仿真单元导入到【wave】窗口(5)功能分析。运行仿真后,在【wave】窗口就会看到需要观察的信号的功能仿真波形,如图5.11所示。分析波形文件和主窗口的输出结果

16、,由图5.11可以判断counter计数器的功能是正确的,这样就完成了基本的逻辑功能验证。如果在其它设计中仿真功能不正确,必须返回检查并修改源程序后重新仿真。图5.11 功能仿真结果 2工程方式工程方式工程方式的仿真步骤:首先建立工程,添加源文件,然后编译并导入测试文件,执行仿真。(1)建立工程。启动ModelSim,在主窗口中选择【File】【New】【Project】命令,弹出新建工程【Create Project】窗口,如图5.12所示。在【Project Name】栏输入工程名“counter”,在【Project Location】栏中单击 按钮设置工程存放路径,默认库名(Defau

17、lt Library Name)为“work”,单击 按钮,进入下一步操作。图5.12 建立工程窗口(2)添加源文件。在弹出的对话框中选择【Add Existing File】命令,弹出向工程中添加已有文件【Add file to Project】对话框,如图5.13所示。单击 按钮,选择需要添加的文件,此处导入和前面基本方式仿真相同的counter.v和tcounter.v两个文件。在对话框中可以选择【Reference from current location】或者【Copy to project directory】单选框。选择【Reference from current locat

18、ion】是将源文件存储在当前的目录下,不复制源文件;选择【Copy to project directory】是将源文件复制后,存储在当前的工程目录下。单击 按钮,完成源文件添加后,可在【Workspace】区的【Library】视图中看到添加进来的counter.v和tcounter.v文件。图5.13 添加文件到工程窗口(3)编译。在工程标签的任意位置右击,选择【Compile】【Compile all】将工程中所有文件进行编译,编译成功后,在【Transcript】区中出现仿真成功提示信息。(4)执行仿真。在【Library】视图中展开work,双击测试模块“test_counter”,

19、启动仿真器,在【Workspace】区启动【sim】视图,如图5.14所示,然后将信号加载进【wave】或其它待分析的窗口,运行仿真,最后分析窗口或脚本区中的信号,判断功能是否正确。图图5.14 启动仿真窗口启动仿真窗口 5.2 在在ISE中调用中调用ModelSim5.2.1 建立仿真环境建立仿真环境1设置仿真接口设置仿真接口ModelSim是一个独立的仿真工具,ISE集成环境并没有集成ModelSim仿真工具,但预留了仿真软件接口,通过这个接口可以直接从ISE中启动ModelSim。这个接口可以在工程属性窗口中进行设置:启动ISE集成开发环境后,单击【Edit】【Preference】打开

20、属性对话框,在属性对话框中单击【ISE General】【Integrated Tools】,在【Model Tech Simulator】栏中正确填写仿真工具的安装路径,如图5.15所示。单击按钮,关闭属性对话框。图图5.15 第三方工具接口设置第三方工具接口设置 2仿真库的命名仿真库的命名ISE和ModelSim是两个可以单独使用的软件,在ISE环境中启动ModelSim前需要做一些准备工作,下面我们介绍有关仿真库的一些知识。ModelSim有很多不同的版本,如Xilinx公司使用的ModelSim为ModelSim XE的OEM版,这样的版本含有该公司的仿真库,只支持该公司器件的仿真,不

21、需要建立仿真库,直接使用就可以了。但对于ModelSim SEPE版,它没有任何公司的FPGA/CPLD仿真库,没有添加仿真库就只能进行功能仿真,所以在使用之前要建立相应的仿真库。在Modesim中编译Xilinx器件的仿真库时,需要添加Simprims、Unisims、Xilinxcorelib 三个库。Simprim用于布局布线后的仿真;Unisim用于综合后的仿真;如果设计中调用了CoreGen产生的IP Core,则还需要编译Xilinxcorelib库。仿真库的命名可以是任意的,但是如果在ISE集成环境中启动仿真器,Verilog HDL仿真库的名字必须命名为Xilinxcoreli

22、b_ver、Simprims_ver和Unisims_ver,分别对应ISE安装目录【verilogsrc】下的Xilinxcorelib、Simprims和Unisims等三个库。VHDL仿真库的名字必须命名为Xilinxcorelib、Simprims和Unisims,分别对应ISE安装目录【vhdlsrc】下的Xilinxcorelib、Simprims和Unisims等三个库。3仿真库的建立仿真库的建立建立Xilinx器件的仿真库需要编译ISE安装目录下的Xilinx器件库。对仿真库文件的编译有多种方法,如在仿真器中编译仿真库、在ISE环境中编译仿真库和使用仿真库编译向导等方法。1)在

23、ModelSim仿真器中编译仿真库在ModelSim仿真器中编译仿真库的操作步骤如下:(1)修改modelsim.ini文件属性。因为ModelSim根目录下的配置文件modelsim.ini中记录了仿真库的路径,在编译仿真库时,在modelsim.ini中会自动记录创建的库的路径,并与编译的库形成映射关系,因此首先需要将配置文件的modelsim.ini的只读属性修改为存档属性,使软件可以记录仿真库建立的路径和映射关系,启动ModelSim时就可以直接调用Xilinx仿真库,而不用再次编译仿真库了。(2)启动ModelSim仿真工具。在主窗口中选择【File】【Change Director

24、y】命令,将工作路径改为打算存放仿真库的路径,如图5.16所示。图图5.16 更改路径更改路径(3)创建仿真库。在主窗口中选择【File】【New】【Library】命令,弹出新建库【Create a New Library】对话框。在该对话框中输入仿真库的名字“Simprims_ver”,如图5.17所示。图图5.17 输入库名称输入库名称(4)编译仿真库。在主窗口中选择【Compile】【Compile】命令,或者单击工具栏上的按钮,出现编译源文件【Compile Source Files】对话框,如图5.18所示。在【Compile Source Files】对话框的【Library】下

25、拉列表中首先选择“simprims_ver”库,然后单击按钮,对ISE安装路径下【verilogsrcsimprims】的所有源文件进行编译(如果源文件数量太大,则分多次进行编译);或者在主窗口中输入命令“vlog-work simprims_ver D:Xilinx10.1ISEverilogsrcsimprims*.v”(根目录由ISE的安装路径决定)。编译完成之后,在【Workspace】区【Library】视图中展开库“simprims_ver”,会看到刚编译的模块,该库建立成功。然后按照上述添加库的方法,继续添加另外两个库“Unisims_ver”、“Xilinxcorelib_ve

26、r”。图图5.18 选择需编译的库选择需编译的库(5)完成以上的步骤后,重新启动ModelSim,在【Workspace】区就会看到新添加的三个标准库,Xilinx器件的仿真环境就建立了。以后在ISE环境下调用ModelSim时就不需要再次建立仿真库了,除非更改了使用的硬件描述语言。2)在ISE环境中编译仿真库利用ISE10.1中的仿真库编译向导【Simulation Library Compilation Wizard】可以很方便地完成仿真库的编译。在ISE环境中编译仿真库的操作步骤如下:(1)将modelsim.ini去掉只读属性,设为存档,然后单击Windows任务栏【开始】【程序】【X

27、ilinx ISE suite 10.1】【ISE】【Accessories】【Simulation Library Compilation Wizard】,弹出图5.19所示对话框。图图5.19 仿真器选择仿真器选择(2)选择【ModelSim】,单击 按钮,弹出如图5.20所示对话框。(3)在图5.20中列出需要编译的库和映射到新的仿真库名称,单击 按钮,进入编译状态。图图5.20 编译列表编译列表 编译过程大概需要几分钟到十几分钟,编译完成后,在ModelSim根目录下的配置文件modelsim.ini中会多出下面几行信息:UNISIMS_VER=E:Xilinx10.1ISEveril

28、ogmti_seunisims_verUNIMACRO_VER=E:Xilinx10.1ISEverilogmti_seunimacro_verSIMPRIM=E:Xilinx10.1ISEvhdlmti_sesimprimXILINXCORELIB=E:Xilinx10.1ISEvhdlmti_seXilinxCoreLib我们可以看到,在modelsim.ini中已经将需要用到的各个库的路径信息都添加进来了,形成了映射关系,以后使用时就不需要再编译仿真库了,ModelSim可以根据这些路径直接找到Xilinx的仿真库。5.2.2 在在ISE中调用中调用ModelSim实现功能仿真实现功能仿

29、真1创建工程创建工程启动ISE后,按照2.2.1节介绍的方法新建工程“Up_down_counter”。在图5.21工程属性窗口中配置工程属性,在【Simulator】栏中选择“Modelsim-SE Verilog”仿真工具。图图5.21 工程属性窗口工程属性窗口 2仿真仿真添加源文件和测试文件。在主窗口中选择【File】【Add Existing Source】命令,导入测试文件“test_counter.v”以及源文件“up_down_counter.v”以后,在【Sources】窗口中显示两个文件的层次结构,如图5.22中右边窗口所示。在【Sources】窗口中,单击测试文件“test

30、_counter.v”,然后在【Soures for】栏选择功能仿真【Behavioral Simulation】选项,此时在窗口中就会出现ModelSim仿真器,如图5.22中左边窗口所示,双击【Prosesses】窗口中的【Simulate Behavioral Model】启动ModelSim仿真器,就可以看到在【wave】窗口以及在主窗口中的仿真数据,如图5.23所示,这样就在ISE中启动了ModelSim仿真器,此时的仿真功能分析完全在ModelSim中进行,方法同前节。如发现结果不对,则返回ISE软件修改。逻辑功能正确后,再通过ISE软件综合产生时序仿真需要的文件,就可以调用Mod

31、elSim进行时序仿真了。图5.22 ISE中调用ModelSim窗口 图图5.23 在在ISE中启动的中启动的ModelSim仿真器仿真器 5.2.3 在在ISE中调用中调用ModelSim实现时序仿真实现时序仿真 在完成功能仿真后,需要进一步验证设计加入布局布线延时后的仿真结果,这就是时序仿真。进行时序仿真前需要产生时序仿真需要的文件,包括综合布局布线生成的网表文件、测试激励、元件库、综合布局布线生成的具有时延信息的反标文件,这些文件通过ISE工具中的综合、实现等步骤得到。综合实现方法在书中第2.2.3节和2.2.4节作了详细介绍,这里仅作简要说明。1建立时序仿真文件步骤建立时序仿真文件步

32、骤1)设置综合工具打开ISE,按照第2.2.1节中介绍的方法新建工程,并添加待综合的文件和测试文件。综合工具可以选择ISE自带的XST综合,也可选择第三方综合工具,如Synplify。2)设置用户约束设置用户约束约束包括时序、管脚配置和面积约束。一般情况下,当时钟频率低于50 MHz,且设计只有一个时钟时,不需要对设计附加时序约束条件,这时用自动综合就能达到设计要求。但是,当设计的时钟频率较高,或者设计中有像多周期这样复杂的时序时,就需要附加时序约束条件来保证综合、实现的结果满足设计的时序要求。在【Sources】窗口中单击顶层文件,此时对应的进程【Processes】窗口如图5.24所示。展

33、开【Processes】窗口中的【User Constraints】选项,双击展开项就可以进行用户约束设置,包括设置时序约束(Create Timing Constraints)、引脚配置(Assign Package Pins)和面积约束(Create Area Constraints),也可以用Edit Constraints文本编辑综合约束信息。图图 5.24 用户约束设置用户约束设置 3)进行逻辑综合进行逻辑综合行为级功能仿真通过后,在图5.22中【Sources】窗口的【Sources for】栏选择【Implementation】命令,双击【Processes】窗口中的【Synth

34、esize-XST】选项,进行逻辑综合。当综合选项前的问号变成绿勾时表示综合成功,如图5.25所示,否则变成红色叉。这时根据【Tanscript】中的错误提示信息修改源程序直到综合通过。双击【Processes】窗口中的【Generate Post-Synthesis Simulation Model】选项,产生综合后的网表文件“TOP_synthesis.v”(TOP代表进行综合的顶层文件,它的名称根据设计者进行综合的模块名而定),该文件保存在当前工程目录下【netgensynthesis】文件夹中,将它导入到ModelSim中就可以做综合后的仿真。逻辑综合的详细过程参见书中第2.2.3节。

35、图图5.25 进程窗口进程窗口 4)进行物理实现物理实现包括转换(Translate)、映射(Map)和布局布线(Place&Route)等三个步骤。转换是将多个文件合并为一个网表;映射是将网表中的逻辑符号组装到物理单元中;布局布线是将元件放置到器件中将它们连接起来,同时提取时序数据并产生各种报表。综合通过后,展开图5.25中【Implement Design】选项的层次,可以看到【Translate】、【Map】和【Place&Route】这三种实现方式。双击【Processes】窗口中【Generate Post-Synthesis Simulation Model】选项,生成仿真文件“T

36、op_translate.v”(TOP表示在源程序窗口选择的顶层文件,名称根据设计者的设计而定)。双击【Processes】窗口中的【Generate Post-Map Simulation Mode】选项,生成一个网表文件“Top_map.v”和一个带有门延时,但是没有线延时信息的反标文件“Top_map.sdf”。双击【Processes】窗口中的【Generate Post-Place&Route Simulation Model】选项,也生成一个网表文件“Top_timesim.v”和一个带有门延时和线延时信息的反标文件“Top_timesim.sdf”。这些文件分别保存在工程目录下的

37、【netgentranslate】、【netgenmap】、【netgenpar】文件夹中,其中“Top_timesim.sdf”文件有完整的器件延时信息,是作精确时序仿真所需的文件。2进行时序仿真进行时序仿真在图5.26中的【Sources】窗口【Sources for】栏的下拉列表中可以看到转换后仿真(Post-Translate Simulation)、映射后仿真(Post-Map Simulation)和布局布线后仿真(Post-Place-Route Simulation)。首先选择转换后仿真【Post-Translate Simulation】选项,然后选中【Sources】窗口中

38、的顶层文件,在图5.26【Processes】窗口单击【Simulate Post-Translate Model】选项激活ModelSim仿真器,开始运行转换后仿真。按照同样的方法继续作映射后仿真和布局布线后仿真,并验证设计是否满足要求。如果此时设计不能满足要求,则要仔细分析原因,此时可能需要返回修改约束条件,也有可能需要修改源程序,然后重新综合,重新进行仿真,直到设计满足要求,仿真结束。图图5.26 转换后仿真窗口转换后仿真窗口 5.3 在在ModelSim中进行仿真中进行仿真直接在ISE中进行仿真操作虽然比较简单,但是速度却没有直接在ModelSim中快,因为在ISE中源文件的每次修改都

39、需要重新综合后才能调用ModelSim,且每一次仿真都要重新启动ModelSim。而直接在ModelSim中进行仿真,源文件修改后只要重新编译即可仿真,不用重启软件,速度要快得多。直接在ModelSim中仿真调试也非常方便,因为在ISE中调用ModelSim只能看到输入/输出信号,而对于设计的中间信号,特别是IP Core的内部信号无法观测。直接在ModelSim中仿真可以观测设计中出现的任何信号和IP Core内的任何信号,这样我们设计的数据流向不仅可以很清楚地表示出来,而且还可以检测不同编程方式的处理效果,极大地方便了设计和调试。直接在ModelSim中进行仿真时,每种仿真对应的文件不同,

40、其对应关系如下:功能仿真需要导入的文件:Testbench文件和TOP.v。转换后仿真需要导入的文件:Testbench文件、glbl.v和TOP_post_traslate.v。映射后仿真需要导入的文件:Testbench文件、glbl.v、TOP_map.v和TOP_map.sdf。布局布线后仿真需要导入的文件:Testbench文件、glbl.v、TOP_timesim.v和TOP_timesim.sdf。这几种仿真的流程和激励是相同的,后三种仿真需要Xilinx的器件库,且需导入“glbl.v”文件,该文件在Xilinx安装路径【verilogsrc】下,是仿真时需要的全局初始化文件。

41、时序仿真导入到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。现在以布局布线后的仿真为例,对时序仿真进行介绍。在ModelSim中进行仿真一般有两种方式,前面我们已经作了介绍,现在以工程方式进行时序仿真的介绍,具体步骤如下:(1)新建工程。首先在主窗口中改变工作路径,然后单击工具栏上的【File】【New】【Projecte】命令,弹出工程属性窗口,新建工程,按照5.1.3节介绍的方法将“Top_timsim.v”、“Top_timsim.sdf”、“glbl.v”添加到该工程中。在将文件添加到工程中之前,最好新

42、建一个文件夹,将这些文件复制到该文件夹中以便于管理。在【Workspace】区【Project】视图右击,选择【Add to Project】【Adding Simulation Configuration】命令,弹出仿真配置对话框(Add Simulation Configuration),如图5.27所示。(2)添加SDF文件。在图5.27【Adding Simulation Configuration】对话框中选择【SDF】标签项,单击按钮,弹出如图5.28所示的【Add SDF Entry】对话框,在【SDF File】单击按钮,把ISE生成的SDF文件添加进去。在【Apply to

43、Region】栏默认值是“/”,表示该SDF文件应用于当前工作路径下的所有模块,若输入当前工作路径下测试文件中例化的顶层文件名“/test_counter/dut”(在本例中测试文件名为test_counter,例化的顶层文件counter的名字为dut),表示该SDF文件仅仅应用于“dut”模块。注意TOP_map.v和TOP_timesim.v文件中有一句初始化SDF文件路径的代码,如“initial$sdf_annotate(netgen/par/TOP_timesim.sdf);”,该代码指定调用ModelSim当前工作路径下的SDF文件,手动添加SDF文件时需要将该初始化语句删除,或

44、者将该路径改为SDF文件保存的路径,这时就不用手动添加SDF文件了,如改为“initial$sdf_annotate(TOP_timesim.sdf),表示指定SDF文件在ModelSim当前的工作路径下,此时只需要将SDF文件复制到当前工作路径即可。图图5.27 仿真配置对话框仿真配置对话框 图图5.28 添加添加SDF文件文件(3)添加库。在图5.27【Adding Simulation Configuration】对话框中选择【Libriaries】标签项,将已编译好的simprims_ver、unisims_ver和XilinxcoreLib_ver三个库(库的编译过程见5.2.1节)

45、添加到工程中,如图5.29所示。图图5.29 仿真库设置仿真库设置(4)选择仿真文件进行仿真。在图5.29中选择【Design】标签项,出现如图5.30所示对话框,在该对话框中选择测试文件,本例为“test_counter”,并在【Simulation Configuration Name】标签下输入仿真项名称,如“Simulation1”,单击按钮后,在【Workspace】区【Project】视图中出现仿真名“Simulation1”。双击“Simulation1”启动仿真器,以后的分析过程同5.2节。仿真属性可以通过右击仿真名“Simulation1”,选择【properties】进入属

46、性窗口进行修改。有时设计中存在多个设计源文件和多个测试源文件,若想在同一工程中测试不同的文件,可按上述方法将它们全部添加到工程,然后对于不同的测试文件可在图5.30中选择对应的被测文件并设置不同的仿真项名称,即可在同一工程中进行仿真测试。图图5.30 添加仿真文件添加仿真文件 5.4 基于基于IP Core的的FIFO仿真实例仿真实例5.4.1 建立建立FIFO IP Core的源文件的源文件1新建工程新建工程从Windows任务栏选择【开始】【程序】【Xilinx ISE suite 10.1】【ISE】【Accessories】【CORE Generator】命令,直接启动Core Gen

47、erater工具,按照第4.4节的方法,新建名为工程名.cgp的工程,在图5.31工程属性窗口中设置工程属性。在【Generation】标签项【Folw】栏中选择用户输出产品【Custom Output Products】,在仿真语言【Simulation Files】栏中选择【Verilog】,将输出给用户的IP Core源文件设为Verilog语言,仿真文件其它选项可以为默认值。图图5.31 工程属性窗口工程属性窗口 2产生产生FIFO IP Core的源文件的源文件在CORE Generator的【Founction】窗口中单击【Memories&Storage Elements】【FI

48、FOs】【Fifo Generator v4.3】命令,按照4.4.2节的方法设置FIFO参数。根据设置参数的不同,在保存工程的文件夹里会产生一系列不同后缀名的文件,其中Corename.v文件是在ModelSim中进行功能仿真的Verilog源文件;Corename.veo文件是Verilog源代码,在对模块进行例化时使用;Corename.xco包含当前工程属性与IP Core的参数信息,该文件既可以用于功能仿真,也可以用于产生IP Core。本实例中产生的IP Core的名称Corename为“my_fifo”,它具有18位输入/输出端口,功能仿真时直接导入“my_fifo.v”。但作时

49、序仿真前,必须将生成的名为“my_fifo”的IP Core进行例化,例化文件“ip_fifo.v”代码如下所示,其中注释符号/*之间是例化IP Core“my_fifo.v”的代码,该段代码即是CORE Generator自动生成的文件的内容:module ip_fifo(clk,din,rd_en,rst,wr_en,dout,empty,full);input clk;input17:0 din;input rd_en;input rst;input wr_en;output17:0 dout;output empty;output full;/*以下代码对生成的名为“my_fifo”的

50、IP Core进行例化,例化模块名称为“dut”my_fifo dut(.clk(clk),.din(din),/Bus 17:0 .rd_en(rd_en),.rst(rst),.wr_en(wr_en),.dout(dout),/Bus 17:0 .empty(empty),.full(full);/*endmodule 将名为“my_fifo”的IP Core进行例化后产生时序仿真所需文件的步骤如下:(1)在ISE中导入“ip_fifo.v”和“my_fifo.v”两个文件。(2)设置工程属性选择器件“Virtex-5”以及设置约束条件等。(3)对顶层文件“ip_fifo.v”进行综合实

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《基于FPGA的现代数字系统设计》课件第5章.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|