计数器的Modelsim仿真报告.pdfVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

计数器的Modelsim仿真

一.实验目的和要求:

1.熟悉Quartus和Modelsim软件的基本使用方法和步骤,熟悉基本的Verilog语法,学会用

Verilog语言编写简单的程序。

2.学会使用Quartus编写计数器模块并用Modelsim进行仿真。

3.熟练掌握Quartus和Modelsim软件工程建立、添加文件、编译运行和仿真的方法,学会写

程序文件和测试文件。

4.试验设备及要求:@Quartus13和Modelsim。@运行Modelsim软件建立工程并添加测试.v

文件,进行仿真,查看波形图。

二.仿真方案:

用Quartus编写出计数器模块,已由上节课完成这个任务。编写好计数器模块后,再进行

Modelsim进行仿真实验。

三.仿真过程:

1.根据自己写的计数器模块编写测试程序。这里我是用Quartus编写的,所以在编写的时候遇

到一些问题。编写如下图:

2.编写完测试模块并编译完成后,打开Modelsim。选择菜单栏的【File】→【New】→【Project】

命令,在弹出窗口中选择【AddExitingFile】,把事先写好的测试文件和程序文件tb_cnt84和

count84加入。

3、编译运行:在空白处右键,在弹出窗口中选择【Compile】→【CompileAll】,检查完错

误后,进行更改,直至没有错误出现。最后进行【Simulate】,选择自己编写的tb_cnt84,然

后右击选择加波形,addwave。

4、计数器仿真结束:

四.仿真过程中的错误排查与解决方案:

1、在编写测试模块时我是用Quartus进行编写的,所以总是有一个问题,也就是总是有一个

错误解决不了,在请教了同学之后,知道这可能是没问题的,所以还要导入Modelsim之后再

进行修改,我导入Modelsim之后,发现确实没有了错误。

2、测试模块的变量问题,测试模块的变量决定了测试模块能否编写成功的关键,所以在编写

变量时要格外注意,第一次我并没有把所有的变量编写进去,所以总是漏洞百出,最后,终

于成功地完成了测试模块的编写。

五.仿真结果分析:

1:测试模块程序:

`timescale1ns/1ns

moduletb_cnt84();

wire[7:0]qout;

regclk;

regreset;

regenable;

wirecout;

initialbegin

reset=1b0;

clk=1b0;

#30reset=1b1;

enable=1b1;

end

always#50clk=~clk;

count84u1(

.clk(clk),

.reset(reset),

.enable(enable),

.qout(qout),

.cout(cout)

);

Endmodule

2、计数器模块程序:

modulecount84(inputclk,reset,enable,

outputreg[7:0]qout,

outputcout);//定义输入输出变量,采用级联的形式,十位记到8,个位到4

always@(posedgeclkornegedgereset)

begin

if(!reset)

qout=8

elseif(enable==1b0)

qout=qout;

elseif((qout[7:4]==4b1000)(qout[3:0]==4b0100))//十位是8并且个位为4

qout=8

elseif(qout[3:0]==4b1001)//如果为9

begin

qout[3:0]=4b0000;

qout[7:4]=qout[7:4]+1b1;//加一运算

end

else

begin

文档评论(0)

lzy5536lzy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档