如何使用ModelSim作前仿真恐龙制作与后仿真恐龙制作

(window.slotbydup = window.slotbydup || []).push({
id: '4540180',
container: s,
size: '250,200',
display: 'inlay-fix'
热门资料排行
添加成功至
资料评价:
所需积分:0如何使用ModelSim作前仿真与后仿真_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
如何使用ModelSim作前仿真与后仿真
&&详细介绍前仿真和后仿真的操作,推荐~~!
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩14页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢由于可重复编程,所以不少开发人员就不写testbench,直接使用Quartus II的programmer烧进开发板看结果,或者使用Quartus II自带的Waveform Editor进行仿真,这种方式虽然可行,但仅适用于小project,若project越写越大,Quartus II光做fitter就很耗时间,一整天下来都在作Quartus II编译。
比较建议的方式,还是学AS那招:&写testbench先对每个module作前仿真,再对每个module作后仿真,最后再烧入F测试。&
这种方式的优点是:
1.testbench比waveform editor可更灵活的描述规格。
2.testbench可使用Verilog的系统函数,如$display()、$fwrite()...等。
但要使用testbench作仿真,单独Qaurtus II并无法做到,就得使用ModelSim了,这又牵涉到&前仿真&与&后仿真&。
所谓的&前仿真&,就是Quartus II的Functional Simulation,不考虑电路的门延迟与线延迟,重点在观察电路在理想环境下的行为与设计构想是否一致。由于没经过fitter阶段,所以仿真速度很快。前仿真结果正确,并不表示将来结果结果正确,但若前仿真结果不正确,则将来结果一定不正确。
所谓的&后仿真&,就是Quartus II的Timing Simulation,考虑了电路的门延迟与线延迟,由于经过fitter阶段,所以模拟结果最为精准。但fitter在Quartus II编译需耗费很多时间,所以建议&前仿真&正确后,再考虑&后仿真&。
使用Quartus II的waveform editor作前仿真与后仿真,我就不再多谈,本文主要是谈如何使用ModelSim-Altera作前仿与后仿。
1.使用GUI的方式在ModelSim-Altera作前仿真。
2.使用DO macro在ModelSim-Altera作前仿真。
3.使用Quartus II + ModelSim-Altera作后仿真。
Counter.v / Verilog
2&(C) OOMusou 2008
4&Filename&&& : Counter.v
5&Compiler&&& : Quartus II 8.1 / ModelSim-Altera 6.3g
6&Description : simple counter
7&Release&&&& : 01/30/
10&`timescale 1ns/100ps
12&module Counter (
13&&input&&&&&&& CLK,
14&&input&&&&&&& RST_N,
15&&output [3:0] CNT
18&reg [3:0]
19&assign CNT =
21&always@(posedge CLK, negedge RST_N) begin
22&&if (!RST_N)
23&&&& cnt &= #5&4'h0;
25&&&& cnt &= #5 cnt +&1'b1;&
28&endmodule
一个很简单的counter,从0数到15重复数。由于要使用ModelSim作前仿,所以在reg做了delay,不过这在Quartus II作合成时会自动忽略,因为delay并非可合成的Verilog。
一般写给GA的RTL,都不会去设定timescale,不过由于要用ModelSim作前仿,所以要加上timescale。
Counter_tb.v / Verilog&
2&(C) OOMusou 2008
4&Filename&&& : Counter_tb.v
5&Compiler&&& : Quartus II 8.1 / ModelSim-Altera 6.3g
6&Description : simple counter testbench
7&Release&&&& : 01/30/
10&`timescale 1ns/100ps
12&module Counter_
14&reg&&&&&&&
15&reg&&&&&&& rst_n;
16&wire [3:0]
18&parameter PERIOD =&20;
20&Counter counter (
21&& .CLK(clk),
22&& .RST_N(rst_n),
23&& .CNT(cnt)
26&initial&begin
27&& #0 clk&& =&1'b0;
28&&&&& rst_n =&1'b0;
29&& #5 rst_n =&1'b1;
33&always #(PERIOD/2) clk =&~
35&endmodule
一个很典型的testbench,唯一要注意的是第28行。
&& rst_n =&1'b0;
#5 rst_n =&1'b1;
之所以一开始要将rst_n为0,是因为ModelSim与Quartus II对reg初始值看法不一样,Quartus II认为reg初始值为0,但ModelSim认为reg初始值为x,所以需要rst_n=1'b0将reg归0,这样用ModelSim前仿才会正确,但ModelSim后仿可以不这样做,因为Quartus II会先做处理。
不过为了前仿与后仿都使用同一个testbench,建议加上rst_n = 1'b0设定reg初始值为0。
有了RTL与testbench之后,来看看如何使用ModelSim作前仿与后仿。
1.使用GUI的方式在ModelSim-Altera作前仿真
ModelSim提供了全GUI的方式,只要使用操作的方式,就能做前仿。
File -& New Project
Add Existing File
将Counter.v与Counter_tb.v加入
Compile All
选择Counter.v或者Counter_tb.v,按右键,选择Compile-&Compile All,编译所有Verilog code。
编译成功。
在Library tab选择Counter_tb,按鼠标右键,选Simulate。
Simulate成功。
Add Signal to Wave
将欲观察的信号从Objects加入Wave,加入clk,rst_n与cnt。
最后结果。
最后前仿结果。
&&&&&往下看有更多相关资料
本网站试开通微、小企业商家广告业务;维修点推荐项目。收费实惠有效果!欢迎在QQ或邮箱联系!
试试再找找您想看的资料
资料搜索:
查看相关资料 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
copyright & &广电电器(中国梧州) -all right reserved& 若您有什么意见或建议请mail: & &
地址: 电话:(86)774-2826670& & &&)}

我要回帖

更多关于 仿真驾驶证在线制作 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信