双向IO模块 -- ad_iobuf,inout端口处理

ad_iobuf实现代码:

module ad_iobuf #(

  parameter     DATA_WIDTH = 1) (

  input       [(DATA_WIDTH-1):0]  dio_t,
  input       [(DATA_WIDTH-1):0]  dio_i,
  output      [(DATA_WIDTH-1):0]  dio_o,
  inout       [(DATA_WIDTH-1):0]  dio_p);


  genvar n;
  generate
      for (n = 0; n < DATA_WIDTH; n = n + 1) begin: g_iobuf
          assign dio_o[n] = dio_p[n];
          assign dio_p[n] = (dio_t[n] == 1'b1) ? 1'bz : dio_i[n];
      end
  endgenerate

endmodule

端口说明:

dio_t控制信号        
dio_idin(做输入)
dio_odout(做输出)
dio_p控制端口方向

如果dio_t为高电平时,dio_p为高阻态,高阻态是高电平还是低电平由后面接的东西定,dio_p可以被外界驱动,此时inout端口为input型

如果dio_t为低电平时,dio_p=dio_i,也就是dio_o = dio_i,此时inout端口为output型

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值