当前位置:   article > 正文

IBUF,OBUF,IOBUF原语解析(inout实现,综合出电路结构)

ibuf

用两种方法 实现inout,综合出来的电路结构一样,所以inout作输入时直接assign就行了。:

  1. module inout_def(
  2. input clk,
  3. input z2,
  4. inout dinout2,
  5. input z3,
  6. inout dinout3,
  7. output reg led_r2,
  8. output reg led_r3
  9. );
  10. reg dout2 = 0;
  11. wire din2;
  12. assign dinout2 = z2?1'bz:dout2;
  13. assign din2 = dinout2;
  14. always @(posedge clk)
  15. begin
  16. if(din2)
  17. led_r2 <= 1;
  18. else
  19. led_r2 <= 0;
  20. end
  21. reg dout3 = 0;
  22. wire din3;
  23. IOBUF IOBUF(
  24. .I(dout3),
  25. .O(din3),
  26. .T(z3),
  27. .IO(dinout3)
  28. );
  29. always @(posedge clk)
  30. begin
  31. if(din3)
  32. led_r3 <= 1;
  33. else
  34. led_r3 <= 0;
  35. end
  36. endmodule

放大IOBUF可以看到,IOBUF实际上由一个OBUFT和一个IBUF组成。

IBUF是输入缓冲器,这个不多说。OBUFT是三态输出缓冲器,其结构和真值表如下图所示,可以看到,当T为1时,输出是高阻态。当T为0时,输出与输入结果相同。

所谓高阻态:电路分析时高阻态可做开路理解。你可以把它看作输出(输入)电阻非常大。它的极限状态可以认为悬空(开路)。也就是说理论上高阻态不是悬空,它是对地或对电源电阻极大的状态。而实际应用上与引脚的悬空几乎是一样的。

我们想象一下,OBUFT为高阻态时相当于开路,那dinout3和IBUF组成的通路和一般的输入通路岂不是完全相同,所以此时可以当Input来用。

上面进行implementation,我们看dinout3实现的结果,可以看到IOBUF的IBUF和OBUFT以及相应的联结关系。OBUFT的TRI对应的是z3。IBUF的OUT对应的是led_r3_reg

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/474796
推荐阅读
相关标签
  

闽ICP备14008679号