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

转载于:https://www.cnblogs.com/360beida/p/4063472.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值