iCE40 IceStorm FPGA:双向 IO 引脚上的可切换上拉
iCE40 IceStorm FPGA: Switchable Pullup on Bi-directional IO pins
如何将可切换上拉添加到三态引脚?
icestudio中有"Tri-State"块和"Pull-Up"块。我想将它们组合成一个 "Tri-State with Pull-Up" 块,该块具有另一个允许启用或禁用上拉的输入(当然,如果三态处于输入模式)。
只需使用信号 ('pu') 而不是此处显示的常量:
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)
);
导致非常量值错误,无法合成。
它应该合成并由此提供另一个输入 'pu' 允许设置上拉状态(1=enabled/on 或 0=disabled/off)。
如果这种行为是不可能的,是否有另一种方法(变通)来获得可切换的上拉?
一个pin的Pull-up是由配置bit-stream中的一个位决定的,不是动态可控的。在 Verilog 中,实例化的所有参数都必须是常量。因此,'pu' 必须计算为常数(1'b0
或 1'b1
)。
据我所知,您需要使用两个引脚将可切换 pull-up 添加到您的 iCE40 系列 FPGA 外部:
pu -----|>---+
|
1'b1 -------|>---[pin]-----+
|
oe -----|>---+ |R| 4.7k resistor or other value
| |
dout -------|>-+-[pin] ----+
|
din --------<|-+
在这里找到答案: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 块都没有用于上拉控制的输入。
如何将可切换上拉添加到三态引脚?
icestudio中有"Tri-State"块和"Pull-Up"块。我想将它们组合成一个 "Tri-State with Pull-Up" 块,该块具有另一个允许启用或禁用上拉的输入(当然,如果三态处于输入模式)。
只需使用信号 ('pu') 而不是此处显示的常量:
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)
);
导致非常量值错误,无法合成。
它应该合成并由此提供另一个输入 'pu' 允许设置上拉状态(1=enabled/on 或 0=disabled/off)。
如果这种行为是不可能的,是否有另一种方法(变通)来获得可切换的上拉?
Pull-up是由配置bit-stream中的一个位决定的,不是动态可控的。在 Verilog 中,实例化的所有参数都必须是常量。因此,'pu' 必须计算为常数(1'b0
或 1'b1
)。
据我所知,您需要使用两个引脚将可切换 pull-up 添加到您的 iCE40 系列 FPGA 外部:
pu -----|>---+
|
1'b1 -------|>---[pin]-----+
|
oe -----|>---+ |R| 4.7k resistor or other value
| |
dout -------|>-+-[pin] ----+
|
din --------<|-+
在这里找到答案: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 块都没有用于上拉控制的输入。