在用modelsim进行时序仿真时,出现高阻态信号(蓝线)或者不定态信号(红线)的问题,如下图。
出现这样的情况,有一种可能的原因就是没有对这些信号进行初始化,所以在modelsim中认为输入信号为高阻态(z),输出信号为不定态(x)。
解决办法:对于输入信号在测试文件(tb)中一定要赋值;输出信号将其复位为一个确定的初始状态,比如采用异步复位的方式(如下图),此时的复位信号rst_n在测试文件中要赋值。
当所有信号都有确定的初始状态后,仿真得到如下图的时序结果。
在图中可以看到,在复位信号(rst_n)之前仍然有不确定的状态,但是在异步复位之后所有信号状态都是确定的了。