ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:542.87KB ,
资源ID:8040842      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8040842.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验五 Modelsim仿真 教案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验五 Modelsim仿真 教案.docx

1、实验五 Modelsim仿真 教案实验五 ModelSim仿真【实验内容】1仔细阅读ModelSim软件简要使用说明(下文)。(“实例代码”压缩包用于ModelSim软件学习用)2Testbench写法简要介绍。(可以参考“Testbench模版”)3用ModelSim完成10位全加器的功能仿真。ModelSim软件简要使用说明ModelSim是对VHDL,Verilog,SystemC以及混合语言编写的设计文件进行仿真和调试的工具软件。1仿真流程在ModelSim中对一个设计进行仿真的基本步骤如下图所示:2仿真具体步骤Create a new project选择“File New Proje

2、ct”,会弹出对话框,如图所示:其中:“Project Name”项:填写要创建的工程的名字。“Project Location”项:确定创建的工程所要存放的位置。请在E盘下建文件夹!“Default Library Name”项:填写工程的工作库的名字。注:在用ModelSim进行仿真之前,必须要对设计文件进行编译,生成与设计文件逻辑功能相对应的设计单元。由于ModelSim是用库文件来进行仿真的,所以编译后的设计单元需要存放在库文件里。这个库文件叫作“工作库”。926以上三项填写完毕后,点击“OK”按钮,会在指定的位置处创建工程及工作库,如图所示:在工作库文件夹内,有一个名为“_info”

3、的特殊格式文件,如图所示:这个文件指定了此文件夹为ModelSim的工作库文件夹。在编译步骤内生成的所有设计单元都会被添加到工作库文件夹内。Adding objects to the project在上一步点击OK后,ModelSim会弹出一个对话框,如图所示:其中:“Create New File”项:在工程中创建新的设计文件。“Add Existing File”项:把已经存在的设计文件加入到工程中。“Create Simulation”项:在工程中创建仿真配置文件。“Create New Folder”项:在工程中创建新的文件夹。(1)创建文件夹。(此步骤也可以不要,不过推荐采用此步骤,

4、便于文件管理)选择“Create New Folder”项,在弹出的对话框中输入要创建的文件夹的名字,如图所示:点击“OK”按钮,会在“Workspace”列表里显示出新创建的文件夹。如图所示:(2)将设计文件加入到文件夹内。选择“Add Existing File”项,会弹出对话框,如图所示:其中:“File Name”项:指定设计文件所在位置。“Reference from location”项:表示只将设计文件与工程关联起来。“Copy to project directory”项:表示将设计文件复制一份到工程目录下。存放的具体位置由“Folder”项指定。指定设计文件的具体位置后,选择

5、“Copy to project directory”项,并通过“Folder”项,将存放位置改成“HDL”,如图所示:点击“OK”按钮,会在工程文件夹内多出两个设计文件,如图所示:这两个设计文件就是从指定的路径下将源文件复制过来的。点击“OK”按钮后,会在“Workspace”列表的“HDL”文件夹里新加入两个设计文件。如图所示:Compiling your design将设计文件加入到工程中以后,就可以编译设计文件了,编译器会将编译生成的设计单元添加进你所创建的工作库中。编译的步骤如下:(1)编译设计文件。在“Workspace”列表的“Project”栏内,点击右键,在弹出的列表中选择“

6、Compile Compile All”,如图所示:如果设计文件编译无误,每个设计文件后面的“Status”栏会有绿色的对勾,否则会有红色的错叉出现。当有错叉出现时,需要根据ModelSim的“Transcript”栏内的提示信息修改设计文件,并重新编译,直到编译通过为止。编译通过后,由设计文件编译成的设计单元会被加入到工作库中,如图所示:(2)查看编译后的设计单元。点击“Workspace”列表里的“Library”栏,展开“WorkLIB”库,会看到编译后加入到库中的设计单元。如图所示:Loading the design into the simulator编译后生成的设计单元需要加入到

7、仿真器中才能进行仿真。由于测试文件(testbench)例化了要仿真的模块,所以只需要将测试文件生成的设计单元加载到仿真器中。双击“Workspace”列表内工作库下测试文件生成的设计单元,就可以将其加载到仿真器中。也可以选择“Simulate Start Simulation”,会弹出一个对话框,展开“WorkLIB”工作库,选中测试文件生成的设计单元,如图所示:点击“OK”按钮即可将测试文件生成的设计单元加载到仿真器中。设计单元成功加载到仿真器后,ModelSim会自动弹出仿真器,并将“Workspace”列表切换成“sim”栏,如图所示:Running the simulation运行仿

8、真器进行仿真的步骤如下:(1)将信号加入到波形窗口中。在“Workspace”列表内,选择“sim”栏。右键点击测试文件生成的设计单元,在弹出的列表里选择“Add Add to Wave”,如图所示:加入信号后的波形窗口如图所示:也可以在“Objects”列表里选择感兴趣的信号加入到波形窗口里。方法是选中信号,右键单击此信号,在弹出的列表里选择“Add to Wave”,会弹出三个选项,如图所示:其中:“Selected Signals”项:表示加入到波形窗口中的信号是被选中的信号,即图中“Objects”列表里的“count”信号。“Signals in Region”项:表示加入到波形窗口

9、中的信号是“Objects”列表里的所有信号,即图中“Objects”列表里的“clk”、“reset”和“count”信号。“Signals in Design”项:表示加入到波形窗口中的信号是测试文件生成的设计单元里的所有信号,即图中“Workspace”列表里的“test_counter”下面展开的所有设计单元的信号。其中“Signals in Design”的效果与上一种方法效果是一样的。(2)运行仿真器,开始仿真。点击“run”按钮,就可以进行仿真了,如图所示:需要注意的是,“run”按钮每次只能仿真100ns,如果要一直仿真下去的话,点击“run all”按钮可以实现。如图所示:如

10、果要停止仿真,可以按“break”按钮,如图所示:如果要重新仿真,可以按“restart”按钮,如图所示:Debugging your results对仿真波形进行分析,确定逻辑是否正确。如果没有得到你要的仿真结果,则需要修改设计文件,并重新编译,加载到仿真器中进行仿真。注:ModelSim的编译器在对设计文件进行编译时,并不会对设计文件进行综合,即将设计文件与硬件对应,这点从上面的仿真步骤也可以看出,仿真步骤中并没有选择器件型号的步骤。因此编译时生成的设计单元并没有包含硬件信息,即不会存在器件延时,所以只用ModelSim作的仿真是一种功能仿真,有时也称为“前仿真”。如果想用ModelSim

11、作仿真时加入器件的延时信息,模拟硬件来仿真,则需要Quartus的配合才能完成。加入器件延时信息的仿真称为“后仿真”,仿真结果接近真实器件的运行结果。关于ModelSim作“后仿真”,有兴趣的读者可查阅相关资料自学,我们这里只介绍“前仿真”。Testbench写法简要介绍描述测试信号的变化和测试过程的模块叫做测试平台(Testbench),它可以对电路模块进行动态的测试。通过观测被测试模块的输出信号是否符合要求,可以调试和验证逻辑系统的设计和结构是否正确,便于发现问题并修改。Testbench用于测试模块的示意图如图所示: 由示意图可知,Testbench要对被测模块进行测试,需要产生被测模块

12、所需的激励信号(比如时钟信号,复位信号等),这个就像我们用Quartus波形仿真时拖波形一样,只是Testbench里需要我们用代码来实现波形的变化。产生的激励信号需要与被测模块对口(比如产生的时钟信号要送入时钟输入口,产生的复位信号要送入复位输入口等),如何实现对口,这就需要对被测试模块的例化来实现。例化的写法如下:被测模块名 例化进Testbench后的模块名(被测模块输入口 Testbench产生的激励信号,被测模块输出口 Testbench里用来显示输出的信号);上面的示意图对应的例化写法为:被测模块名 例化进Testbench后的模块名( .Input_1 (In_1), .Inpu

13、t_2 (In_2), .Input_3 (In_3), .Output_1 (Out_1), .Output_2 (Out_2), .Output_3 (Out_3);更具体的写法请参考Testbench模版。10位全加器的功能仿真实验要求【输入端口】 【输出端口】clk, / 模块时钟 dout9:0, / 和数rst, / 模块复位 cout / 高位进位din_19:0, / 加数1din_29:0, / 加数2cin / 低位进位以抓图的方式给出仿真波形图,并对结果作适当分析。补充说明timescale 10ns/1ns时钟clk的产生写法:Initial Clk = 0;alway

14、s #50 clk = clk; / 表示从仿真开始算起,每隔50个时间单位,将clk翻转一次复位rst的产生写法:Initial / 下面的写法使rst=1持续的时间为120个时间单位 begin #0 rst = 1b0; / 仿真开始时,rst置0 #5 rst = 1b1; / 仿真开始后5个时间单位时,rst置1 #125 rst = 1b0; / 仿真开始后125个时间单位时,rst置0 end加数的产生写法:always ( negedge clk ) / 时钟下降沿将加数改变 begin din_1 = $random%1024; / 随机数除以1024后取余数给加数,加数在0,1023/ 之间。din_2 = $random%1024; / $random调用了一个能产生随机数的系统任务。 cin = $random%2; end仿真时间的写法:initial #5000 $stop; / $stop调用了一个使仿真器停止仿真的系统任务。仿真时间为 / 2000个时间单位。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1