inout类型的变量,仿真时必须定义为wire类型
那怎么作为输入端给它赋值呢?
eg:
data = oe ? data_reg : 1'bz;
data是wire类型,oe和data_reg是reg类型
oe=1时data是输出,那么oe=0时怎么给data赋值啊....(testbench中,reg类型才可以被赋值啊...)
实际应用时当然不需要给值,但是仿真的时候需要给值啊...
追答所以说仿真时在另外的模块中给激励。看上面回答的后一句话
追问inout就是顶层的IO了,不会有另外模块的。
而且,仿真时只要是输出就是wire,reg是输入.....
testbench顶层的怎么会有inout?顶层的就不需要有端口了,只要调用其他模块就行。被测试模块的顶层才有inout,如果调用的模块有inout端口,那么就用两个信号连接就可以。
首先要搞清楚的是in和out是对哪个模块来说的。问题中的例子都是被调用模块的情况,不是testbench的。
谢了...回答得很耐心,但是另一个人文档说的正好是我要解决的。我是在写testbench,搞不懂inout信号为什么在testbench中必须定义为wire类型、但却仍既做输出、又做输入。还是很感谢你!
reg [39:0] data$inout$reg; //data$inout$reg当成一个变量
wire [39:0] data = data$inout$reg;
date直接例化双向口,输入的时候data的值就是data$inout$reg,看一下那个文档,解释的挺详细的。
资料是挺好,但我使用的是verilog....看不懂VHDL....谢了
追答里面verilog和VHDL都有例子的,仔细看!
本回答被提问者采纳