您的位置:首页 > 其它

(笔记)在Quartus II与ModelSim下仿真,对计数初值的设置问题(ModelSim)(Quartus II)(Verilog)

2012-01-04 15:29 169 查看
Abstract

在用Quartus II与ModelSim分别对一个简单的分频程序进行仿真时发现了一个关于设置初值得问题

Intrduction

使用环境:Quartus
II 7.2 SP3 + UP-SOPC2000(Cyclone II EP2C35F627C8)+
ModelSim SE PLUS 6.2b

以前用惯了Quartus II自带的方针工具进行程序的功能和时序仿真,今天尝试了一下用ModelSim进行仿真,待仿真的程序时一个

简单的分频程序,但是就是这样的一个简单的程序分频程序在Quartus II下和ModelSim下的除了截然不同的结果,原因就归结于

一个计数变量cnt的初值问题

在Quartus II环境下仿真

Step1

待仿真的源程序clk_div.v



PS: 注意第17行在Quartus
II仿真时我并没有加这句

Step2

在编译成功,生成逻辑网表后进行功能仿真,仿真结下图



以上是在Quartus II进行功能仿真的结果,与预期一致

在ModelSim SE PLUS 6.2b下仿真

待仿真文件与在Q2下的一样

测试激励文件



结果就是在这样的待测试和测试激励文件下,居然iCLK和rst都有波形产生,就是oCLK输出始终为0,最出我还以为时我的程序在

ModelSim下失效了,同样的程序在两个不同的环境下互相开起了玩笑,想了又想,测试一遍又一遍,还是无结果,最后我把整个

文件发给了“基督山伯爵”网友,还是他帮我我问题解决了:

原因出在源文件的第17行



我原来是没有这段代码的,等加上这段代码后,可以进行功能仿真了,仿真结果如下:



DownLoad

modelsim_count4.rar

Conclusion

在ModelSim中出现上述情形有两种情况可供参考:

情形一:如果程序中加入了cnt<=19'd0,但是在编写测试激励文件时没有对rst波形进行描述(或者是rst在激励中始终为'0'或'1'),那么

仿真时也不会出现结果,原因是cnt没有正常初始化

情形二:就是本文提到的没有写cnt<=19'd0这行代码,即使测试激励文件有对rst波形进行描述,复位有效时也因为没有对cnt正常初始

化而正确仿真

在modelsim 中cnt默认值不是0,在Quatus II仿真的时候cnt被默认为0;所以在ModelSim仿真时一定要注意这一点,

即使在Q2下也要把这句加上,这很大一部分涉及到编程习惯问题,所以我们在编写程序时一定要养成良好的变成习惯,做到周密的考虑!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: