VIVADO inout 端口的使用

使用2018.1版本编译带有INOUT 端口的代码,代码逻辑没问题,写了三态控制。但是下板子,inout端口输入数据一直是0。

最终查找原因,看RTL级原理图,并没有三态控制,端口信号只是被认为一个简单的输出信号。

后来,用IOBUF 代替 assign 语句描述的三态控制问题得到解决。

	 IOBUF #(
      .DRIVE(12),               // Specify the output drive strength
     // .IBUF_LOW_PWR("TRUE"),  // Low Power - "TRUE", High Performance = "FALSE" 
      .IOSTANDARD("LVCMOS33"),  // Specify the I/O standard
      .SLEW("SLOW")             // Specify the output slew rate
   ) IOBUF_inst (
      .O(MCU_XD_input),         // Buffer output
      .IO(MCU_XD),              // Buffer inout port (connect directly to top-level port)
      .I(MCU_XD_output),        // Buffer input
      .T(oe_n)                  // 3-state enable input, high=input, low=output
   );

IOBUF 说明:IBUF_LOW_PWR 看很多人都屏蔽掉了,我在代码里添加这句话以后,总是有严重警告。提示不存在改类型

IOSTANDARD 电压标准 大部分人用的DEFAULT ,其实,可以看自己引脚分配用什么,对应上。

 

O (MCU_XD_input) 是INOUT 端口当做输入时候总线上的数据;

I (MCU_XD_output) 是INOUT 端口当做输出时候总线上的数据;

IO (MCU_XD )是INOUT 端口;

T (oe_n) 是三态控制,1表示IO 是输入,0表示IO是输出

 

 

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值