modelsim仿真时,有Hiz值或输出为红线时的一种可能原因

关于modelsim中出现红线或有值为Hiz的问题

最近在写verilog,写了一个多模块的工程并仿真,但遇到这样一个问题:

自己设置的时钟信号能够正常变化,顶层的输入正常,但复位信号rst的值一直为Hiz,输出的值也为x,波形图显示为一条红色直线。

解决问题
在csdn上翻看了大量大佬的文章并自己试着修改之后发现了问题所在:

仿真时,我只是将输入的值初始化了,并没有将输出的值也一并初始化,导致仿真时系统不知道输出的初值而判定为不定态,而不定态在仿真波形图中正是一条红色直线。

在testbench文件中将输出也一并初始化(通常是用复位信号rst)再进行仿真,得到了正确的仿真图

testbench文件中貌似不能直接给输出赋初值,故一般用中间变量的形式,让rst这个复位信号去赋予输出变量初值。

下面是一个用复位信号rst给输出一下初值的简单例子

input rst;

output a,b; //两个输出变量

always @(posedge rst)  //检测敏感信号,视具体情况而定
begin
    a = 1'b0;
    b = 1'b0;
end

在这之后只需在testbench文件中给rst赋初值即可。

结尾语
这只是其中一种原因,且是我自己的一个个例,但仍然有其意义。以后在仿真时应该试着在testbench文件中初始化所有的输入输出。
其他的原因在csdn上有很多大佬已经找出来了,可以去耐心查阅一番。

verilog全靠自学和翻看csdn上大佬们的文章,如有不对和不恰当的地方还请指正。

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值