首页 > 代码库 > Verilog HDL双向端口的使用

Verilog HDL双向端口的使用

Verilog HDL语法的I/O端口分为三类:input、output、inout。input端口不能被定义成寄存器变量型,只能是线网型;output端口信号可定义成寄存器型变量,并在always块内可以被赋值使用;而inout型双向端口信号不能被定义成reg型变量,因此只能采用assign赋值语句,不能再always块内使用。

     当Z=0时,上面的管子导通,数据从器件内部端口(din)向器件外部端口                             (dinout)输出。

当Z=1时,上面的管子被置为高阻态,数据不能从上面的管子输出,此时数据只 可以从下面的管子由外部端口(dinout)向 内部端口(dout)输入。

module data(clk,z,din,dinout,dout); 

input clk;        

input z;

input[15:0] din;

inout[15:0] dinout; 

output[15:0] dout; 

reg[15:0] dout; 

reg[15:0] din_t;

assign dinout=(!z)   din_t : 16‘bz;  

always @(posedge clk)  

begin      

       if(!z)

              din_t<=din;      

       else

        dout<=dinout;  

end

endmodule

Verilog HDL双向端口的使用