Muhammad Farid Ud Din
04/04/2024, 12:53 PMMatt Venn
04/04/2024, 1:03 PMTim Edwards
04/04/2024, 2:37 PMTim Edwards
04/04/2024, 2:40 PMMatt Venn
04/04/2024, 2:52 PMMitch Bailey
04/04/2024, 2:56 PMio_oeb[0]
to low. If you haven’t connected io_oeb to a gpio, you may not be able to see any external changes.Muhammad Farid Ud Din
04/05/2024, 9:06 AMMuhammad Farid Ud Din
04/05/2024, 9:44 AMMuhammad Farid Ud Din
04/05/2024, 10:53 AMMitch Bailey
04/05/2024, 12:36 PMgpio_control_block
takes the gpio_defaults_block
output and the connections to the user area and management area and creates the actual connections to the gpio.
caravel/verilog/rtl/gpio_control_block.v
assign pad_gpio_outenb = (mgmt_ena) ? ((mgmt_gpio_oeb == 1'b1) ?
gpio_outenb : 1'b0) : user_gpio_oeb;
/* For 2-wire interfaces, if the pad is configured for pull-up or */
/* pull-down, drive the output value locally to achieve the */
/* expected pull. */
assign pad_gpio_out = (mgmt_ena) ? ((mgmt_gpio_oeb == 1'b1) ?
((gpio_dm[2:1] == 2'b01) ? ~gpio_dm[0] : mgmt_gpio_out) :
mgmt_gpio_out) : user_gpio_out;
Tim Edwards
04/05/2024, 1:51 PMreg_gpio_*
refer to the management GPIO, a single GPIO that is only accessible by the management CPU and which is not accessible to the user project. On the development board, this GPIO connects to the LED for diagnostic purposes.
The GPIO[0] is connected to the VexRISC debug enable, but it can also be used by the user project, and it can also be used by the management CPU as a simple GPIO signal.
As Mitch indicated, the OEB input to the pad comes from the gpio_control_block module, but that is flattened into the SoC layout. If GPIO[0] is configured for use by the user project, then it ultimately connects to the user project.Mitch Bailey
04/06/2024, 9:19 AMio_oeb
pin must be connected to a low signal for user output. I think there is a workaround for everything (input, analog) else.Muhammad Farid Ud Din
04/06/2024, 9:20 AM