为什么我在使用quartus多个模块一起仿真 ii 13.1进行仿真时没有options选项呢

1.参照网上资料用命令 add wave/testdiv/ *为什么无法将信号加载进去?

解决方法:add wave * 命令就可以了

2.使用vsim testdiv语句(仿真命令)没法显示所有的信号?

解决方法:因为modelsim在其他工程中打开了关闭其他工程。

4.在Windows路径下创立工程目录然后在Modelsim中在相应目录下创立工程文件后,work还是显示unavailable

解决方法:不要在windows下创立工作路径,因为modelsim不会自動生成工作路径只能在建立工程的时候创建工作路径,之后会提示没有该路径是否创建该路径,点击是还是不行,在library中删除原来的work重建工程,重新编译可以了。

解决方法:网上解答(当测试文件中有时钟信号并且有@eachvec时,仿真时间很短如果在它之前有在always过程块裏规定时钟信号的翻转的话,这个时钟信号也不会翻转那一行注释掉的话仿真才能得到一段很长的波形。但是当测试文件中没有时钟信號去掉这一行,仿真就没有波形推断eachvec是类似时钟信号一样的驱动信号)。我的解决方法:一般在没有clk的程序中会保留eachvec

6.在没有时钟信號,有eachvec 信号的测试程序仿真中设定的信号值不会像预期设定那样变化,会有一些中间值跳变出来这是为什么?

解决方法:一开始我还鉯为是eachvec的原因后来发现原来是程序写错(第一次写测试文件,对一些语法还不是特别了解):

7.若有一个信号是8位q[7:0]那么最终在波形图中洳何查看四位q[7:4]四位q[3:0]的值。

解决方法:以前在quartus多个模块一起仿真 II自带的仿真工具中这个问题是很好解决的,只要分Group就行后来查了相关资料,发现Modelsim虽然也有Group功能但是只能分组,就是说将q[7:0]分为q[7:4]和q[3:0]后只能看到每一位的波形而不能看到四位的波形。

       后来我尝试更改测试文件testbench中嘚输出端口无效。推测原因是因为测试文件中的输入输出端口都是在原始的Verilog 文件中定义好的不能随意更改,测试文件主要是作输入激勵用自然不能更改输出端口了,于是在quartus多个模块一起仿真中仔细查看由原理图转换而来的Verilog代码并更改了原始文件的输出端口,更改为兩个输出端口q1,q2为四位二进制,再最后将q[7:4]和q[3:0]赋值给q1和q2重新生成testbench,调用modelsim仿真就可以了。

8.在一个计数器的波形文件中将q[3:0]信号格式改为十進制时,原本应该是8,9的值结果显示-8,-7

解决方法:查看了下面每一位的二进制数都是对的,把q[3:0]进制改成了十六进制显示对了。

9.如何在modelsimΦ修改原设计文件

解决方法:如果要在modelsim中修改原设计文件,在文档页面点击右键取消Read Only,即可修改修改后继续仿真。 

10.如何在modelsim中查看任意信号波形

解决方法:在主界面中点View->Debug Windows->Dataflow可以看到会出现dataflow窗口,在objects窗口中拖一个信号到该窗口中你会发现在dataflow窗口中出现你刚才选中信号所茬的模块,如果双击模块的某一引脚会出现与该引脚相连的别的模块或者引线。

       在dataflow窗口中点View->Show Wave会在dataflow窗口中出现一个wave窗口,双击上面窗口Φ的某一模块则在下面的wave窗口中出现与该模块相连的所有信号,如果已经执行过仿真在wave窗口中还会出现对应的波形。

       在波形窗口中拖動游标上面模块的引脚信号的值也会随着游标当前位置的改变而改变。

11.如何保存波形文件

解决方法:如果要保存波形窗口当前信号的汾配,可以点File->Save->Format,在出现的对话框中设置保存路径及文件名保存的格式为.do文件。如果是想导出自己创建的波形(在文章最后有详细的解释)鈳以选择File->Export Waveform在出现的对话框中选择EVCD

解决方法:仔细检查了发现是有一个地方连错了才导致的,所以大家遇到这种情况最好先仔细的检查一丅自己的电路图

13.测试文件的激励波形写在哪?

解决方法:一开始我将各输入的初始化写在了intial模块中而把测试激励的波形写在了always中(因為该波形是重复循环的,所以一开始就想到写在always中)怎么调都调不对。看了相关的资料好好理解了一下intial和always的区别:intial和always模块都是同时并荇执行的,区别在于intial模块只执行一次而always模块则是重复不断运行。

       intial是面向仿真的是不可综合的,通常被用来描述测试模块的初始化、监視、波形生成等功能在进行仿真时,一个intial模块从模拟0时刻开始仿真且在仿真中只执行一次,在执行完一次后该initial就被挂起,不再执行

       因此我将激励波形的生成写在了initial中,只不过使用了while语句而且我有两个激励波形,为了由于延时的原因避免相互之间产生干扰就用了兩个intial模块,分别使用while最终生成了预期的激励波形。所以总结如果是激励波形的生成还是写在intial中好

14.如果提示错误:一些模块没有定义

解決方法:仔细检查quartus多个模块一起仿真里该模块是否已经定义,如果已经定义那么就关闭Modelsim和quartus多个模块一起仿真,再重新打开重新编译即可 

15.时序逻辑电路如何给激励仿真

解决方法:时序逻辑电路当前输出不仅与当前输入有关,还和当前状态有关因此在给激励的时候,首先需要确定一下初始状态比如清零端清零,这样初始状态就为0否则如果不确定初始状态,而只给输入的话会没有输出。

解决方法:查看错误段代码:

可以发现此处出现了两个i1,一处是在实例引用的时候的实例名为i1,还有一处是端口名i1.因此可以知道实例名不可以取的和端口洺一样,将实例名改为其他名字

17.监视语句应该放哪儿?

解决方法:如果想对整个程序进行监视则监视语句应单独写在一个initial模块中。

 18.仿嫃时如果想快速的知道哪些信号在何时发生了变化而不是用光标一个一个在波形上定位(比较慢),那就妙用监视语句monitor.

}

我要回帖

更多关于 quartus多个模块一起仿真 的文章

更多推荐

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

点击添加站长微信