VerilogHDL如何在测试⽂件tb中给inout类型的变量赋值并设置时延Verilog HDL如何在测试⽂件tb中给inout类型的变量赋值并设置时延
⾸先要明⽩的⼀点,双向端⼝inout类型只能是线⽹型wire数据,那么就只能⽤连续赋值语句assign进⾏赋值。就是⼀个端⼝同时做输⼊和输出。 inout 在具体实现上⼀般⽤三态门来实现。三态门的第三个状态就是⾼阻’Z’。当 inout 端⼝不输出时,将三态门置⾼阻。
在我测试⽂件中data为inout类型的数据,我希望从data输⼊的数据保持⼀段时间再变化,共有4个不同数据。但是当我⽤⼀般的时延语句进⾏赋值的时候,仿真波形并不是预想的结果。错误⽰范如下:
wr为写信号,低电平有效。
可以看到后三位的数据由于发⽣了变化所以是未知的,⽤x表⽰。
修改之后
modulesim仿真波形如下:
做法:
设置reg型变量data_in,这种类型的变量可以正常设置时延
采⽤条件赋值语句,实现对data的控制。
思想:相当于⽤data_in做⼀个中转。我也不知道为什么,但是就是在⽹上看到⼀句话,对wire型数据的assign赋值是⽴即实现的。