I am playing around with a FPGA dev board featuring the Lattice ICE40-HX8K using the yosys/icestorm OpenSource toolchain, and I have noticed very odd behaviour my input pins are showing:
- When I use a certain pin as output, the voltage level for a digital "high" is 1.2V
- When I use the exact same pin as input, applying 1.2V to them is not enough for the FPGA to register this as a high, it is read as a digital "low".
- Only when I use the 3.3V rail from my dev board, the input is actually registered as a digital "high".
Why is this the case? I would expect that if the output "high" is 1.2V, that the input would also work in a similar way?
If that matters, I am using a SB_IO
block to implement bi-directional GPIO ports:
SB_IO #(
.PIN_TYPE(6'b 1010_01),
.PULLUP(1'b 0)
) pins [15:0] (
.PACKAGE_PIN(gpio_pins),
.OUTPUT_ENABLE(pin_direction),
.D_OUT_0(write_data),
.D_IN_0(read)
);