modelsim-altera仿真,仿真步骤应该没错,但是总是没波形出来,就出来一些红色的水平线,求大神指导

modelsim-altera仿真,仿真步骤应该没错,但是总是没波形出来,就出来一些红色的水平线,求大神指导,第1张

最好贴上激励的程序和波形图。如果程序没问题的话,比较可能的原因是激励设置不正确,这个看波形可以看出来;或是一些自加的变量(如cnt<=cnt+1)没有赋初值,表现为下板测试正确,但是仿真时没有数据(实际的电路中上电寄存器会清零,而仿真时是未知电平)。

1.设置仿真库路径

打开ModelSim安装目录(我用的是ModelSim SE 6.2版本,安装在D:\ModelSim\Installfiles目录下),新建文件夹altera,我们就在该目录下存放预编译的各种Altera库。

启动ModelSim SE 6.2,在主窗口执行【File】/【Change Directory】命令将路径转到altera文件夹。或在命令行中执行cd D:/ModelSim/Installfiles/altera。

2.新建库

Quartus II中提供的仿真库文件存放的路径是...\altera\80\quartus\eda\sim_lib,每个库文件提供了两种形式:.v(Verilog)

格式和.vhd(VHDL)格式两种,根据你所用的语言选择使用。用于编译资源库的文件有220model.v,220model.vhd,220pack.vhd,altera_mf.v,altera_mf.vhd,altera_mf_components.vhd,altera_primitives.v,altera_primitives.vhd,altera_primitives_components.vhd文件。网上的很多教程都是把这些文件一起编译,这样适用于Verilog和VHDL混合仿真,但如果只用一种语言,如Verilog则完全没必要全部编译。下面以该目录下的altera_mf.v为例介绍建立预编译库的方法。

注:ModelSim中仿真库可以分为两大类:第一类是工作库(working),默认值为“work”目录,work目录中包含当前工程下所有被编译的设计单元,编译前必须建立一个work库,并且每个编译有且仅有一个work库;第二类是资源库(resource),存储能被当前编译引用的设计单元,在编译期间允许有多个resource库。

在主窗口中选择【File】/【New】/【Library】命令,新建一个名为altera_mf的库。

3.编译库

方便起见在altera文件夹下新建目录src,把用于编译资源库的文件复制到src文件夹中。

在主菜单中选【Compile】/【Compile】命令,d出Compile Source Files对话框,library中选择你刚才建立的库名

altera_mf,查找范围你选择altera_mf.v文件,刚才你已经把它复制到了...\altera\src目录下。执行编译命令。

继续按照步骤2和3中介绍的方法添加剩下的几个库。添加完成后如下图所示。

4.配置modelsim.ini文件

这一步是为了将前面建立的库添加进系统库,以后就不用再重复添加了。

ModelSim安装根目录下的配置文件modelsim.ini的只读属性去掉,用记事本或其他文本编辑程序打开。在[Library]下修改前面

添加的库的路径。注意修改后关闭并改回只读属性。

注:第1步设置的仿真库路径必须在ModelSim的安装目录下才能事业能够此相对路径。

altera_primitives = $MODEL_TECH/../altera/altera_primitives

220model = $MODEL_TECH/../altera/220model

altera_mf = $MODEL_TECH/../altera/altera_mf

5.添加Altera底层硬件原语仿真库(ATOM)

在时序仿真时,必须加载所使用到的对应于具体Altera器件的底层硬件原语的仿真库(ATOM)。

上面编译了Altera三个资源库文件:220model.v,altera_mf.v,altera_primitives.v,编译通过之后。根据我们选用的具体器件型号继续编译我们所需要的器件底层原语仿真库文件,比如我们选择使用的是cycloneii,所以编译cycloneii_atoms.v。

看你写的代码感觉很多语法问题,一般情况下输入端没有被赋予初值在modelsim仿真时就会是高组态,对比A和B,A是高组态,B不是,就噶西安你的testbench代码中给A赋值时,“ ’ ”号后面的的进制数写成大写了,你可以将他们都改成小写试试。你的输出高组态,我觉得是div代码中” output reg [27:0]C“这句代码有问题,C是输出应该是wire型,而不是寄存器型,说到这里你在testbench代码中也将A和B用成reg型,感觉这样不合理。不知道能不能解决你的问题,但是帮你看看语法,可以再仿真试试,你自己也可以在仿真编译的时候留意下编译栏看有没有报错或者警告。如果还有问题请留言。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12092112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存