Fixed gpio not getting input connections (a bit more) due to verilog being dumb and not correctly parsing a mux inside a mux when performing syntheses, even though it works correctly in rtl simulation.
diff --git a/verilog/dv/peripheralsGPIO/peripheralsGPIO.c b/verilog/dv/peripheralsGPIO/peripheralsGPIO.c
index 8e67636..d722d5b 100644
--- a/verilog/dv/peripheralsGPIO/peripheralsGPIO.c
+++ b/verilog/dv/peripheralsGPIO/peripheralsGPIO.c
@@ -149,7 +149,7 @@
wbWrite (GPIO0_OE_SET_ADDR, 0x00080);
uint32_t ioData = wbRead (GPIO0_INPUT_ADDR);
if (ioData != 0x80) testPass = false; // input = 1'b1
- wbWrite (GPIO0_OUTPUT_WRITE_ADDR, (testPass ? 0x01000 : 0) | (((ioData >> 5) & 0xF) << 14));
+ wbWrite (GPIO0_OUTPUT_WRITE_ADDR, (testPass ? 0x01000 : 0) | (((ioData >> 7) & 0xF) << 14));
nextTest (testPass);
wbWrite (GPIO1_OE_WRITE_ADDR, ~0x00000);
diff --git a/verilog/rtl/Peripherals/IOMultiplexer/GenerateGPIOAssigns.py b/verilog/rtl/Peripherals/IOMultiplexer/GenerateGPIOAssigns.py
index 1abb9a1..1d58cb5 100644
--- a/verilog/rtl/Peripherals/IOMultiplexer/GenerateGPIOAssigns.py
+++ b/verilog/rtl/Peripherals/IOMultiplexer/GenerateGPIOAssigns.py
@@ -164,7 +164,7 @@
if sortedIndex[pinNumber] < 0:
sortedIndex[pinNumber] = i
else:
- print(f"Duplicate pin with index {pinNumber}. Origional pin 'IO{pinNumber}-{name}' new pin 'IO{pinNumber}-{name}'")
+ print(f"Duplicate pin with index {pinNumber}. Original pin 'IO{pinNumber}-{name}' new pin 'IO{pinNumber}-{name}'")
outputLines.append(f" // Interface IO mapping\n")
outputLines.append(f" // GPIO0 (user1 side)\n")
@@ -198,7 +198,7 @@
def writeIRQPin(outputLines:list[str], pinName:str, allowGPIO:bool):
if allowGPIO:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = irq_en ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = irq_en ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = irq_en ? 1'b0 : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = irq_en ? {IO_INPUT} : gpio_oe[PIN_{pinName}];\n")
outputLines.append(f" assign irq_in = irq_en ? io_in[PIN_{pinName}] : 1'b0;\n")
@@ -211,11 +211,11 @@
def writeFlashPin(outputLines:list[str], pinName:str, isOutput:bool, pinType:str, allowGPIO:bool):
if allowGPIO:
if isOutput:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = flash_en ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = flash_en ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = flash_en ? flash_{pinType.lower()} : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = flash_en ? {IO_OUTPUT} : gpio_oe[PIN_{pinName}];\n")
else:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = flash_en ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = flash_en ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = flash_en ? flash_{pinType.lower()}_write : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = flash_en ? !flash_{pinType.lower()}_we : gpio_oe[PIN_{pinName}];\n")
outputLines.append(f" assign flash_{pinType.lower()}_read = flash_en && !flash_{pinType.lower()}_we ? io_in[PIN_{pinName}] : 1'b0;\n")
@@ -233,11 +233,11 @@
def writeUARTPin(outputLines:list[str], pinName:str, uartIndex:int, isOutput:bool, allowGPIO:bool):
if allowGPIO:
if isOutput:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = uart_en[{uartIndex}] ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = uart_en[{uartIndex}] ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = uart_en[{uartIndex}] ? uart_tx[{uartIndex}] : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = uart_en[{uartIndex}] ? {IO_OUTPUT} : gpio_oe[PIN_{pinName}];\n")
else:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = uart_en[{uartIndex}] ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = uart_en[{uartIndex}] ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = uart_en[{uartIndex}] ? 1'b0 : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = uart_en[{uartIndex}] ? {IO_INPUT} : gpio_oe[PIN_{pinName}];\n")
outputLines.append(f" assign uart_rx[{uartIndex}] = uart_en[{uartIndex}] ? io_in[PIN_{pinName}] : 1'b1;\n") # UART Rx defaults to high when not in use
@@ -254,7 +254,7 @@
def writePWMPin(outputLines:list[str], pinName:str, pwmIndex:int, allowGPIO:bool):
if allowGPIO:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = pwm_en[{pwmIndex}] ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = pwm_en[{pwmIndex}] ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = pwm_en[{pwmIndex}] ? pwm_out[{pwmIndex}] : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = pwm_en[{pwmIndex}] ? {IO_OUTPUT} : gpio_oe[PIN_{pinName}];\n")
else:
@@ -265,11 +265,11 @@
def writeSPIPin(outputLines:list[str], pinName:str, spiIndex:int, isOutput:bool, pinType:str, allowGPIO:bool):
if allowGPIO:
if isOutput:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = spi_en[{spiIndex}] ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = spi_en[{spiIndex}] ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = spi_en[{spiIndex}] ? spi_{pinType.lower()}[{spiIndex}] : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = spi_en[{spiIndex}] ? {IO_OUTPUT} : gpio_oe[PIN_{pinName}];\n")
else:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = spi_en[{spiIndex}] ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = spi_en[{spiIndex}] ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = spi_en[{spiIndex}] ? 1'b0 : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = spi_en[{spiIndex}] ? {IO_INPUT} : gpio_oe[PIN_{pinName}];\n")
outputLines.append(f" assign spi_{pinType.lower()}[{spiIndex}] = spi_en[{spiIndex}] ? io_in[PIN_{pinName}] : 1'b0;\n")
@@ -287,11 +287,11 @@
def writeVGAPin(outputLines:list[str], pinName:str, pinType:str, pinIndex:int, allowGPIO:bool):
if allowGPIO:
if pinIndex >= 0:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = vgaEnable ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = vgaEnable ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = vgaEnable ? vga_{pinType.lower()}[{pinIndex}] : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = vgaEnable ?{IO_OUTPUT} : gpio_oe[PIN_{pinName}];\n")
else:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = vgaEnable ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = vgaEnable ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = vgaEnable ? vga_{pinType.lower()} : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = vgaEnable ?{IO_OUTPUT} : gpio_oe[PIN_{pinName}];\n")
else:
@@ -306,7 +306,7 @@
def writeBlinkPin(outputLines:list[str], pinName:str, blinkIndex:int, allowGPIO:bool):
if allowGPIO:
- outputLines.append(f" assign gpio_input[PIN_{pinName}] = blinkEnabled ? 1'b0 : gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0;\n")
+ outputLines.append(f" assign gpio_input[PIN_{pinName}] = blinkEnabled ? 1'b0 : (gpio_oe[PIN_{pinName}] ? io_in[PIN_{pinName}] : 1'b0);\n")
outputLines.append(f" assign io_out[PIN_{pinName}] = blinkEnabled ? blink[{blinkIndex}] : gpio_output[PIN_{pinName}];\n")
outputLines.append(f" assign io_oeb[PIN_{pinName}] = blinkEnabled ? {IO_OUTPUT} : gpio_oe[PIN_{pinName}];\n")
else:
@@ -341,8 +341,8 @@
( 2, "Input", "SDI"),
( 3, "Input", "CSB"),
( 4, "Input", "SCK"),
- ( 5, "Input", "UART1_RX"),
- ( 6, "Output", "UART1_TX"),
+ ( 5, "Input", "GPIO/UART1_RX"),
+ ( 6, "Output", "GPIO/UART1_TX"),
( 7, "Input", "GPIO/IRQ"),
( 8, "Output", "FLASH_CSB"),
( 9, "Output", "FLASH_SCK"),
diff --git a/verilog/rtl/Peripherals/IOMultiplexer/IOMultiplexer_top.v b/verilog/rtl/Peripherals/IOMultiplexer/IOMultiplexer_top.v
index c3d4eda..48a5448 100644
--- a/verilog/rtl/Peripherals/IOMultiplexer/IOMultiplexer_top.v
+++ b/verilog/rtl/Peripherals/IOMultiplexer/IOMultiplexer_top.v
@@ -99,8 +99,8 @@
// IO02: SDI
// IO03: CSB
// IO04: SCK
- // IO05: UART1_RX
- // IO06: UART1_TX
+ // IO05: GPIO05 or UART1_RX
+ // IO06: GPIO06 or UART1_TX
// IO07: GPIO07 or IRQ
// IO08: FLASH_CSB
// IO09: FLASH_SCK
@@ -171,20 +171,20 @@
// IO05-PIN_UART1_RX: Input
localparam PIN_UART1_RX = 5;
- assign gpio_input[PIN_UART1_RX] = 1'b0;
- assign io_out[PIN_UART1_RX] = 1'b0;
- assign io_oeb[PIN_UART1_RX] = 1'b1;
- assign uart_rx[1] = io_in[PIN_UART1_RX];
+ assign gpio_input[PIN_UART1_RX] = uart_en[1] ? 1'b0 : (gpio_oe[PIN_UART1_RX] ? io_in[PIN_UART1_RX] : 1'b0);
+ assign io_out[PIN_UART1_RX] = uart_en[1] ? 1'b0 : gpio_output[PIN_UART1_RX];
+ assign io_oeb[PIN_UART1_RX] = uart_en[1] ? 1'b1 : gpio_oe[PIN_UART1_RX];
+ assign uart_rx[1] = uart_en[1] ? io_in[PIN_UART1_RX] : 1'b1;
// IO06-PIN_UART1_TX: Output
localparam PIN_UART1_TX = 6;
- assign gpio_input[PIN_UART1_TX] = 1'b0;
- assign io_out[PIN_UART1_TX] = uart_tx[1];
- assign io_oeb[PIN_UART1_TX] = 1'b0;
+ assign gpio_input[PIN_UART1_TX] = uart_en[1] ? 1'b0 : (gpio_oe[PIN_UART1_TX] ? io_in[PIN_UART1_TX] : 1'b0);
+ assign io_out[PIN_UART1_TX] = uart_en[1] ? uart_tx[1] : gpio_output[PIN_UART1_TX];
+ assign io_oeb[PIN_UART1_TX] = uart_en[1] ? 1'b0 : gpio_oe[PIN_UART1_TX];
// IO07-PIN_IRQ: Input
localparam PIN_IRQ = 7;
- assign gpio_input[PIN_IRQ] = irq_en ? 1'b0 : gpio_oe[PIN_IRQ] ? io_in[PIN_IRQ] : 1'b0;
+ assign gpio_input[PIN_IRQ] = irq_en ? 1'b0 : (gpio_oe[PIN_IRQ] ? io_in[PIN_IRQ] : 1'b0);
assign io_out[PIN_IRQ] = irq_en ? 1'b0 : gpio_output[PIN_IRQ];
assign io_oeb[PIN_IRQ] = irq_en ? 1'b1 : gpio_oe[PIN_IRQ];
assign irq_in = irq_en ? io_in[PIN_IRQ] : 1'b0;
@@ -217,112 +217,112 @@
// IO12-PIN_PWM0: Output
localparam PIN_PWM0 = 12;
- assign gpio_input[PIN_PWM0] = pwm_en[0] ? 1'b0 : gpio_oe[PIN_PWM0] ? io_in[PIN_PWM0] : 1'b0;
+ assign gpio_input[PIN_PWM0] = pwm_en[0] ? 1'b0 : (gpio_oe[PIN_PWM0] ? io_in[PIN_PWM0] : 1'b0);
assign io_out[PIN_PWM0] = pwm_en[0] ? pwm_out[0] : gpio_output[PIN_PWM0];
assign io_oeb[PIN_PWM0] = pwm_en[0] ? 1'b0 : gpio_oe[PIN_PWM0];
// IO13-PIN_PWM1: Output
localparam PIN_PWM1 = 13;
- assign gpio_input[PIN_PWM1] = pwm_en[1] ? 1'b0 : gpio_oe[PIN_PWM1] ? io_in[PIN_PWM1] : 1'b0;
+ assign gpio_input[PIN_PWM1] = pwm_en[1] ? 1'b0 : (gpio_oe[PIN_PWM1] ? io_in[PIN_PWM1] : 1'b0);
assign io_out[PIN_PWM1] = pwm_en[1] ? pwm_out[1] : gpio_output[PIN_PWM1];
assign io_oeb[PIN_PWM1] = pwm_en[1] ? 1'b0 : gpio_oe[PIN_PWM1];
// IO14-PIN_PWM2: Output
localparam PIN_PWM2 = 14;
- assign gpio_input[PIN_PWM2] = pwm_en[2] ? 1'b0 : gpio_oe[PIN_PWM2] ? io_in[PIN_PWM2] : 1'b0;
+ assign gpio_input[PIN_PWM2] = pwm_en[2] ? 1'b0 : (gpio_oe[PIN_PWM2] ? io_in[PIN_PWM2] : 1'b0);
assign io_out[PIN_PWM2] = pwm_en[2] ? pwm_out[2] : gpio_output[PIN_PWM2];
assign io_oeb[PIN_PWM2] = pwm_en[2] ? 1'b0 : gpio_oe[PIN_PWM2];
// IO15-PIN_PWM3: Output
localparam PIN_PWM3 = 15;
- assign gpio_input[PIN_PWM3] = pwm_en[3] ? 1'b0 : gpio_oe[PIN_PWM3] ? io_in[PIN_PWM3] : 1'b0;
+ assign gpio_input[PIN_PWM3] = pwm_en[3] ? 1'b0 : (gpio_oe[PIN_PWM3] ? io_in[PIN_PWM3] : 1'b0);
assign io_out[PIN_PWM3] = pwm_en[3] ? pwm_out[3] : gpio_output[PIN_PWM3];
assign io_oeb[PIN_PWM3] = pwm_en[3] ? 1'b0 : gpio_oe[PIN_PWM3];
// IO16-PIN_PWM4: Output
localparam PIN_PWM4 = 16;
- assign gpio_input[PIN_PWM4] = pwm_en[4] ? 1'b0 : gpio_oe[PIN_PWM4] ? io_in[PIN_PWM4] : 1'b0;
+ assign gpio_input[PIN_PWM4] = pwm_en[4] ? 1'b0 : (gpio_oe[PIN_PWM4] ? io_in[PIN_PWM4] : 1'b0);
assign io_out[PIN_PWM4] = pwm_en[4] ? pwm_out[4] : gpio_output[PIN_PWM4];
assign io_oeb[PIN_PWM4] = pwm_en[4] ? 1'b0 : gpio_oe[PIN_PWM4];
// IO17-PIN_PWM5: Output
localparam PIN_PWM5 = 17;
- assign gpio_input[PIN_PWM5] = pwm_en[5] ? 1'b0 : gpio_oe[PIN_PWM5] ? io_in[PIN_PWM5] : 1'b0;
+ assign gpio_input[PIN_PWM5] = pwm_en[5] ? 1'b0 : (gpio_oe[PIN_PWM5] ? io_in[PIN_PWM5] : 1'b0);
assign io_out[PIN_PWM5] = pwm_en[5] ? pwm_out[5] : gpio_output[PIN_PWM5];
assign io_oeb[PIN_PWM5] = pwm_en[5] ? 1'b0 : gpio_oe[PIN_PWM5];
// IO18-PIN_PWM6: Output
localparam PIN_PWM6 = 18;
- assign gpio_input[PIN_PWM6] = pwm_en[6] ? 1'b0 : gpio_oe[PIN_PWM6] ? io_in[PIN_PWM6] : 1'b0;
+ assign gpio_input[PIN_PWM6] = pwm_en[6] ? 1'b0 : (gpio_oe[PIN_PWM6] ? io_in[PIN_PWM6] : 1'b0);
assign io_out[PIN_PWM6] = pwm_en[6] ? pwm_out[6] : gpio_output[PIN_PWM6];
assign io_oeb[PIN_PWM6] = pwm_en[6] ? 1'b0 : gpio_oe[PIN_PWM6];
// IO19-PIN_UART2_RX: Input
localparam PIN_UART2_RX = 19;
- assign gpio_input[PIN_UART2_RX] = uart_en[2] ? 1'b0 : gpio_oe[PIN_UART2_RX] ? io_in[PIN_UART2_RX] : 1'b0;
+ assign gpio_input[PIN_UART2_RX] = uart_en[2] ? 1'b0 : (gpio_oe[PIN_UART2_RX] ? io_in[PIN_UART2_RX] : 1'b0);
assign io_out[PIN_UART2_RX] = uart_en[2] ? 1'b0 : gpio_output[PIN_UART2_RX];
assign io_oeb[PIN_UART2_RX] = uart_en[2] ? 1'b1 : gpio_oe[PIN_UART2_RX];
assign uart_rx[2] = uart_en[2] ? io_in[PIN_UART2_RX] : 1'b1;
// IO20-PIN_UART2_TX: Output
localparam PIN_UART2_TX = 20;
- assign gpio_input[PIN_UART2_TX] = uart_en[2] ? 1'b0 : gpio_oe[PIN_UART2_TX] ? io_in[PIN_UART2_TX] : 1'b0;
+ assign gpio_input[PIN_UART2_TX] = uart_en[2] ? 1'b0 : (gpio_oe[PIN_UART2_TX] ? io_in[PIN_UART2_TX] : 1'b0);
assign io_out[PIN_UART2_TX] = uart_en[2] ? uart_tx[2] : gpio_output[PIN_UART2_TX];
assign io_oeb[PIN_UART2_TX] = uart_en[2] ? 1'b0 : gpio_oe[PIN_UART2_TX];
// IO21-PIN_PWM7: Output
localparam PIN_PWM7 = 21;
- assign gpio_input[PIN_PWM7] = pwm_en[7] ? 1'b0 : gpio_oe[PIN_PWM7] ? io_in[PIN_PWM7] : 1'b0;
+ assign gpio_input[PIN_PWM7] = pwm_en[7] ? 1'b0 : (gpio_oe[PIN_PWM7] ? io_in[PIN_PWM7] : 1'b0);
assign io_out[PIN_PWM7] = pwm_en[7] ? pwm_out[7] : gpio_output[PIN_PWM7];
assign io_oeb[PIN_PWM7] = pwm_en[7] ? 1'b0 : gpio_oe[PIN_PWM7];
// IO22-PIN_SPI0_CLK: Output
localparam PIN_SPI0_CLK = 22;
- assign gpio_input[PIN_SPI0_CLK] = spi_en[0] ? 1'b0 : gpio_oe[PIN_SPI0_CLK] ? io_in[PIN_SPI0_CLK] : 1'b0;
+ assign gpio_input[PIN_SPI0_CLK] = spi_en[0] ? 1'b0 : (gpio_oe[PIN_SPI0_CLK] ? io_in[PIN_SPI0_CLK] : 1'b0);
assign io_out[PIN_SPI0_CLK] = spi_en[0] ? spi_clk[0] : gpio_output[PIN_SPI0_CLK];
assign io_oeb[PIN_SPI0_CLK] = spi_en[0] ? 1'b0 : gpio_oe[PIN_SPI0_CLK];
// IO23-PIN_SPI0_MOSI: Output
localparam PIN_SPI0_MOSI = 23;
- assign gpio_input[PIN_SPI0_MOSI] = spi_en[0] ? 1'b0 : gpio_oe[PIN_SPI0_MOSI] ? io_in[PIN_SPI0_MOSI] : 1'b0;
+ assign gpio_input[PIN_SPI0_MOSI] = spi_en[0] ? 1'b0 : (gpio_oe[PIN_SPI0_MOSI] ? io_in[PIN_SPI0_MOSI] : 1'b0);
assign io_out[PIN_SPI0_MOSI] = spi_en[0] ? spi_mosi[0] : gpio_output[PIN_SPI0_MOSI];
assign io_oeb[PIN_SPI0_MOSI] = spi_en[0] ? 1'b0 : gpio_oe[PIN_SPI0_MOSI];
// IO24-PIN_SPI0_MISO: Input
localparam PIN_SPI0_MISO = 24;
- assign gpio_input[PIN_SPI0_MISO] = spi_en[0] ? 1'b0 : gpio_oe[PIN_SPI0_MISO] ? io_in[PIN_SPI0_MISO] : 1'b0;
+ assign gpio_input[PIN_SPI0_MISO] = spi_en[0] ? 1'b0 : (gpio_oe[PIN_SPI0_MISO] ? io_in[PIN_SPI0_MISO] : 1'b0);
assign io_out[PIN_SPI0_MISO] = spi_en[0] ? 1'b0 : gpio_output[PIN_SPI0_MISO];
assign io_oeb[PIN_SPI0_MISO] = spi_en[0] ? 1'b1 : gpio_oe[PIN_SPI0_MISO];
assign spi_miso[0] = spi_en[0] ? io_in[PIN_SPI0_MISO] : 1'b0;
// IO25-PIN_SPI0_CS: Output
localparam PIN_SPI0_CS = 25;
- assign gpio_input[PIN_SPI0_CS] = spi_en[0] ? 1'b0 : gpio_oe[PIN_SPI0_CS] ? io_in[PIN_SPI0_CS] : 1'b0;
+ assign gpio_input[PIN_SPI0_CS] = spi_en[0] ? 1'b0 : (gpio_oe[PIN_SPI0_CS] ? io_in[PIN_SPI0_CS] : 1'b0);
assign io_out[PIN_SPI0_CS] = spi_en[0] ? spi_cs[0] : gpio_output[PIN_SPI0_CS];
assign io_oeb[PIN_SPI0_CS] = spi_en[0] ? 1'b0 : gpio_oe[PIN_SPI0_CS];
// IO26-PIN_UART3_RX: Input
localparam PIN_UART3_RX = 26;
- assign gpio_input[PIN_UART3_RX] = uart_en[3] ? 1'b0 : gpio_oe[PIN_UART3_RX] ? io_in[PIN_UART3_RX] : 1'b0;
+ assign gpio_input[PIN_UART3_RX] = uart_en[3] ? 1'b0 : (gpio_oe[PIN_UART3_RX] ? io_in[PIN_UART3_RX] : 1'b0);
assign io_out[PIN_UART3_RX] = uart_en[3] ? 1'b0 : gpio_output[PIN_UART3_RX];
assign io_oeb[PIN_UART3_RX] = uart_en[3] ? 1'b1 : gpio_oe[PIN_UART3_RX];
assign uart_rx[3] = uart_en[3] ? io_in[PIN_UART3_RX] : 1'b1;
// IO27-PIN_UART3_TX: Output
localparam PIN_UART3_TX = 27;
- assign gpio_input[PIN_UART3_TX] = uart_en[3] ? 1'b0 : gpio_oe[PIN_UART3_TX] ? io_in[PIN_UART3_TX] : 1'b0;
+ assign gpio_input[PIN_UART3_TX] = uart_en[3] ? 1'b0 : (gpio_oe[PIN_UART3_TX] ? io_in[PIN_UART3_TX] : 1'b0);
assign io_out[PIN_UART3_TX] = uart_en[3] ? uart_tx[3] : gpio_output[PIN_UART3_TX];
assign io_oeb[PIN_UART3_TX] = uart_en[3] ? 1'b0 : gpio_oe[PIN_UART3_TX];
// IO28-PIN_BLINK0: Output
localparam PIN_BLINK0 = 28;
- assign gpio_input[PIN_BLINK0] = blinkEnabled ? 1'b0 : gpio_oe[PIN_BLINK0] ? io_in[PIN_BLINK0] : 1'b0;
+ assign gpio_input[PIN_BLINK0] = blinkEnabled ? 1'b0 : (gpio_oe[PIN_BLINK0] ? io_in[PIN_BLINK0] : 1'b0);
assign io_out[PIN_BLINK0] = blinkEnabled ? blink[0] : gpio_output[PIN_BLINK0];
assign io_oeb[PIN_BLINK0] = blinkEnabled ? 1'b0 : gpio_oe[PIN_BLINK0];
// IO29-PIN_BLINK1: Output
localparam PIN_BLINK1 = 29;
- assign gpio_input[PIN_BLINK1] = blinkEnabled ? 1'b0 : gpio_oe[PIN_BLINK1] ? io_in[PIN_BLINK1] : 1'b0;
+ assign gpio_input[PIN_BLINK1] = blinkEnabled ? 1'b0 : (gpio_oe[PIN_BLINK1] ? io_in[PIN_BLINK1] : 1'b0);
assign io_out[PIN_BLINK1] = blinkEnabled ? blink[1] : gpio_output[PIN_BLINK1];
assign io_oeb[PIN_BLINK1] = blinkEnabled ? 1'b0 : gpio_oe[PIN_BLINK1];