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) );