首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iCE40 IceStorm FPGA:双向IO引脚上的可切换上拉

iCE40 IceStorm FPGA:双向IO引脚上的可切换上拉
EN

Stack Overflow用户
提问于 2019-06-10 03:52:59
回答 2查看 693关注 0票数 1

如何将可切换上拉添加到Tri-State管脚?

在icestudio中有"Tri-State“和"Pull-Up”模块。我想把它们组合成一个“带上拉的三态”模块,它有另一个允许启用或禁用上拉的输入(当然,如果三态是在输入模式下的话)。

只需使用信号('pu'),而不是如下所示的常量:

代码语言:javascript
复制
  SB_IO #(
      .PIN_TYPE(6'b1010_01),
      .PULLUP(pu)
  ) io_pin (
      .PACKAGE_PIN(pin),
      .OUTPUT_ENABLE(oe),
      .D_OUT_0(din),
      .D_IN_0(dout)
  );

会导致非常量值错误,并且不会合成。

它应该合成,并通过提供允许设置上拉状态(1=启用/打开或0=禁用/关闭)的另一输入'pu‘。

如果这种行为是不可能的,有没有其他方法(工作一轮)来获得可切换的pullups?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-13 04:00:36

在这里找到了答案:https://discourse.tinyfpga.com/t/internal-pullup-in-bx/800/12

一般的答案是;不,它不能被添加。有些FPGA上有几个具有动态上拉控制的专用引脚(例如UltraPlus上的2个引脚)。SB_IO_I3C原语支持它,例如https://github.com/cliffordwolf/icestorm/blob/master/icefuzz/tests/sb_io_i3c.v除了这些引脚之外,所有其他引脚上的通用IO块没有用于上拉控制的输入。

票数 1
EN

Stack Overflow用户

发布于 2019-06-12 01:57:39

引脚的上拉由配置位流中的位确定,并且不是动态可控的。在Verilog中,实例化的所有参数都必须是常量。因此,“‘pu”的计算结果必须为常量(1'b01'b1)。

据我所知,您需要使用两个引脚将可切换上拉添加到您的iCE40系列FPGA外部:

代码语言:javascript
复制
pu -----|>---+
             |
1'b1 -------|>---[pin]-----+
                           |
oe -----|>---+            |R| 4.7k resistor or other value
             |             |
dout -------|>-+-[pin] ----+
               |
din --------<|-+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56517923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档