芯片外部管脚很多都做成inout类型的,目的是为了节省管脚。一般的信号线用作总线等双向数据传输的时候就要用到inout类型了。其实就是一个端口既作输入又作输出,但不是同时,需要有一个控制信号out_en控制h何时为输出,何时为输入。具体可以看下这个例子:
module dual_port(
...
inout_pin,
...
);
inout inout_pin;
wire inout_pin;
wire input_of_inout;
wire output_of_inout;
wire out_en;
assign input_of_inout=inout_pin;//当作输入时读取引脚状态值
assign inout_pin=out_en?output_of_inout:1'bZ;//判断是否为输出并赋值
endmodule
从例子可以知道,当inout用作输出时,就像平常一样。当inout用作输入时,需要设为高阻态,这样其电平就可以由外部输入信号决定了(这是高阻态的特性)。