原创 在Quartus II与ModelSim下仿真,对计数初值的设置问题(ModelSim)(Q

2010-1-23 16:48 5159 11 12 分类: FPGA/CPLD

http://blog.ednchina.com/quiye/271118/message.aspx


 


在用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下也要把这句加上,这很大一部分涉及到编程
习惯问题,所以我们在编写程序时一定要养成良好的变成习惯,做到周密的考虑!

文章评论1条评论)

登录后参与讨论

用户432661 2013-3-15 15:37

请问,如果全都是显示X,是怎么回事,代码没错,跟视频上教的一样
相关推荐阅读
用户1324552 2011-08-25 17:14
方波的傅立叶级数构成
  按照傅立叶级数分解方波, 从图可以看出,以后做仿真时,可以产生真实信号的时钟方波的信号.     1       2    3       附录源码 %周期信号(方波)的展开,fb_jin...
用户1324552 2010-12-20 16:10
采用 SMU200A 数字信号源实现极化调制
一、概述    在无线通信系统的发射机中,对于功率放大器的要求是高线性度和高功率转换效率。而传统类型的功率放大器,线性度和功率转换效率需折衷选择。对应于这样的需求,采用极化调制方式实现发射机得到了比较...
用户1324552 2010-12-20 15:43
IQ 调制小文
                   IQ 调制小文    在通信系统中,(语音信号)就是调制和解调所要传送的信息。而在数字通信系统中,传送的信息是数据。数字调制是将数据数据载在射频载波的过程,而解调...
用户1324552 2010-07-20 11:01
IIC总线ABC
IIC总线ABC      I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初...
用户1324552 2010-07-15 14:46
信号的IQ分解和信号差分传输
信号的IQ分解和信号差分传输  I/Q信号   I/Q信号是调制输入端为了提高频带利用率而设计的相位正交得两路信号。   在信号分析中,我们常把信号进行矢量分解,也就是将信号分解为频率相同、峰值幅度相...
用户1324552 2010-07-15 11:12
verilog assign语句的用法
 下面是功能相同但写法不同的两段代码:第一段Amodule assign_test_a (                       clk,                       lhold...
我要评论
1
11
关闭 站长推荐上一条 /2 下一条