FireStorm — FPGA Pinout
Bank 2 — 0 free
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | Ant64 |
|---|---|---|---|---|---|---|---|---|
| IOR11A | I/O | 2 | DQ23 | True_of_IOR11B | True | G19 | HR2_CS | |
| IOR11B | I/O | 2 | DQ23 | Comp_of_IOR11A | True | F20 | HR2_D0 | |
| IOR13A | I/O | 2 | DQ23 | True_of_IOR13B | True | H16 | HR2_D1 | |
| IOR13B | I/O | 2 | DQ23 | Comp_of_IOR13A | True | G16 | HR2_D2 | |
| IOR15A | I/O | 2 | DQ22 | True_of_IOR15B | True | C17 | PCM_ADCLRCLK2 | |
| IOR15B | I/O | 2 | DQ22 | Comp_of_IOR15A | True | B17 | PCM_DACDAT2 | |
| IOR17A | I/O | 2 | DQ22 | True_of_IOR17B | True | E16 | PCM_LRCLK2 | |
| IOR17B | I/O | 2 | DQ22 | Comp_of_IOR17A | True | D16 | PCM_BCLK2 | |
| IOR1A | I/O | 2 | none | none | H17 | SRAM_MODE | ||
| IOR20A | I/O | 2 | DQS22 | True_of_IOR20B | True | A17 | DP_AUX_P | |
| IOR20B | I/O | 2 | DQS22 | Comp_of_IOR20A | True | A18 | DP_AUX_N | |
| IOR22A | I/O | 2 | DQ22 | True_of_IOR22B | True | B19 | DP_HPD | |
| IOR22B | I/O | 2 | DQ22 | Comp_of_IOR22A | True | A19 | PCIE_NRST | |
| IOR24A/SGCLKT_1/RPLL0_T_FB0/RPLL1_T_FB0 | I/O | 2 | DQ22 | SGCLKT_1/RPLL0_T_FB0/RPLL1_T_FB0 | True_of_IOR24B | True | E17 | HR2_CLK |
| IOR24B/SGCLKC_1/RPLL0_C_FB0/RPLL1_C_FB0 | I/O | 2 | DQ22 | SGCLKC_1/RPLL0_C_FB0/RPLL1_C_FB0 | Comp_of_IOR24A | True | E18 | SRAM_OE |
| IOR26A/MGCLKT_1/RPLL0_T_FB1/RPLL1_T_FB1 | I/O | 2 | DQ22 | MGCLKT_1/RPLL0_T_FB1/RPLL1_T_FB1 | True_of_IOR26B | True | D18 | SRAM_BANK |
| IOR26B/MGCLKC_1/RPLL0_C_FB1/RPLL1_C_FB1 | I/O | 2 | DQ22 | MGCLKC_1/RPLL0_C_FB1/RPLL1_C_FB1 | Comp_of_IOR26A | True | C18 | SRAM_ADSP |
| IOR29A/SGCLKT_0/RPLL0_T_IN0/RPLL1_T_IN0 | I/O | 2 | DQ21 | SGCLKT_0/RPLL0_T_IN0/RPLL1_T_IN0 | True_of_IOR29B | True | E20 | SRAM_CLK |
| IOR29B/SGCLKC_0/RPLL0_C_IN0/RPLL1_C_IN0 | I/O | 2 | DQ21 | SGCLKC_0/RPLL0_C_IN0/RPLL1_C_IN0 | Comp_of_IOR29A | True | D20 | SRAM_CE |
| IOR2A | I/O | 2 | DQ23 | True_of_IOR2B | True | H14 | HR2_D3 | |
| IOR2B | I/O | 2 | DQ23 | Comp_of_IOR2A | True | H15 | HR2_D4 | |
| IOR31A/MGCLKT_0/RPLL0_T_IN1/RPLL1_T_IN1 | I/O | 2 | DQ21 | MGCLKT_0/RPLL0_T_IN1/RPLL1_T_IN1 | True_of_IOR31B | True | D19 | SRAM_ADSC |
| IOR31B/MGCLKC_0/RPLL0_C_IN1/RPLL1_C_IN1 | I/O | 2 | DQ21 | MGCLKC_0/RPLL0_C_IN1/RPLL1_C_IN1 | Comp_of_IOR31A | True | C19 | SRAM_ADV |
| IOR33A | I/O | 2 | DQ21 | True_of_IOR33B | True | C21 | SRAM_BWa | |
| IOR33B | I/O | 2 | DQ21 | Comp_of_IOR33A | True | B21 | SRAM_BWb | |
| IOR35A | I/O | 2 | DQS21 | True_of_IOR35B | True | B20 | SRAM_BWc | |
| IOR35B | I/O | 2 | DQS21 | Comp_of_IOR35A | True | A20 | SRAM_BWd | |
| IOR38A | I/O | 2 | DQ21 | True_of_IOR38B | True | B22 | SRAM_BWE | |
| IOR38B | I/O | 2 | DQ21 | Comp_of_IOR38A | True | A22 | SRAM_A0 | |
| IOR40A | I/O | 2 | DQ21 | True_of_IOR40B | True | E21 | SRAM_A1 | |
| IOR40B | I/O | 2 | DQ21 | Comp_of_IOR40A | True | D21 | SRAM_A2 | |
| IOR42A | I/O | 2 | DQ20 | True_of_IOR42B | True | C22 | SRAM_A3 | |
| IOR42B | I/O | 2 | DQ20 | Comp_of_IOR42A | True | C23 | SRAM_A4 | |
| IOR44A | I/O | 2 | DQS20 | True_of_IOR44B | True | A23 | SRAM_A5 | |
| IOR44B | I/O | 2 | DQS20 | Comp_of_IOR44A | True | A24 | SRAM_A6 | |
| IOR47A | I/O | 2 | DQ20 | True_of_IOR47B | True | B25 | SRAM_A7 | |
| IOR47B | I/O | 2 | DQ20 | Comp_of_IOR47A | True | A25 | SRAM_A8 | |
| IOR49A | I/O | 2 | DQ20 | True_of_IOR49B | True | C26 | SRAM_A9 | |
| IOR49B | I/O | 2 | DQ20 | Comp_of_IOR49A | True | B26 | SRAM_A10 | |
| IOR4A | I/O | 2 | DQ23 | True_of_IOR4B | True | G17 | HR2_D5 | |
| IOR4B | I/O | 2 | DQ23 | Comp_of_IOR4A | True | F17 | HR2_D6 | |
| IOR51A | I/O | 2 | DQ20 | True_of_IOR51B | True | C24 | SRAM_A11 | |
| IOR51B | I/O | 2 | DQ20 | Comp_of_IOR51A | True | B24 | SRAM_A12 | |
| IOR53A | I/O | 2 | DQ20 | True_of_IOR53B | True | D23 | SRAM_A13 | |
| IOR53B | I/O | 2 | DQ20 | Comp_of_IOR53A | True | D24 | SRAM_A14 | |
| IOR55A | I/O | 2 | none | none | E22 | SRAM_A15 | ||
| IOR6A | I/O | 2 | DQ23 | True_of_IOR6B | True | G15 | HR2_D7 | |
| IOR6B | I/O | 2 | DQ23 | Comp_of_IOR6A | True | F15 | PCM_ADCDAT2 | |
| IOR8A | I/O | 2 | DQS23 | True_of_IOR8B | True | F18 | HR2_RWDS | |
| IOR8B | I/O | 2 | DQS23 | Comp_of_IOR8A | True | F19 | SRAM_A16 |
Bank 3 — 0 free
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | |
|---|---|---|---|---|---|---|---|---|
| IOR101A | I/O | 3 | DQ16 | True_of_IOR101B | True | M14 | I2S_BCLK | |
| IOR101B | I/O | 3 | DQ16 | Comp_of_IOR101A | True | L14 | I2S_LRCLK | |
| IOR103A | I/O | 3 | DQS16 | True_of_IOR103B | True | K16 | GPIO15 | |
| IOR103B | I/O | 3 | DQS16 | Comp_of_IOR103A | True | K17 | SRAM_A17 | |
| IOR105A | I/O | 3 | DQ16 | True_of_IOR105B | True | J14 | I2S_SDATA | |
| IOR105B | I/O | 3 | DQ16 | Comp_of_IOR105A | True | J15 | I2S_BCLK2 | |
| IOR107A/ADCINCK1 | I/O | 3 | DQ16 | ADCINCK1 | True_of_IOR107B | True | K15 | STICKY_UART_TX |
| IOR107B | I/O | 3 | DQ16 | Comp_of_IOR107A | True | J16 | GPIO16 | |
| IOR109A | I/O | 3 | none | none | K18 | SRAM_A18 | ||
| IOR56A | I/O | 3 | DQ19 | True_of_IOR56B | True | J25 | SRAM_Da0 | |
| IOR56B | I/O | 3 | DQ19 | Comp_of_IOR56A | True | J26 | SRAM_Da1 | |
| IOR58A | I/O | 3 | DQS19 | True_of_IOR58B | True | E26 | SRAM_Da2 | |
| IOR58B | I/O | 3 | DQS19 | Comp_of_IOR58A | True | D26 | SRAM_Da3 | |
| IOR60A | I/O | 3 | DQ19 | True_of_IOR60B | True | G25 | SRAM_Da4 | |
| IOR60B | I/O | 3 | DQ19 | Comp_of_IOR60A | True | F25 | SRAM_Da5 | |
| IOR62A | I/O | 3 | DQ19 | True_of_IOR62B | True | H26 | SRAM_Da6 | |
| IOR62B | I/O | 3 | DQ19 | Comp_of_IOR62A | True | G26 | SRAM_Da7 | |
| IOR65A | I/O | 3 | DQ19 | True_of_IOR65B | True | E25 | SRAM_Da8 | |
| IOR65B | I/O | 3 | DQ19 | Comp_of_IOR65A | True | D25 | SRAM_Db0 | |
| IOR67A | I/O | 3 | DQ19 | True_of_IOR67B | True | G24 | SRAM_Db1 | |
| IOR67B | I/O | 3 | DQ19 | Comp_of_IOR67A | True | F24 | SRAM_Db2 | |
| IOR69A | I/O | 3 | DQ18 | True_of_IOR69B | True | K22 | SRAM_Db3 | |
| IOR69B | I/O | 3 | DQ18 | Comp_of_IOR69A | True | K23 | SRAM_Db4 | |
| IOR71A | I/O | 3 | DQ18 | True_of_IOR71B | True | F23 | SRAM_Db5 | |
| IOR71B | I/O | 3 | DQ18 | Comp_of_IOR71A | True | E23 | SRAM_Db6 | |
| IOR73A | I/O | 3 | none | none | L19 | SRAM_Db7 | ||
| IOR74A | I/O | 3 | DQ18 | True_of_IOR74B | True | J24 | SRAM_Db8 | |
| IOR74B | I/O | 3 | DQ18 | Comp_of_IOR74A | True | H24 | SRAM_Dc0 | |
| IOR76A | I/O | 3 | DQS18 | True_of_IOR76B | True | G22 | SRAM_Dc1 | |
| IOR76B | I/O | 3 | DQS18 | Comp_of_IOR76A | True | F22 | SRAM_Dc2 | |
| IOR78A/SGCLKT_3/RPLL2_T_FB0/RPLL3_T_FB0 | I/O | 3 | DQ18 | SGCLKT_3/RPLL2_T_FB0/RPLL3_T_FB0 | True_of_IOR78B | True | J23 | SRAM_Dc3 |
| IOR78B/SGCLKC_3/RPLL2_C_FB0/RPLL3_C_FB0 | I/O | 3 | DQ18 | SGCLKC_3/RPLL2_C_FB0/RPLL3_C_FB0 | Comp_of_IOR78A | True | H23 | SRAM_Dc4 |
| IOR80A/MGCLKT_3/RPLL2_T_FB1/RPLL3_T_FB1 | I/O | 3 | DQ18 | MGCLKT_3/RPLL2_T_FB1/RPLL3_T_FB1 | True_of_IOR80B | True | H21 | SRAM_Dc5 |
| IOR80B/MGCLKC_3/RPLL2_C_FB1/RPLL3_C_FB1 | I/O | 3 | DQ18 | MGCLKC_3/RPLL2_C_FB1/RPLL3_C_FB1 | Comp_of_IOR80A | True | H22 | SRAM_Dc6 |
| IOR83A/MGCLKT_2/RPLL2_T_IN1/RPLL3_T_IN1 | I/O | 3 | DQ17 | MGCLKT_2/RPLL2_T_IN1/RPLL3_T_IN1 | True_of_IOR83B | True | K21 | SRAM_Dc7 |
| IOR83B/MGCLKC_2/RPLL2_C_IN1/RPLL3_C_IN1 | I/O | 3 | DQ17 | MGCLKC_2/RPLL2_C_IN1/RPLL3_C_IN1 | Comp_of_IOR83A | True | J21 | SRAM_Dc8 |
| IOR85A/SGCLKT_2/RPLL2_T_IN0/RPLL3_T_IN0 | I/O | 3 | DQ17 | SGCLKT_2/RPLL2_T_IN0/RPLL3_T_IN0 | True_of_IOR85B | True | G20 | I2S_MCLK |
| IOR85B/SGCLKC_2/RPLL2_C_IN0/RPLL3_C_IN0 | I/O | 3 | DQ17 | SGCLKC_2/RPLL2_C_IN0/RPLL3_C_IN0 | Comp_of_IOR85A | True | G21 | SRAM_Dd0 |
| IOR87A | I/O | 3 | DQ17 | True_of_IOR87B | True | J18 | SRAM_Dd1 | |
| IOR87B | I/O | 3 | DQ17 | Comp_of_IOR87A | True | H18 | SRAM_Dd2 | |
| IOR89A | I/O | 3 | DQS17 | True_of_IOR89B | True | K20 | SRAM_Dd3 | |
| IOR89B | I/O | 3 | DQS17 | Comp_of_IOR89A | True | J20 | SRAM_Dd4 | |
| IOR92A | I/O | 3 | DQ17 | True_of_IOR92B | True | L17 | SRAM_Dd5 | |
| IOR92B | I/O | 3 | DQ17 | Comp_of_IOR92A | True | L18 | SRAM_Dd6 | |
| IOR94A | I/O | 3 | DQ17 | True_of_IOR94B | True | J19 | SRAM_Dd7 | |
| IOR94B | I/O | 3 | DQ17 | Comp_of_IOR94A | True | H19 | SRAM_Dd8 | |
| IOR96A | I/O | 3 | DQ16 | True_of_IOR96B | True | M16 | GPIO17 | |
| IOR96B | I/O | 3 | DQ16 | Comp_of_IOR96A | True | M17 | GPIO18 | |
| IOR98A | I/O | 3 | DQ16 | True_of_IOR98B | True | M15 | GPIO19 | |
| IOR98B | I/O | 3 | DQ16 | Comp_of_IOR98A | True | L15 | GPIO20 |
Bank 4 — 0 free
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | |
|---|---|---|---|---|---|---|---|---|
| IOB102A/MCS_N | I/O | 4 | DQ12 | MCS_N | True_of_IOB102B | True | P18 | FLASH_CS |
| IOB102B/D08/SO | I/O | 4 | DQ12 | D08/SO | Comp_of_IOB102A | True | N18 | PULSE_OPI_D1 |
| IOB104A/PUDC_B | I/O | 4 | DQS12 | PUDC_B | True_of_IOB104B | True | P15 | HR1_RWDS |
| IOB104B/EMCCLK | I/O | 4 | DQS12 | EMCCLK | Comp_of_IOB104A | True | P16 | HR1_DQ5 |
| IOB106A/CSI_B | I/O | 4 | DQ13 | CSI_B | True_of_IOB106B | True | P19 | HDMI0_D1P |
| IOB106B/D31 | I/O | 4 | DQ13 | D31 | Comp_of_IOB106A | True | N19 | HDMI0_D1N |
| IOB108A/D30 | I/O | 4 | DQ13 | D30 | True_of_IOB108B | True | P23 | HDMI0_D2P |
| IOB108B/D29 | I/O | 4 | DQ13 | D29 | Comp_of_IOB108A | True | P24 | HDMI0_D2N |
| IOB110A/RDWR | I/O | 4 | DQS13 | RDWR | True_of_IOB110B | True | N23 | HDMI1_D0P |
| IOB110B/DOUT_CSO_B | I/O | 4 | DQS13 | DOUT_CSO_B | Comp_of_IOB110A | True | N24 | HDMI1_D0N |
| IOB112A/D28 | I/O | 4 | DQ13 | D28 | True_of_IOB112B | True | R20 | HDMI1_D1P |
| IOB112B/D27 | I/O | 4 | DQ13 | D27 | Comp_of_IOB112A | True | R21 | HDMI1_D1N |
| IOB114A/SGCLKT_4/BPLL2_T_FB1/BPLL3_T_FB1 | I/O | 4 | DQ13 | SGCLKT_4/BPLL2_T_FB1/BPLL3_T_FB1 | True_of_IOB114B | True | P20 | VGA_CKP |
| IOB114B/SGCLKC_4/BPLL2_C_FB1/BPLL3_C_FB1 | I/O | 4 | DQ13 | SGCLKC_4/BPLL2_C_FB1/BPLL3_C_FB1 | Comp_of_IOB114A | True | P21 | VGA_CKN |
| IOB116A/MGCLKT_4/BPLL2_T_FB0/BPLL3_T_FB0 | I/O | 4 | DQ13 | MGCLKT_4/BPLL2_T_FB0/BPLL3_T_FB0 | True_of_IOB116B | True | N21 | PULSE_OPI_D5 |
| IOB116B/MGCLKC_4/BPLL2_C_FB0/BPLL3_C_FB0 | I/O | 4 | DQ13 | MGCLKC_4/BPLL2_C_FB0/BPLL3_C_FB0 | Comp_of_IOB116A | True | N22 | HR1_DQ6 |
| IOB120A/SGCLKT_5/BPLL2_T_IN0/BPLL3_T_IN0 | I/O | 4 | DQ14 | SGCLKT_5/BPLL2_T_IN0/BPLL3_T_IN0 | True_of_IOB120B | True | L22 | HDMI0_CKP |
| IOB120B/SGCLKC_5/BPLL2_C_IN0/BPLL3_C_IN0 | I/O | 4 | DQ14 | SGCLKC_5/BPLL2_C_IN0/BPLL3_C_IN0 | Comp_of_IOB120A | True | L23 | HDMI0_CKN |
| IOB122A/MGCLKT_5/BPLL2_T_IN1/BPLL3_T_IN1 | I/O | 4 | DQ14 | MGCLKT_5/BPLL2_T_IN1/BPLL3_T_IN1 | True_of_IOB122B | True | M21 | HDMI1_CKP |
| IOB122B/MGCLKC_5/BPLL2_C_IN1/BPLL3_C_IN1 | I/O | 4 | DQ14 | MGCLKC_5/BPLL2_C_IN1/BPLL3_C_IN1 | Comp_of_IOB122A | True | M22 | HDMI1_CKN |
| IOB124A/D09 | I/O | 4 | DQ14 | D09 | True_of_IOB124B | True | K25 | OPTICAL_OUT |
| *IOB124B/D10 | I/O | 4 | DQ14 | D10 | Comp_of_IOB124A | True | K26 | GPIO21 |
| IOB126A/D11 | I/O | 4 | DQ14 | D11 | True_of_IOB126B | True | M20 | PULSE_OPI_INT |
| IOB126B/D12 | I/O | 4 | DQ14 | D12 | Comp_of_IOB126A | True | L20 | PULSE_OPI_D7 |
| IOB129A/D14 | I/O | 4 | DQ14 | D14 | True_of_IOB129B | True | M24 | HDMI0_D0P |
| IOB129B/D15 | I/O | 4 | DQ14 | D15 | Comp_of_IOB129A | True | M25 | HDMI0_D0N |
| IOB131A/SSPI_CS_N | I/O | 4 | DQS14 | SSPI_CS_N | True_of_IOB131B | True | L24 | PULSE_OPI_CS |
| IOB131B/D13 | I/O | 4 | DQS14 | D13 | Comp_of_IOB131A | True | L25 | HR1_DQ7 |
| IOB133A/D26 | I/O | 4 | DQ15 | D26 | True_of_IOB133B | True | R25 | HDMI1_D2P |
| IOB133B/D25 | I/O | 4 | DQ15 | D25 | Comp_of_IOB133A | True | P25 | HDMI1_D2N |
| IOB135A/CLKHOLD_N | I/O | 4 | DQS15 | CLKHOLD_N | True_of_IOB135B | True | T24 | PULSE_OPI_D3 |
| IOB135B/D22 | I/O | 4 | DQS15 | D22 | Comp_of_IOB135A | True | T25 | PULSE_OPI_DQS |
| IOB138A/D24 | I/O | 4 | DQ15 | D24 | True_of_IOB138B | True | N26 | VGA_D0P |
| IOB138B/D23 | I/O | 4 | DQ15 | D23 | Comp_of_IOB138A | True | M26 | VGA_D0N |
| IOB140A/D21 | I/O | 4 | DQ15 | D21 | True_of_IOB140B | True | R26 | VGA_D1P |
| IOB140B/D20 | I/O | 4 | DQ15 | D20 | Comp_of_IOB140A | True | P26 | VGA_D1N |
| IOB142A/D19 | I/O | 4 | DQ15 | D19 | True_of_IOB142B | True | T22 | VGA_D2P |
| IOB142B/D18 | I/O | 4 | DQ15 | D18 | Comp_of_IOB142A | True | R22 | VGA_D2N |
| IOB144A/D17 | I/O | 4 | DQ15 | D17 | True_of_IOB144B | True | T23 | PULSE_OPI_D4 |
| IOB144B/D16 | I/O | 4 | DQ15 | D16 | Comp_of_IOB144A | True | R23 | HR1_CS |
| IOB146A | I/O | 4 | none | none | R18 | PULSE_OPI_D6 | ||
| *IOB92A | I/O | 4 | none | none | M19 | GPIO22 | ||
| IOB93A/D00/MOSI | I/O | 4 | DQ12 | D00/MOSI | True_of_IOB93B | True | R14 | FLASH+HR1_IO0 |
| IOB93B/D01/DIN | I/O | 4 | DQ12 | D01/DIN | Comp_of_IOB93A | True | R15 | FLASH+HR1_IO1 |
| IOB95A/D02 | I/O | 4 | DQ12 | D02 | True_of_IOB95B | True | P14 | FLASH+HR1_IO2 |
| IOB95B/D03 | I/O | 4 | DQ12 | D03 | Comp_of_IOB95A | True | N14 | FLASH+HR1_IO3 |
| IOB97A/D04 | I/O | 4 | DQ12 | D04 | True_of_IOB97B | True | N16 | HR1_DQ4 |
| IOB97B/D05/SI | I/O | 4 | DQ12 | D05/SI | Comp_of_IOB97A | True | N17 | PULSE_OPI_D0 |
| IOB99A/D06/SSPI_CLK | I/O | 4 | DQ12 | D06/SSPI_CLK | True_of_IOB99B | True | R16 | PULSE_OPI_CK |
| IOB99B/D07/SSPI_WPN | I/O | 4 | DQ12 | D07/SSPI_WPN | Comp_of_IOB99A | True | R17 | PULSE_OPI_D2 |
Bank 5 — 0 free
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | |
|---|---|---|---|---|---|---|---|---|
| IOB37A | I/O | 5 | none | none | U17 | GPIO8 | ||
| IOB38A | I/O | 5 | DQ8 | True_of_IOB38B | True | V16 | DDR_ADDR0 | |
| IOB38B | I/O | 5 | DQ8 | Comp_of_IOB38A | True | V17 | DDR_ADDR1 | |
| IOB40A | I/O | 5 | DQ8 | True_of_IOB40B | True | T14 | DDR_ADDR2 | |
| IOB40B | I/O | 5 | DQ8 | Comp_of_IOB40A | True | T15 | DDR_ADDR3 | |
| IOB42A | I/O | 5 | DQS8 | True_of_IOB42B | True | T17 | GPIO9 | |
| IOB42B | I/O | 5 | DQS8 | Comp_of_IOB42A | True | T18 | GPIO10 | |
| IOB44A | I/O | 5 | DQ8 | True_of_IOB44B | True | U15 | DDR_ADDR4 | |
| IOB44B | I/O | 5 | DQ8 | Comp_of_IOB44A | True | U16 | DDR_ADDR5 | |
| IOB47A | I/O | 5 | DQ8 | True_of_IOB47B | True | U14 | DDR_ADDR6 | |
| IOB47B | I/O | 5 | DQ8 | Comp_of_IOB47A | True | V14 | DDR_ADDR7 | |
| IOB49A | I/O | 5 | DQ8 | True_of_IOB49B | True | V18 | DDR_ADDR8 | |
| IOB49B | I/O | 5 | DQ8 | Comp_of_IOB49A | True | W18 | DDR_ADDR9 | |
| IOB51A | I/O | 5 | DQ9 | True_of_IOB51B | True | AA24 | DDR_ADDR10 | |
| IOB51B | I/O | 5 | DQ9 | Comp_of_IOB51A | True | AB25 | DDR_ADDR11 | |
| IOB53A | I/O | 5 | DQ9 | True_of_IOB53B | True | AA22 | DDR_ADDR12 | |
| IOB53B | I/O | 5 | DQ9 | Comp_of_IOB53A | True | AA23 | DDR_ADDR13 | |
| IOB56A | I/O | 5 | DQS9 | True_of_IOB56B | True | AB24 | GPIO11 | |
| IOB56B | I/O | 5 | DQS9 | Comp_of_IOB56A | True | AC24 | GPIO12 | |
| IOB58A | I/O | 5 | DQ9 | True_of_IOB58B | True | V23 | DDR_ADDR14 | |
| IOB58B | I/O | 5 | DQ9 | Comp_of_IOB58A | True | W23 | DDR_ADDR15 | |
| IOB60A/SGCLKT_6/BPLL0_T_IN0/BPLL1_T_IN0 | I/O | 5 | DQ9 | SGCLKT_6/BPLL0_T_IN0/BPLL1_T_IN0 | True_of_IOB60B | True | Y22 | DDR_CLK |
| IOB60B/SGCLKC_6/BPLL0_C_IN0/BPLL1_C_IN0 | I/O | 5 | DQ9 | SGCLKC_6/BPLL0_C_IN0/BPLL1_C_IN0 | Comp_of_IOB60A | True | Y23 | DDR_CLK_N |
| IOB62A/MGCLKT_6/BPLL0_T_IN1/BPLL1_T_IN1 | I/O | 5 | DQ9 | MGCLKT_6/BPLL0_T_IN1/BPLL1_T_IN1 | True_of_IOB62B | True | U22 | DDR_BA0 |
| IOB62B/MGCLKC_6/BPLL0_C_IN1/BPLL1_C_IN1 | I/O | 5 | DQ9 | MGCLKC_6/BPLL0_C_IN1/BPLL1_C_IN1 | Comp_of_IOB62A | True | V22 | DDR_BA1 |
| IOB66A/MGCLKT_7/BPLL0_T_FB0/BPLL1_T_FB0 | I/O | 5 | DQ10 | MGCLKT_7/BPLL0_T_FB0/BPLL1_T_FB0 | True_of_IOB66B | True | U21 | DDR_BA2 |
| IOB66B/MGCLKC_7/BPLL0_C_FB0/BPLL1_C_FB0 | I/O | 5 | DQ10 | MGCLKC_7/BPLL0_C_FB0/BPLL1_C_FB0 | Comp_of_IOB66A | True | V21 | DDR_RAS_N |
| IOB68A/SGCLKT_7/BPLL0_T_FB1/BPLL1_T_FB1 | I/O | 5 | DQ10 | SGCLKT_7/BPLL0_T_FB1/BPLL1_T_FB1 | True_of_IOB68B | True | W21 | DDR_CAS_N |
| IOB68B/SGCLKC_7/BPLL0_C_FB1/BPLL1_C_FB1 | I/O | 5 | DQ10 | SGCLKC_7/BPLL0_C_FB1/BPLL1_C_FB1 | Comp_of_IOB68A | True | Y21 | DDR_WE_N |
| IOB70A | I/O | 5 | DQS10 | True_of_IOB70B | True | T20 | GPIO13 | |
| IOB70B | I/O | 5 | DQS10 | Comp_of_IOB70A | True | U20 | GPIO14 | |
| IOB72A | I/O | 5 | DQ10 | True_of_IOB72B | True | W20 | DDR_CS0_N | |
| IOB72B | I/O | 5 | DQ10 | Comp_of_IOB72A | True | Y20 | DDR_CS1_N | |
| IOB74A | I/O | 5 | DQ10 | True_of_IOB74B | True | V19 | DDR_ODT0 | |
| IOB74B | I/O | 5 | DQ10 | Comp_of_IOB74A | True | W19 | DDR_ODT1 | |
| IOB76A | I/O | 5 | DQ10 | True_of_IOB76B | True | T19 | DDR_CKE0 | |
| IOB76B | I/O | 5 | DQ10 | Comp_of_IOB76A | True | U19 | DDR_CKE1 | |
| IOB78A | I/O | 5 | DQ11 | True_of_IOB78B | True | U25 | DDR_RESET_N | |
| IOB78B | I/O | 5 | DQ11 | Comp_of_IOB78A | True | U26 | DDR_DQ64 | |
| IOB80A | I/O | 5 | DQ11 | True_of_IOB80B | True | V26 | DDR_DQ65 | |
| IOB80B | I/O | 5 | DQ11 | Comp_of_IOB80A | True | W26 | DDR_DQ66 | |
| IOB83A | I/O | 5 | DQ11 | True_of_IOB83B | True | W25 | DDR_DQ67 | |
| IOB83B | I/O | 5 | DQ11 | Comp_of_IOB83A | True | Y26 | DDR_DQ68 | |
| IOB85A | I/O | 5 | DQ11 | True_of_IOB85B | True | V24 | DDR_DQ69 | |
| IOB85B | I/O | 5 | DQ11 | Comp_of_IOB85A | True | W24 | DDR_DQ70 | |
| IOB87A | I/O | 5 | DQ11 | True_of_IOB87B | True | Y25 | DDR_DQ71 | |
| IOB87B | I/O | 5 | DQ11 | Comp_of_IOB87A | True | AA25 | DDR_DQM8 | |
| IOB89A | I/O | 5 | DQS11 | True_of_IOB89B | True | AB26 | DDR_DQS8 | |
| IOB89B | I/O | 5 | DQS11 | Comp_of_IOB89A | True | AC26 | DDR_DQS_N8 | |
| IOB91A | I/O | 5 | none | none | U24 | GPIO6 |
Bank 6 — 0 free
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | |
|---|---|---|---|---|---|---|---|---|
| IOL101A | I/O | 6 | DQ7 | True_of_IOL101B | True | R8 | DDR_DQ48 | |
| IOL101B | I/O | 6 | DQ7 | Comp_of_IOL101A | True | P8 | DDR_DQ49 | |
| IOL103A | I/O | 6 | DQ7 | True_of_IOL103B | True | R7 | DDR_DQ50 | |
| IOL103B | I/O | 6 | DQ7 | Comp_of_IOL103A | True | R6 | DDR_DQ51 | |
| IOL105A | I/O | 6 | DQ7 | True_of_IOL105B | True | T8 | DDR_DQ52 | |
| IOL105B | I/O | 6 | DQ7 | Comp_of_IOL105A | True | T7 | DDR_DQ53 | |
| IOL107A | I/O | 6 | DQ7 | True_of_IOL107B | True | P6 | DDR_DQ54 | |
| IOL107B | I/O | 6 | DQ7 | Comp_of_IOL107A | True | P5 | DDR_DQ55 | |
| IOL109A | I/O | 6 | none | none | U4 | GPIO0 | ||
| IOL56A | I/O | 6 | DQ4 | True_of_IOL56B | True | K3 | DDR_DQ40 | |
| IOL56B | I/O | 6 | DQ4 | Comp_of_IOL56A | True | J3 | DDR_DQ41 | |
| IOL58A | I/O | 6 | DQ4 | True_of_IOL58B | True | M7 | DDR_DQ42 | |
| IOL58B | I/O | 6 | DQ4 | Comp_of_IOL58A | True | L7 | DDR_DQ43 | |
| IOL60A | I/O | 6 | DQ4 | True_of_IOL60B | True | M6 | DDR_DQ44 | |
| IOL60B | I/O | 6 | DQ4 | Comp_of_IOL60A | True | M5 | DDR_DQ45 | |
| IOL62A | I/O | 6 | DQ4 | True_of_IOL62B | True | L5 | DDR_DQ46 | |
| IOL62B | I/O | 6 | DQ4 | Comp_of_IOL62A | True | K5 | DDR_DQ47 | |
| IOL65A | I/O | 6 | DQS4 | True_of_IOL65B | True | M4 | DDR_DQS5 | |
| IOL65B | I/O | 6 | DQS4 | Comp_of_IOL65A | True | L4 | DDR_DQS_N5 | |
| IOL67A | I/O | 6 | DQ4 | True_of_IOL67B | True | N7 | DDR_DQM5 | |
| IOL67B | I/O | 6 | DQ4 | Comp_of_IOL67A | True | N6 | GPIO1 | |
| IOL69A | I/O | 6 | DQS5 | True_of_IOL69B | True | N1 | DDR_DQS4 | |
| IOL69B | I/O | 6 | DQS5 | Comp_of_IOL69A | True | M1 | DDR_DQS_N4 | |
| IOL71A | I/O | 6 | DQ5 | True_of_IOL71B | True | K1 | DDR_DQ32 | |
| IOL71B | I/O | 6 | DQ5 | Comp_of_IOL71A | True | J1 | DDR_DQ33 | |
| IOL73A | I/O | 6 | none | none | N8 | GPIO2 | ||
| IOL74A | I/O | 6 | DQ5 | True_of_IOL74B | True | L3 | DDR_DQ34 | |
| IOL74B | I/O | 6 | DQ5 | Comp_of_IOL74A | True | K2 | DDR_DQ35 | |
| IOL76A | I/O | 6 | DQ5 | True_of_IOL76B | True | H2 | DDR_DQ36 | |
| IOL76B | I/O | 6 | DQ5 | Comp_of_IOL76A | True | H1 | DDR_DQ37 | |
| IOL78A/SGCLKT_8/LPLL2_T_IN0/LPLL3_T_IN0 | I/O | 6 | DQ5 | SGCLKT_8/LPLL2_T_IN0/LPLL3_T_IN0 | True_of_IOL78B | True | M2 | DDR_DQ38 |
| IOL78B/SGCLKC_8/LPLL2_C_IN0/LPLL3_C_IN0 | I/O | 6 | DQ5 | SGCLKC_8/LPLL2_C_IN0/LPLL3_C_IN0 | Comp_of_IOL78A | True | L2 | DDR_DQ39 |
| IOL80A/MGCLKT_8/LPLL2_T_IN1/LPLL3_T_IN1 | I/O | 6 | DQ5 | MGCLKT_8/LPLL2_T_IN1/LPLL3_T_IN1 | True_of_IOL80B | True | N3 | DDR_DQM4 |
| IOL80B/MGCLKC_8/LPLL2_C_IN1/LPLL3_C_IN1 | I/O | 6 | DQ5 | MGCLKC_8/LPLL2_C_IN1/LPLL3_C_IN1 | Comp_of_IOL80A | True | N2 | GPIO3 |
| IOL83A/MGCLKT_9/LPLL2_T_FB1/LPLL3_T_FB1 | I/O | 6 | DQ6 | MGCLKT_9/LPLL2_T_FB1/LPLL3_T_FB1 | True_of_IOL83B | True | R3 | DDR_DQ56 |
| IOL83B/MGCLKC_9/LPLL2_C_FB1/LPLL3_C_FB1 | I/O | 6 | DQ6 | MGCLKC_9/LPLL2_C_FB1/LPLL3_C_FB1 | Comp_of_IOL83A | True | P3 | DDR_DQ57 |
| IOL85A/SGCLKT_9/LPLL2_T_FB0/LPLL3_T_FB0 | I/O | 6 | DQ6 | SGCLKT_9/LPLL2_T_FB0/LPLL3_T_FB0 | True_of_IOL85B | True | P4 | DDR_DQ58 |
| IOL85B/SGCLKC_9/LPLL2_C_FB0/LPLL3_C_FB0 | I/O | 6 | DQ6 | SGCLKC_9/LPLL2_C_FB0/LPLL3_C_FB0 | Comp_of_IOL85A | True | N4 | DDR_DQ59 |
| IOL87A | I/O | 6 | DQ6 | True_of_IOL87B | True | T4 | DDR_DQ60 | |
| IOL87B | I/O | 6 | DQ6 | Comp_of_IOL87A | True | T3 | DDR_DQ61 | |
| IOL89A | I/O | 6 | DQ6 | True_of_IOL89B | True | T2 | DDR_DQ62 | |
| IOL89B | I/O | 6 | DQ6 | Comp_of_IOL89A | True | R2 | DDR_DQ63 | |
| IOL92A | I/O | 6 | DQ6 | True_of_IOL92B | True | U2 | DDR_DQM7 | |
| IOL92B | I/O | 6 | DQ6 | Comp_of_IOL92A | True | U1 | GPIO4 | |
| IOL94A | I/O | 6 | DQS6 | True_of_IOL94B | True | R1 | DDR_DQS7 | |
| IOL94B | I/O | 6 | DQS6 | Comp_of_IOL94A | True | P1 | DDR_DQS_N7 | |
| IOL96A | I/O | 6 | DQS7 | True_of_IOL96B | True | U6 | DDR_DQS6 | |
| IOL96B | I/O | 6 | DQS7 | Comp_of_IOL96A | True | U5 | DDR_DQS_N6 | |
| IOL98A | I/O | 6 | DQ7 | True_of_IOL98B | True | T5 | DDR_DQM6 | |
| IOL98B | I/O | 6 | DQ7 | Comp_of_IOL98A | True | R5 | GPIO5 |
Bank 7 — 0 free
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | |
|---|---|---|---|---|---|---|---|---|
| IOL8A | I/O | 7 | DQ0 | True_of_IOL8B | True | F8 | DDR_DQ8 | |
| IOL8B | I/O | 7 | DQ0 | Comp_of_IOL8A | True | F7 | DDR_DQ9 | |
| IOL11A | I/O | 7 | DQ0 | True_of_IOL11B | True | H9 | DDR_DQ10 | |
| IOL11B | I/O | 7 | DQ0 | Comp_of_IOL11A | True | G9 | DDR_DQ11 | |
| IOL13A | I/O | 7 | DQ0 | True_of_IOL13B | True | H6 | DDR_DQ12 | |
| IOL13B | I/O | 7 | DQ0 | Comp_of_IOL13A | True | G6 | DDR_DQ13 | |
| IOL15A | I/O | 7 | DQ1 | True_of_IOL15B | True | B4 | DDR_DQ0 | |
| IOL15B | I/O | 7 | DQ1 | Comp_of_IOL15A | True | A4 | DDR_DQ1 | |
| IOL17A | I/O | 7 | DQ1 | True_of_IOL17B | True | D3 | DDR_DQ2 | |
| IOL17B | I/O | 7 | DQ1 | Comp_of_IOL17A | True | C3 | DDR_DQ3 | |
| IOL1A | I/O | 7 | none | none | J8 | GPIO7 | ||
| IOL20A | I/O | 7 | DQ1 | True_of_IOL20B | True | F3 | DDR_DQ4 | |
| IOL20B | I/O | 7 | DQ1 | Comp_of_IOL20A | True | E3 | DDR_DQ5 | |
| IOL22A | I/O | 7 | DQS1 | True_of_IOL22B | True | B5 | DDR_DQS0 | |
| IOL22B | I/O | 7 | DQS1 | Comp_of_IOL22A | True | A5 | DDR_DQS_N0 | |
| IOL24A/MGCLKT_11/LPLL0_T_IN1/LPLL1_T_IN1 | I/O | 7 | DQ1 | MGCLKT_11/LPLL0_T_IN1/LPLL1_T_IN1 | True_of_IOL24B | True | E5 | DDR_DQ6 |
| IOL24B/MGCLKC_11/LPLL0_C_IN1/LPLL1_C_IN1 | I/O | 7 | DQ1 | MGCLKC_11/LPLL0_C_IN1/LPLL1_C_IN1 | Comp_of_IOL24A | True | D5 | DDR_DQ7 |
| IOL26A/SGCLKT_11/LPLL0_T_IN0/LPLL1_T_IN0 | I/O | 7 | DQ1 | SGCLKT_11/LPLL0_T_IN0/LPLL1_T_IN0 | True_of_IOL26B | True | D4 | DDR_DQM0 |
| IOL26B/SGCLKC_11/LPLL0_C_IN0/LPLL1_C_IN0 | I/O | 7 | DQ1 | SGCLKC_11/LPLL0_C_IN0/LPLL1_C_IN0 | Comp_of_IOL26A | True | C4 | GPIO26 |
| IOL29A/MGCLKT_10/LPLL0_T_FB1/LPLL1_T_FB1 | I/O | 7 | DQ2 | MGCLKT_10/LPLL0_T_FB1/LPLL1_T_FB1 | True_of_IOL29B | True | G5 | DDR_DQ24 |
| IOL29B/MGCLKC_10/LPLL0_C_FB1/LPLL1_C_FB1 | I/O | 7 | DQ2 | MGCLKC_10/LPLL0_C_FB1/LPLL1_C_FB1 | Comp_of_IOL29A | True | F5 | DDR_DQ25 |
| IOL2A/ADCINCK0 | I/O | 7 | DQ0 | ADCINCK0 | True_of_IOL2B | True | E6 | DDR_DQ14 |
| IOL2B | I/O | 7 | DQ0 | Comp_of_IOL2A | True | D6 | DDR_DQ15 | |
| IOL31A/SGCLKT_10/LPLL0_T_FB0/LPLL1_T_FB0 | I/O | 7 | DQ2 | SGCLKT_10/LPLL0_T_FB0/LPLL1_T_FB0 | True_of_IOL31B | True | G4 | DDR_DQ26 |
| IOL31B/SGCLKC_10/LPLL0_C_FB0/LPLL1_C_FB0 | I/O | 7 | DQ2 | SGCLKC_10/LPLL0_C_FB0/LPLL1_C_FB0 | Comp_of_IOL31A | True | F4 | DDR_DQ27 |
| IOL33A | I/O | 7 | DQ2 | True_of_IOL33B | True | J6 | DDR_DQ28 | |
| IOL33B | I/O | 7 | DQ2 | Comp_of_IOL33A | True | J5 | DDR_DQ29 | |
| IOL35A | I/O | 7 | DQS2 | True_of_IOL35B | True | J4 | DDR_DQS3 | |
| IOL35B | I/O | 7 | DQS2 | Comp_of_IOL35A | True | H4 | DDR_DQS_N3 | |
| IOL38A | I/O | 7 | DQ2 | True_of_IOL38B | True | L8 | DDR_DQ30 | |
| IOL38B | I/O | 7 | DQ2 | Comp_of_IOL38A | True | K8 | DDR_DQ31 | |
| IOL40A | I/O | 7 | DQ2 | True_of_IOL40B | True | K7 | DDR_DQM3 | |
| IOL40B | I/O | 7 | DQ2 | Comp_of_IOL40A | True | K6 | GPIO27 | |
| IOL42A | I/O | 7 | DQ3 | True_of_IOL42B | True | A3 | DDR_DQ16 | |
| IOL42B | I/O | 7 | DQ3 | Comp_of_IOL42A | True | A2 | DDR_DQ17 | |
| IOL44A | I/O | 7 | DQ3 | True_of_IOL44B | True | C2 | DDR_DQ18 | |
| IOL44B | I/O | 7 | DQ3 | Comp_of_IOL44A | True | B2 | DDR_DQ19 | |
| IOL47A | I/O | 7 | DQ3 | True_of_IOL47B | True | F2 | DDR_DQ20 | |
| IOL47B | I/O | 7 | DQ3 | Comp_of_IOL47A | True | E2 | DDR_DQ21 | |
| IOL49A | I/O | 7 | DQS3 | True_of_IOL49B | True | C1 | DDR_DQS2 | |
| IOL49B | I/O | 7 | DQS3 | Comp_of_IOL49A | True | B1 | DDR_DQS_N2 | |
| IOL4A | I/O | 7 | DQS0 | True_of_IOL4B | True | H7 | DDR_DQS1 | |
| IOL4B | I/O | 7 | DQS0 | Comp_of_IOL4A | True | G7 | DDR_DQS_N1 | |
| IOL51A | I/O | 7 | DQ3 | True_of_IOL51B | True | E1 | DDR_DQ22 | |
| IOL51B | I/O | 7 | DQ3 | Comp_of_IOL51A | True | D1 | DDR_DQ23 | |
| IOL53A | I/O | 7 | DQ3 | True_of_IOL53B | True | G2 | DDR_DQM2 | |
| IOL53B | I/O | 7 | DQ3 | Comp_of_IOL53A | True | G1 | GPIO23 | |
| IOL55A | I/O | 7 | none | none | H3 | GPIO24 | ||
| IOL6A | I/O | 7 | DQ0 | True_of_IOL6B | True | H8 | DDR_DQM1 | |
| IOL6B | I/O | 7 | DQ0 | Comp_of_IOL6A | True | G8 | GPIO25 |
Bank 10 — 0 free
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | |
|---|---|---|---|---|---|---|---|---|
| IOB169A/TDO | I/O | 10 | none | TDO | True_of_IOB169B | True | J10 | To DeMon GP20 JTAG_TDO/SPI1_SIO0 (MISO) |
| IOB169B/TMS | I/O | 10 | none | TMS | Comp_of_IOB169A | True | H11 | To DeMon GP17 JTAG_TMS/SPI1_CS1 |
| IOB171A/READY | I/O | 10 | none | READY | True_of_IOB171B | True | V11 | To DeMon I/O expander PB1 |
| IOB171B/DONE | I/O | 10 | none | DONE | Comp_of_IOB171A | True | W10 | To DeMon I/O expander PB2 |
| IOB173A/TCK | I/O | 10 | none | TCK | True_of_IOB173B | True | H12 | To DeMon GP21 JTAG_TCK/SPI1_SLCK |
| IOB173B/TDI | I/O | 10 | none | TDI | Comp_of_IOB173A | True | H10 | To DeMon GP19 JTAG_TDI/SPI1_SIO1 (MOSI) |
| IOB175A/MODE0 | I/O | 10 | none | MODE0 | True_of_IOB175B | True | AB7 | MODE0 — driven by DeMon expander PA0; board resistor default = 1 (MSPI boot); DeMon overrides for SSPI reflash |
| IOB175B/CCLK | I/O | 10 | none | CCLK | Comp_of_IOB175A | True | H13 | FLASH+HR1_CLK |
| IOB177A/MODE1 | I/O | 10 | none | MODE1 | True_of_IOB177B | True | Y9 | MODE1 — DeMon expander PA5; resistor default = 0 |
| IOB177B/MODE2 | I/O | 10 | none | MODE2 | Comp_of_IOB177A | True | W9 | MODE2 strap: 10 kΩ pull-down; post-configuration VSYNC_OUT |
| IOB179A/CFGBVS | I/O | 10 | none | CFGBVS | True_of_IOB179B | True | AB15 | Set to high via resistor, then output via diode? |
| IOB179B/RECONFIG_N | I/O | 10 | none | RECONFIG_N | Comp_of_IOB179A | True | AE16 | To DeMon I/O expander PA1 |
I've put the JTAG pins on DeMon pins that can either bitbang/PIO JTAG or DeMon can act as a 4 pin SPI master (depending on the FPGA image) after programming
MIPI ESP32-P4
The MIPI D-PHY receiver for Pulse's feed into FireStorm — one of the FPGA's two RX hardcells. Pulse (the ESP32-P4 supervisor) streams its per-frame display-layer descriptions and audio chunk over this link, frame-locked to the system vsync; the hardcell is 4-lane capable but Pulse drives only the lanes it needs.
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | |
|---|---|---|---|---|---|---|---|---|
| M0_CKN | DIO | MIPI | none | none | AA3 | |||
| M0_CKP | DIO | MIPI | none | none | Y3 | |||
| M0_D0N | DIO | MIPI | none | none | W1 | |||
| M0_D0P | DIO | MIPI | none | none | V1 | |||
| M0_D1N | DIO | MIPI | none | none | AA2 | |||
| M0_D1P | DIO | MIPI | none | none | Y2 | |||
| M0_D2N | DIO | MIPI | none | none | W3 | |||
| M0_D2P | DIO | MIPI | none | none | V3 | |||
| M0_D3N | DIO | MIPI | none | none | W4 | |||
| M0_D3P | DIO | MIPI | none | none | V4 |
MIPI Cartridge port
The second MIPI D-PHY receiver, brought out to the cartridge port. It lets an active cartridge — a camera, a video/capture device, or a co-processor rendering its own layer — feed a stream into FireStorm exactly as Pulse does, composited as another display layer. All four lanes are exposed on the cartridge edge.
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | Ant64 |
|---|---|---|---|---|---|---|---|---|
| M1_CKN | DIO | MIPI | none | none | AF2 | |||
| M1_CKP | DIO | MIPI | none | none | AE2 | |||
| M1_D0N | DIO | MIPI | none | none | AC1 | |||
| M1_D0P | DIO | MIPI | none | none | AB1 | |||
| M1_D1N | DIO | MIPI | none | none | AE1 | |||
| M1_D1P | DIO | MIPI | none | none | AD1 | |||
| M1_D2N | DIO | MIPI | none | none | AF3 | |||
| M1_D2P | DIO | MIPI | none | none | AE3 | |||
| M1_D3N | DIO | MIPI | none | none | AF5 | |||
| M1_D3P | DIO | MIPI | none | none | AE5 |
PCIe
The bulk data path to DeMon (the Raspberry Pi CM5): a PCIe link (x1 to the CM5) on the Q0 SerDes quad. It carries high-throughput transfers between DeMon and FireStorm, complementing the low-latency QSPI control channel. All four lanes and both reference-clock pairs are provisioned, though a single lane serves the CM5.
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | |
|---|---|---|---|---|---|---|---|---|
| Q0_LN0_RXM_I | DIO | Q0 | none | none | AD12 | DeMon 1x PCIE | ||
| Q0_LN0_RXP_I | DIO | Q0 | none | none | AC12 | |||
| Q0_LN0_TXM_O | DIO | Q0 | none | none | AD10 | |||
| Q0_LN0_TXP_O | DIO | Q0 | none | none | AC10 | |||
| Q0_LN1_RXM_I | DIO | Q0 | none | none | AF13 | |||
| Q0_LN1_RXP_I | DIO | Q0 | none | none | AE13 | |||
| Q0_LN1_TXM_O | DIO | Q0 | none | none | AF9 | |||
| Q0_LN1_TXP_O | DIO | Q0 | none | none | AE9 | |||
| Q0_LN2_RXM_I | DIO | Q0 | none | none | AD14 | |||
| Q0_LN2_RXP_I | DIO | Q0 | none | none | AC14 | |||
| Q0_LN2_TXM_O | DIO | Q0 | none | none | AD8 | |||
| Q0_LN2_TXP_O | DIO | Q0 | none | none | AC8 | |||
| Q0_LN3_RXM_I | DIO | Q0 | none | none | AF11 | |||
| Q0_LN3_RXP_I | DIO | Q0 | none | none | AE11 | |||
| Q0_LN3_TXM_O | DIO | Q0 | none | none | AF7 | |||
| Q0_LN3_TXP_O | DIO | Q0 | none | none | AE7 | |||
| Q0_REFCLKM_0 | DIO | Q0 | none | none | AB13 | |||
| Q0_REFCLKM_1 | DIO | Q0 | none | none | AB11 | |||
| Q0_REFCLKP_0 | DIO | Q0 | none | none | AA13 | |||
| Q0_REFCLKP_1 | DIO | Q0 | none | none | AA11 |
Display port -> HDMI
The main display output — a DisplayPort link on the Q1 SerDes quad, converted to HDMI for the primary monitor. This is FireStorm's finished video to the outside world; its hot-plug-detect and AUX sideband lines are in the Display port / PCIe support table below.
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | Ant64 |
|---|---|---|---|---|---|---|---|---|
| Q1_LN0_RXM_I | DIO | Q1 | none | none | A11 | Display port | ||
| Q1_LN0_RXP_I | DIO | Q1 | none | none | B11 | |||
| Q1_LN0_TXM_O | DIO | Q1 | none | none | A7 | |||
| Q1_LN0_TXP_O | DIO | Q1 | none | none | B7 | |||
| Q1_LN1_RXM_I | DIO | Q1 | none | none | C14 | |||
| Q1_LN1_RXP_I | DIO | Q1 | none | none | D14 | |||
| Q1_LN1_TXM_O | DIO | Q1 | none | none | C8 | |||
| Q1_LN1_TXP_O | DIO | Q1 | none | none | D8 | |||
| Q1_LN2_RXM_I | DIO | Q1 | none | none | A13 | |||
| Q1_LN2_RXP_I | DIO | Q1 | none | none | B13 | |||
| Q1_LN2_TXM_O | DIO | Q1 | none | none | A9 | |||
| Q1_LN2_TXP_O | DIO | Q1 | none | none | B9 | |||
| Q1_LN3_RXM_I | DIO | Q1 | none | none | C12 | |||
| Q1_LN3_RXP_I | DIO | Q1 | none | none | D12 | |||
| Q1_LN3_TXM_O | DIO | Q1 | none | none | C10 | |||
| Q1_LN3_TXP_O | DIO | Q1 | none | none | D10 | |||
| Q1_REFCLKM_0 | DIO | Q1 | none | none | E11 | |||
| Q1_REFCLKM_1 | DIO | Q1 | none | none | E13 | |||
| Q1_REFCLKP_0 | DIO | Q1 | none | none | F11 | |||
| Q1_REFCLKP_1 | DIO | Q1 | none | none | F13 |
Analog
The GW5AST's on-die ADC differential input pairs (ADCTP/N, ADCVP/N) — low-rate analogue measurement (supply/temperature monitoring or general sensor input) without an external ADC chip.
| Pin Name | Function | BANK | DQS | Configuration Function | Differential Pair | LVDS | PG676A | |
|---|---|---|---|---|---|---|---|---|
| ADCTN | DIO | ADC | none | none | R11 | |||
| ADCTP | DIO | ADC | none | none | R12 | |||
| ADCVN | DIO | ADC | none | none | P11 | |||
| ADCVP | DIO | ADC | none | none | N12 |
Lists of i/o for above
hdmi to vga
Signal-level pin lists for the interfaces above and the remaining board connectors — each table gives the connector-side signal names and how they map to the FPGA, with notes.
The retro analogue video output. FireStorm drives an HDMI/LVDS-style TMDS signal set (RGB + sync) that an external converter turns into VGA/SCART, giving the machine its retro RGB output alongside the main DisplayPort→HDMI feed.
| # | Signal | Maps to / note |
|---|---|---|
| 1 | HDMI D0N BLUE, H/V SYNC | HDMI (LDVS) -> VGA |
| 2 | HDMI D0P BLUE, H/V SYNC | |
| 3 | HDMI D1N GREEN, CTL0/1 | |
| 4 | HDMI D1P GREEN, CTL0/1 | |
| 5 | HDMI D2N RED, CTL2/3 | |
| 6 | HDMI D2P RED, CTL2/3 | |
| 7 | HDMI CKN CTRL/STATUS | |
| 8 | HDMI CKP CTRL/STATUS |
FPGA flash boot + HyperRAM 1 (shared MSPI master bus)
The FPGA's MSPI master bus, shared between the boot flash and HyperRAM 1. FireStorm loads its bitstream from the SPI flash here; HyperRAM 1 rides the same IO0–3/CCLK lines and only widens to x8 when its own HR1_CS is selected, so the two never collide. HR1 is fast working memory; its RESET# comes from DeMon expander PA2. (The fully separate HyperRAM 2 is a private bus — see below.)
| # | Signal | Maps to / note |
|---|---|---|
| 1 | Flash SPI CS | Flash MCS_N# |
| 2 | Flash SPI WP (M2) | D2 |
| 3 | Flash SPI HOLD (M3) | D3 |
| 4 | Flash SPI MISO (MISO) | D1 |
| 5 | Flash SPI MOSI (MOSI) | D0 |
| 6 | Flash SPI CLK (CCLK) | MCLK / CCLK |
| 7 | Hyperram RWDS | |
| 8 | D4 | |
| 9 | D5 | |
| 10 | D6 | |
| 11 | D7 | |
| 12 | HYPERRAM CS |
I2S to WM8960/2
The I2S link to the onboard Cirrus WM8960/WM8962 codec — the standard audio DAC path that carries Tempest's stereo output off the FPGA (MCLK/BCLK/LRCLK/SDATA).
| # | Signal | Maps to / note |
|---|---|---|
| 1 | MCLK | Dedicated I2S DAC out |
| 2 | BCLK | Cirrus WM8960 |
| 3 | LRCLK | |
| 4 | SDATA | |
| 5 | BCLK2 |
Audio expansion I2S (TI PCM3168A?)
The I2S link to the optional Studio I/O audio expansion (TI PCM3168A multichannel ADC/DAC) — the extra record/playback channels of the premium audio path, fitted as standard on the Ant64C and optional on the other models.
| # | Signal | Maps to / note |
|---|---|---|
| 1 | I2S ADCDAT2 | Add-on Audio out, in |
| 2 | I2S ADCCLRCLK2 | TI PCM3168A |
| 3 | I2S DACDAT2 | |
| 4 | I2S LRCLK2 | |
| 5 | I2S BCLK2 |
DDR3 (on prototype SDRAM?) connector
The DDR3-800 main-memory interface — the machine's primary DRAM (1.125–4.5 GB by model), a 72-bit bus of nine byte lanes — the ninth is real data in a full 72-bit word, or a debug/break tag lane in some FPGA configurations (as with the SRAM's 9th bit). The table lists the full connector: control/command (CS#, RAS/CAS/WE, ODT, CKE, RESET#), address, and data. It is single-rank for now — CS1/ODT1 are kept low and CK1 is unused — but the rank-1 control pins (CS1, ODT1, CKE1) stay under FPGA control rather than tied off, so dual-rank support could be added later purely in the controller configuration (and by populating the second rank), with no board change (the module's second clock pair CK1/CK1#, mapped in the table, carries the same clock as CK0/CK0# — usually driven from the same source, often just tied to CK0 — so dual-rank needs CK1 wired, not a second independent clock).
| # | Signal | Note | DIMM pin | SODIMM pin |
|---|---|---|---|---|
| 1 | DDR_CS0_N | Chip select, rank 0 (active low) | 193 | 127 |
| 2 | DDR_CS1_N | Chip select, rank 1 — unused now (single rank), FPGA-driven low — retained for possible future dual-rank | 76 | 129 |
| CK1 / CK1_N | Second clock pair — same clock as CK0/CK0#, usually tied to it; wire for dual-rank, not a separate clock | 63 / 64 | 112 / 114 | |
| 3 | DDR_RESET_N | Reset (active low) — asynchronous DRAM reset | 168 | 30 |
| 4 | DDR_CAS_N | Column-address strobe (active low) — command pin | 74 | 125 |
| 5 | DDR_RAS_N | Row-address strobe (active low) — command pin | 192 | 122 |
| 6 | DDR_WE_N | Write enable (active low) — command pin | 73 | 121 |
| 7 | DDR_ODT0 | On-die termination enable, rank 0 | 195 | 126 |
| 8 | DDR_ODT1 | On-die termination, rank 1 — unused now, FPGA-driven low — retained for possible future dual-rank | 77 | 128 |
| 9 | DDR_CKE0 | Clock enable, rank 0 | 50 | 87 |
| 10 | DDR_CKE1 | Clock enable, rank 1 — unused now, FPGA-driven low — retained for possible future dual-rank | 169 | 89 |
| 11 | DDR_CLK | Differential clock, true (CK) | 184 | 111 |
| 12 | DDR_CLK_N | Differential clock, complement (CK#) | 185 | 113 |
| 13 | DDR_DQ0 | Data bus bit 0 — 72-bit bus, nine 8-bit lanes (lane = DQ÷8); lanes 0–7 data, lane 8 (DQ64–71) is data in a full 72-bit word or a debug/break tag lane | 3 | 5 |
| 14 | DDR_DQ1 | Data bit 1 (byte lane 0) | 4 | 7 |
| 15 | DDR_DQ2 | Data bit 2 (byte lane 0) | 9 | 13 |
| 16 | DDR_DQ3 | Data bit 3 (byte lane 0) | 10 | 15 |
| 17 | DDR_DQ4 | Data bit 4 (byte lane 0) | 122 | 4 |
| 18 | DDR_DQ5 | Data bit 5 (byte lane 0) | 123 | 6 |
| 19 | DDR_DQ6 | Data bit 6 (byte lane 0) | 128 | 16 |
| 20 | DDR_DQ7 | Data bit 7 (byte lane 0) | 129 | 18 |
| 21 | DDR_DQ8 | Data bit 8 (byte lane 1) | 12 | 19 |
| 22 | DDR_DQ9 | Data bit 9 (byte lane 1) | 13 | 21 |
| 23 | DDR_DQ10 | Data bit 10 (byte lane 1) | 18 | 31 |
| 24 | DDR_DQ11 | Data bit 11 (byte lane 1) | 19 | 33 |
| 25 | DDR_DQ12 | Data bit 12 (byte lane 1) | 131 | 22 |
| 26 | DDR_DQ13 | Data bit 13 (byte lane 1) | 132 | 24 |
| 27 | DDR_DQ14 | Data bit 14 (byte lane 1) | 137 | 34 |
| 28 | DDR_DQ15 | Data bit 15 (byte lane 1) | 138 | 36 |
| 29 | DDR_DQ16 | Data bit 16 (byte lane 2) | 21 | 37 |
| 30 | DDR_DQ17 | Data bit 17 (byte lane 2) | 22 | 39 |
| 31 | DDR_DQ18 | Data bit 18 (byte lane 2) | 27 | 49 |
| 32 | DDR_DQ19 | Data bit 19 (byte lane 2) | 28 | 51 |
| 33 | DDR_DQ20 | Data bit 20 (byte lane 2) | 140 | 40 |
| 34 | DDR_DQ21 | Data bit 21 (byte lane 2) | 141 | 42 |
| 35 | DDR_DQ22 | Data bit 22 (byte lane 2) | 146 | 48 |
| 36 | DDR_DQ23 | Data bit 23 (byte lane 2) | 147 | 50 |
| 37 | DDR_DQ24 | Data bit 24 (byte lane 3) | 30 | 55 |
| 38 | DDR_DQ25 | Data bit 25 (byte lane 3) | 31 | 57 |
| 39 | DDR_DQ26 | Data bit 26 (byte lane 3) | 36 | 63 |
| 40 | DDR_DQ27 | Data bit 27 (byte lane 3) | 37 | 65 |
| 41 | DDR_DQ28 | Data bit 28 (byte lane 3) | 149 | 54 |
| 42 | DDR_DQ29 | Data bit 29 (byte lane 3) | 150 | 56 |
| 43 | DDR_DQ30 | Data bit 30 (byte lane 3) | 155 | 66 |
| 44 | DDR_DQ31 | Data bit 31 (byte lane 3) | 156 | 68 |
| 45 | DDR_DQ32 | Data bit 32 (byte lane 4) | 81 | 133 |
| 46 | DDR_DQ33 | Data bit 33 (byte lane 4) | 82 | 135 |
| 47 | DDR_DQ34 | Data bit 34 (byte lane 4) | 87 | 145 |
| 48 | DDR_DQ35 | Data bit 35 (byte lane 4) | 88 | 147 |
| 49 | DDR_DQ36 | Data bit 36 (byte lane 4) | 200 | 134 |
| 50 | DDR_DQ37 | Data bit 37 (byte lane 4) | 201 | 136 |
| 51 | DDR_DQ38 | Data bit 38 (byte lane 4) | 206 | 142 |
| 52 | DDR_DQ39 | Data bit 39 (byte lane 4) | 207 | 144 |
| 53 | DDR_DQ40 | Data bit 40 (byte lane 5) | 90 | 151 |
| 54 | DDR_DQ41 | Data bit 41 (byte lane 5) | 91 | 153 |
| 55 | DDR_DQ42 | Data bit 42 (byte lane 5) | 96 | 159 |
| 56 | DDR_DQ43 | Data bit 43 (byte lane 5) | 97 | 161 |
| 57 | DDR_DQ44 | Data bit 44 (byte lane 5) | 209 | 148 |
| 58 | DDR_DQ45 | Data bit 45 (byte lane 5) | 210 | 150 |
| 59 | DDR_DQ46 | Data bit 46 (byte lane 5) | 215 | 160 |
| 60 | DDR_DQ47 | Data bit 47 (byte lane 5) | 216 | 162 |
| 61 | DDR_DQ48 | Data bit 48 (byte lane 6) | 99 | 165 |
| 62 | DDR_DQ49 | Data bit 49 (byte lane 6) | 100 | 167 |
| 63 | DDR_DQ50 | Data bit 50 (byte lane 6) | 105 | 177 |
| 64 | DDR_DQ51 | Data bit 51 (byte lane 6) | 106 | 179 |
| 65 | DDR_DQ52 | Data bit 52 (byte lane 6) | 218 | 166 |
| 66 | DDR_DQ53 | Data bit 53 (byte lane 6) | 219 | 168 |
| 67 | DDR_DQ54 | Data bit 54 (byte lane 6) | 224 | 174 |
| 68 | DDR_DQ55 | Data bit 55 (byte lane 6) | 225 | 176 |
| 69 | DDR_DQ56 | Data bit 56 (byte lane 7) | 108 | 183 |
| 70 | DDR_DQ57 | Data bit 57 (byte lane 7) | 109 | 185 |
| 71 | DDR_DQ58 | Data bit 58 (byte lane 7) | 114 | 191 |
| 72 | DDR_DQ59 | Data bit 59 (byte lane 7) | 115 | 193 |
| 73 | DDR_DQ60 | Data bit 60 (byte lane 7) | 227 | 180 |
| 74 | DDR_DQ61 | Data bit 61 (byte lane 7) | 228 | 182 |
| 75 | DDR_DQ62 | Data bit 62 (byte lane 7) | 233 | 192 |
| 76 | DDR_DQ63 | Data bit 63 (byte lane 7) | 234 | 194 |
| 77 | DDR_DQ64 | Data bit 64 — ninth byte lane: data in a full 72-bit word, or a debug/break tag bit in some FPGA configurations | 39 | 69 |
| 78 | DDR_DQ65 | Data bit 65 — ninth byte lane: data in a full 72-bit word, or a debug/break tag bit in some FPGA configurations | 40 | 71 |
| 79 | DDR_DQ66 | Data bit 66 — ninth byte lane: data in a full 72-bit word, or a debug/break tag bit in some FPGA configurations | 45 | 81 |
| 80 | DDR_DQ67 | Data bit 67 — ninth byte lane: data in a full 72-bit word, or a debug/break tag bit in some FPGA configurations | 46 | 83 |
| 81 | DDR_DQ68 | Data bit 68 — ninth byte lane: data in a full 72-bit word, or a debug/break tag bit in some FPGA configurations | 158 | 72 |
| 82 | DDR_DQ69 | Data bit 69 — ninth byte lane: data in a full 72-bit word, or a debug/break tag bit in some FPGA configurations | 159 | 74 |
| 83 | DDR_DQ70 | Data bit 70 — ninth byte lane: data in a full 72-bit word, or a debug/break tag bit in some FPGA configurations | 164 | 80 |
| 84 | DDR_DQ71 | Data bit 71 — ninth byte lane: data in a full 72-bit word, or a debug/break tag bit in some FPGA configurations | 165 | 82 |
| 85 | DDR_DQM1 | Data mask (write mask) for byte lane 1 | 134 | 28 |
| 86 | DDR_DQM0 | Data mask (write mask) for byte lane 0 | 125 | 11 |
| 87 | DDR_DQM3 | Data mask (write mask) for byte lane 3 | 152 | 59 |
| 88 | DDR_DQM2 | Data mask (write mask) for byte lane 2 | 143 | 44 |
| 89 | DDR_DQM5 | Data mask (write mask) for byte lane 5 | 212 | 157 |
| 90 | DDR_DQM4 | Data mask (write mask) for byte lane 4 | 203 | 140 |
| 91 | DDR_DQM7 | Data mask (write mask) for byte lane 7 | 230 | 189 |
| 92 | DDR_DQM6 | Data mask (write mask) for byte lane 6 | 221 | 172 |
| 93 | DDR_DQM8 | Data mask for the ninth byte lane (72-bit-word data / debug-break tag lane) | 161 | 76 |
| 94 | DDR_DQS_N1 | Data strobe, complement (DQS#) for byte lane 1 | 15 | 25 |
| 95 | DDR_DQS_N0 | Data strobe, complement (DQS#) for byte lane 0 | 6 | 10 |
| 96 | DDR_DQS_N3 | Data strobe, complement (DQS#) for byte lane 3 | 33 | 60 |
| 97 | DDR_DQS_N2 | Data strobe, complement (DQS#) for byte lane 2 | 24 | 43 |
| 98 | DDR_DQS_N5 | Data strobe, complement (DQS#) for byte lane 5 | 93 | 154 |
| 99 | DDR_DQS_N4 | Data strobe, complement (DQS#) for byte lane 4 | 84 | 139 |
| 100 | DDR_DQS_N7 | Data strobe, complement (DQS#) for byte lane 7 | 111 | 186 |
| 101 | DDR_DQS_N6 | Data strobe, complement (DQS#) for byte lane 6 | 102 | 171 |
| 102 | DDR_DQS_N8 | Data strobe, complement, for the ninth byte lane (72-bit-word data / debug-break tag lane) | 42 | 75 |
| 103 | DDR_DQS1 | Data strobe, true (DQS) for byte lane 1 | 16 | 27 |
| 104 | DDR_DQS0 | Data strobe, true (DQS) for byte lane 0 | 7 | 12 |
| 105 | DDR_DQS3 | Data strobe, true (DQS) for byte lane 3 | 34 | 62 |
| 106 | DDR_DQS2 | Data strobe, true (DQS) for byte lane 2 | 25 | 45 |
| 107 | DDR_DQS5 | Data strobe, true (DQS) for byte lane 5 | 94 | 156 |
| 108 | DDR_DQS4 | Data strobe, true (DQS) for byte lane 4 | 85 | 141 |
| 109 | DDR_DQS7 | Data strobe, true (DQS) for byte lane 7 | 112 | 188 |
| 110 | DDR_DQS6 | Data strobe, true (DQS) for byte lane 6 | 103 | 173 |
| 111 | DDR_DQS8 | Data strobe, true, for the ninth byte lane (72-bit-word data / debug-break tag lane) | 43 | 77 |
| 112 | DDR_BA0 | Bank-address bit 0 — selects the DRAM internal bank | 71 | 119 |
| 113 | DDR_BA1 | Bank-address bit 1 — selects the DRAM internal bank | 190 | 108 |
| 114 | DDR_BA2 | Bank-address bit 2 — selects the DRAM internal bank | 52 | 91 |
| 115 | DDR_ADDR0 | Multiplexed row/column address bit 0 | 188 | 107 |
| 116 | DDR_ADDR1 | Address bit 1 | 181 | 105 |
| 117 | DDR_ADDR2 | Address bit 2 | 61 | 106 |
| 118 | DDR_ADDR3 | Address bit 3 | 180 | 103 |
| 119 | DDR_ADDR4 | Address bit 4 | 59 | 104 |
| 120 | DDR_ADDR5 | Address bit 5 | 58 | 99 |
| 121 | DDR_ADDR6 | Address bit 6 | 178 | 100 |
| 122 | DDR_ADDR7 | Address bit 7 | 56 | 98 |
| 123 | DDR_ADDR8 | Address bit 8 | 177 | 97 |
| 124 | DDR_ADDR9 | Address bit 9 | 175 | 92 |
| 125 | DDR_ADDR10 | Address bit 10 / auto-precharge (A10/AP) | 70 | 117 |
| 126 | DDR_ADDR11 | Address bit 11 | 55 | 96 |
| 127 | DDR_ADDR12 | Address bit 12 / burst-chop (A12/BC#) | 174 | 95 |
| 128 | DDR_ADDR13 | Address bit 13 | 196 | 130 |
| 129 | DDR_ADDR14 | Address bit 14 | 172 | 90 |
| 130 | DDR_ADDR15 | Address bit 15 | 171 | 88 |
DIMM / SODIMM pin columns. Module pins are the JEDEC x72 ECC pinouts — 240-pin UDIMM (Micron MT18JSF…AZ) and 204-pin SODIMM (Micron MT18KSF…HZ). DQ0–63 map to the module DQ0–63, the ninth lane DQ64–71 to the module check-bit byte CB0–7, and DQS/DM follow their byte lane. The DQ-bit order within a byte lane is a free routing choice — any FPGA DQ may go to any module DQ pin of the same lane — so treat the per-bit rows as the identity default, not a fixed constraint. Rank-1 pins (CS1, ODT1, CKE1, CK1) are shown for the future dual-rank option.
SRAM
The wide-mode SRAM: two IS61LPS51236B synchronous SRAMs (512K×36 each) forming a 1M×36 space (~4.5 MB). This is the memory that makes wide mode possible — each 36-bit word carries four bits beyond a 32-bit instruction, which the EE uses as the Xwide register-extension nibble on fetch, and as a fast single-cycle scratchpad otherwise. Chip select: both chips share A0–A18, the 36-bit data bus and all timing/control; SRAM_CE (D20) enables both, and SRAM_BANK (D18) selects which one responds — chip 0 when 0, chip 1 when 1 — so the pair is addressed as one contiguous 1M×36 array with no external glue. (Full truth table in the Assignment summary.)
| # | Signal | Maps to / note |
|---|---|---|
| 1 | SRAM CLOCK | Master clock — address and control latched on the rising edge (36-bit SyncBurst SRAM) |
| 2 | SRAM /CE | Chip enable (active low) — SRAM_CE drives both banks; SRAM_BANK picks which one responds |
| 3 | SRAM_BANK | Shared bank-select signal: 0 = chip 0, 1 = chip 1 |
| 4 | SRAM /ADSP | Address status, processor — loads a new address and starts a burst; active low |
| 5 | SRAM /ADSC | Address status, controller — loads a new address, starts a read or write burst; active low |
| 6 | SRAM /ADV | Advance — steps the internal burst counter to the next word without reloading the address; active low |
| 7 | SRAM MODE | Burst-order select — linear vs interleaved burst sequence |
| 8 | SRAM /OE | Output enable — turns on the data-bus drivers during a read; active low |
| 9 | SRAM /BWa | Byte-write select, lane a (Da0–8); active low |
| 10 | SRAM /BWb | Byte-write select, lane b (Db0–8); active low |
| 11 | SRAM /BWc | Byte-write select, lane c (Dc0–8); active low |
| 12 | SRAM /BWd | Byte-write select, lane d (Dd0–8); active low |
| 13 | SRAM /BWE write enable | Byte-write enable — write strobe asserted with /BWa–d to commit the selected lanes; active low |
| 14 | SRAM A0 | Address bus LSB — A0–A18 = 19 bits = 512K locations, shared by both banks |
| 15 | SRAM A1 | Address bit 1 |
| 16 | SRAM A2 | Address bit 2 |
| 17 | SRAM A3 | Address bit 3 |
| 18 | SRAM A4 | Address bit 4 |
| 19 | SRAM A5 | Address bit 5 |
| 20 | SRAM A6 | Address bit 6 |
| 21 | SRAM A7 | Address bit 7 |
| 22 | SRAM A8 | Address bit 8 |
| 23 | SRAM A9 | Address bit 9 |
| 24 | SRAM A10 | Address bit 10 |
| 25 | SRAM A11 | Address bit 11 |
| 26 | SRAM A12 | Address bit 12 |
| 27 | SRAM A13 | Address bit 13 |
| 28 | SRAM A14 | Address bit 14 |
| 29 | SRAM A15 | Address bit 15 |
| 30 | SRAM A16 | Address bit 16 |
| 31 | SRAM A17 | Address bit 17 |
| 32 | SRAM A18 | Address bus MSB (A18) — top of the 512K range |
| 33 | SRAM Da0 | Data lane a, bit 0 — bus is four 9-bit lanes a/b/c/d (36 bit), each gated by its /BWx |
| 34 | SRAM Da1 | Data lane a, bit 1 |
| 35 | SRAM Da2 | Data lane a, bit 2 |
| 36 | SRAM Da3 | Data lane a, bit 3 |
| 37 | SRAM Da4 | Data lane a, bit 4 |
| 38 | SRAM Da5 | Data lane a, bit 5 |
| 39 | SRAM Da6 | Data lane a, bit 6 |
| 40 | SRAM Da7 | Data lane a, bit 7 |
| 41 | SRAM Da8 | Data lane a, bit 8 (the 9th bit) — data in 36-bit mode, or a debug/break tag bit in some FPGA configurations |
| 42 | SRAM Db0 | Data lane b, bit 0 |
| 43 | SRAM Db1 | Data lane b, bit 1 |
| 44 | SRAM Db2 | Data lane b, bit 2 |
| 45 | SRAM Db3 | Data lane b, bit 3 |
| 46 | SRAM Db4 | Data lane b, bit 4 |
| 47 | SRAM Db5 | Data lane b, bit 5 |
| 48 | SRAM Db6 | Data lane b, bit 6 |
| 49 | SRAM Db7 | Data lane b, bit 7 |
| 50 | SRAM Db8 | Data lane b, bit 8 (the 9th bit) — data in 36-bit mode, or a debug/break tag bit in some FPGA configurations |
| 51 | SRAM Dc0 | Data lane c, bit 0 |
| 52 | SRAM Dc1 | Data lane c, bit 1 |
| 53 | SRAM Dc2 | Data lane c, bit 2 |
| 54 | SRAM Dc3 | Data lane c, bit 3 |
| 55 | SRAM Dc4 | Data lane c, bit 4 |
| 56 | SRAM Dc5 | Data lane c, bit 5 |
| 57 | SRAM Dc6 | Data lane c, bit 6 |
| 58 | SRAM Dc7 | Data lane c, bit 7 |
| 59 | SRAM Dc8 | Data lane c, bit 8 (the 9th bit) — data in 36-bit mode, or a debug/break tag bit in some FPGA configurations |
| 60 | SRAM Dd0 | Data lane d, bit 0 |
| 61 | SRAM Dd1 | Data lane d, bit 1 |
| 62 | SRAM Dd2 | Data lane d, bit 2 |
| 63 | SRAM Dd3 | Data lane d, bit 3 |
| 64 | SRAM Dd4 | Data lane d, bit 4 |
| 65 | SRAM Dd5 | Data lane d, bit 5 |
| 66 | SRAM Dd6 | Data lane d, bit 6 |
| 67 | SRAM Dd7 | Data lane d, bit 7 |
| 68 | SRAM Dd8 | Data lane d, bit 8 (the 9th bit) — data in 36-bit mode, or a debug/break tag bit in some FPGA configurations |
2x HDMI IN
The two HDMI receivers that bring DeMon's video into FireStorm. DeMon (the CM5) outputs its UI/display layers over HDMI rather than MIPI; FireStorm receives both streams here and composites them as layers, frame-locked to vsync like every other source.
| # | Signal | Maps to / note |
|---|---|---|
| 1 | HDMI 0 D0N BLUE, H/V SYNC | DeMon HDMI 0 IN |
| 2 | HDMI 0 D0P BLUE, H/V SYNC | |
| 3 | HDMI 0 D1N GREEN, CTL0/1 | |
| 4 | HDMI 0 D1P GREEN, CTL0/1 | |
| 5 | HDMI 0 D2N RED, CTL2/3 | |
| 6 | HDMI 0 D2P RED, CTL2/3 | |
| 7 | HDMI 0 CKN CTRL/STATUS | |
| 8 | HDMI 0 CKP CTRL/STATUS | |
| 1 | HDMI 1 D0N BLUE, H/V SYNC | DeMon HDMI 1 IN |
| 2 | HDMI 1 D0P BLUE, H/V SYNC | |
| 3 | HDMI 1 D1N GREEN, CTL0/1 | |
| 4 | HDMI 1 D1P GREEN, CTL0/1 | |
| 5 | HDMI 1 D2N RED, CTL2/3 | |
| 6 | HDMI 1 D2P RED, CTL2/3 | |
| 7 | HDMI 1 CKN CTRL/STATUS | |
| 8 | HDMI 1 CKP CTRL/STATUS |
Pulse OPI (master) to FPGA (slave)
The runtime control/data bus between Pulse and FireStorm — an octal-SPI (OPI) link with Pulse as master and the FPGA as slave, on the FPGA's SSPI slave/config pins. It runs x4 QPI during boot configuration and widens to x8 OPI at runtime, with a dedicated interrupt line back to Pulse.
| # | Signal | Maps to / note |
|---|---|---|
| 1 | SPI_CS | Pulse slave opi |
| 2 | SPI_WP (IO2) | D2 |
| 3 | SPI_HOLD (IO3) | D3 |
| 4 | SPI_Q (IO1) | D1 |
| 5 | SPI_D (IO0) | D0 |
| 6 | SPI_CK | |
| 7 | SPI_DQS | |
| 8 | SPI_IO4 | D4 |
| 9 | SPI_IO5 | D5 |
| 10 | SPI_IO6 | D6 |
| 11 | SPI_IO7 | D7 |
| 12 | SPI interrupt | Interrupt to pulse |
Display port/PCie support
The low-speed sideband lines for the two SerDes interfaces above: DisplayPort hot-plug-detect and the AUX channel for the DP output, and PCIe_nRST for the DeMon PCIe link.
| # | Signal | Maps to / note |
|---|---|---|
| 1 | Dp HPD | |
| 2 | DP aux out P | Aux channel on DP port |
| 3 | DP aux out N | |
| 4 | PCIe_nRST | PCIe support lines |
Sticky UART TX to FPGA
The direct controller-input UART. Sticky (the joypad controller) streams normalised controller state straight into FireStorm over this one line, so a running personality reads input at UART latency with no supervisor in the path. (Clicky's keyboard does not use this route — its keys reach a core via DeMon.)
| # | Signal | Maps to / note |
|---|---|---|
| 1 | Sticky UART TX |
HyperRAM 2 (allocated in bank 2)
The second HyperRAM — a fully private, independent HyperBus with its own clock and DQS, carrying no flash or configuration traffic (unlike HyperRAM 1, which shares the MSPI flash bus). It serves as fast working memory that can be reset independently; its RESET# comes from DeMon expander PA4.
| # | Signal | Maps to / note |
|---|---|---|
| 1 | HyperRam2 SPI CS | MCS_N# |
| 2 | HyperRam2 SPI WP (M2) | D2 |
| 3 | HyperRam2 SPI HOLD (M3) | D3 |
| 4 | HyperRam2 SPI MISO (MISO) | D1 |
| 5 | HyperRam2 SPI MOSI (MOSI) | D0 |
| 6 | HyperRam2 SPI CLK (CCLK) | MCLK / CCLK |
| 7 | HyperRam2 RWDS | PSRAM DQS |
| 8 | HyperRam2 | D4 |
| 9 | HyperRam2 | D5 |
| 10 | HyperRam2 | D6 |
| 11 | HyperRam2 | D7 |
Controller UART input streams
Sticky TX → FPGA K15 (STICKY_UART_TX). Clicky has no FPGA UART connection; its key stream goes to DeMon, which forwards events to FireStorm when needed. M15, L15 and J16 now carry restored header GPIO19, GPIO20 and GPIO16.
Assignment summary
SRAM bank selection and released pin
Two IS61LPS51236B chips share A0–A18, the 36-bit data bus and timing/control signals. FPGA D20 (SRAM_CE) drives both active-low /CE inputs. FPGA D18 (SRAM_BANK, formerly SRAM_CE2) selects the bank:
| SRAM input | Chip 0 | Chip 1 |
|---|---|---|
| /CE | SRAM_CE | SRAM_CE |
| CE2 | Tie high to the SRAM I/O supply | SRAM_BANK |
| /CE2 | SRAM_BANK | Tie low to ground |
SRAM_BANK=0 selects chip 0; SRAM_BANK=1 selects chip 1, when enabled. No inverter is required. M17 (SRAM_CE_B) is released. Selection is synchronous: latch the bank during a valid address-load cycle and satisfy output-disable/read/write turnaround timing; changing the bank bit alone does not end a burst.
Spare-pin count
Counts below follow the bank tables after the ninth DDR3 byte lane was allocated. A spare is an unassigned general-purpose I/O ball. User-header signals and dedicated configuration functions are already allocated; unused SerDes, MIPI and ADC connections are not counted as GPIO spares.
| Bank | Listed I/O balls | Allocated | Unassigned spares | Of allocated: user-header GPIO |
|---|---|---|---|---|
| 2 | 50 | 50 | 0 | 0 |
| 3 | 50 | 50 | 0 | 6 |
| 4 | 50 | 50 | 0 | 2 |
| 5 | 50 | 50 | 0 | 8 |
| 6 | 50 | 50 | 0 | 6 |
| 7 | 50 | 50 | 0 | 6 |
| 10 | 12 | 12 | 0 | 0 |
| Total | 312 | 312 | 0 | 28 |
The 312 listed balls include dedicated configuration functions; this is not a claim of 312 independently usable GPIOs. All I/O balls are now allocated. Bank 3's six former spares (M17, M15, L15, K16, M16, J16) and bank 4's two (K26, M19) carry restored header GPIO15–22; the three former beyond-Pi extras GPIO28–30 (G1/H3/G8) are renumbered GPIO23–25. No unassigned spares remain.
Signal → pin assignments are in each bank's Ant64 column above. Bank allocation and I/O standards:
| Bank(s) | VCCIO | I/O standard | Contents |
|---|---|---|---|
| 2, 3 | 3.3 V | LVCMOS33 | 36-bit SRAM · HyperRAM 2 (private bus) · WM8960 + PCM3168A I²S · Sticky UART input to FPGA · DP HPD/AUX/nRST · restored header GPIO15–22 (3.3 V, direct) |
| 4 | 3.3 V | TMDS33 (HDMI) / LVCMOS33 | Boot flash + HyperRAM 1 (MSPI master) · Pulse OPI on the SSPI slave bus (boot config QPI x4, runtime x8 OPI) · DeMon HDMI-0 in · HDMI-1 in · HDMI→VGA out |
| 5, 6, 7 | 1.5 V | SSTL15 | DDR3-800 (72-bit): eight data lanes on 6 + 7 (DQS groups 0–7), ninth lane on bank 5 (DQS11), address/command/CK on 5; translated user GPIOs GPIO0–14 and GPIO23–27 ride 5/6/7 (1.5 V→3.3 V), while GPIO15–22 come off bank 3/4 at 3.3 V |
| 10 | config | — | JTAG / MODE / CCLK / DONE / RECONFIG; W9 becomes VSYNC_OUT after configuration |
| Q0 / Q1 | SerDes | PCIe / DP | DeMon PCIe (Q0) · DisplayPort → PS176 (Q1) |
| M0 / M1 | MIPI | D-PHY | Pulse ESP32-P4 (M0) · Cartridge (M1) |
DDR3 logical byte lanes
Logical lane n is DQ[8n+7:8n], DQM[n] and DQS[n]/DQS_N[n]. Logical lane numbers are independent of the FPGA's physical DQS-group numbers. The first eight lanes retain their data-ball assignments with corrected logical mask/strobe names. Lane 8 uses former GPIO15–25 in bank 5; all eleven pins belong to physical DQS group 11. Apply these names consistently in the schematic and controller constraints.
| Logical lane | Data bits | FPGA DQS group | DQS positive ball | DQS negative ball | DQM ball |
|---|---|---|---|---|---|
| 0 | DQ0–7 | 1 | B5 | A5 | D4 |
| 1 | DQ8–15 | 0 | H7 | G7 | H8 |
| 2 | DQ16–23 | 3 | C1 | B1 | G2 |
| 3 | DQ24–31 | 2 | J4 | H4 | K7 |
| 4 | DQ32–39 | 5 | N1 | M1 | N3 |
| 5 | DQ40–47 | 4 | M4 | L4 | N7 |
| 6 | DQ48–55 | 7 | U6 | U5 | T5 |
| 7 | DQ56–63 | 6 | R1 | P1 | U2 |
| 8 | DQ64–71 | 11 | AB26 | AC26 | AA25 |
The 72-bit interface uses 11 existing GPIO allocations: DQ64–71 = U26, V26, W26, W25, Y26, V24, W24, Y25; DQM8 = AA25; DQS8/DQS_N8 = AB26/AC26. Disconnect these FPGA balls from the user-header translators; they now carry the DDR3 ninth lane. The GPIO15–25 header contacts are re-driven from reassigned balls in banks 3/4/7 — see the User I/O Header section. DDR_RESET_N remains on U25. Validate the nine-lane controller configuration and DQS11 routing in Gowin EDA before committing the schematic.
Key pin choices
HR1 RWDS / PUDC_B pull-up
Fit 1 kΩ from FPGA ball P15 (HR1_RWDS / PUDC_B) to bank-4 VCCIO (3.3 V). Place it close to the FPGA, with a short branch from the RWDS trace. This is a pull-up, not a series termination; do not tie RWDS directly to the supply.
The resistor holds PUDC_B high during configuration, selecting high-impedance GPIO behaviour rather than the configuration-wide weak pull-ups. Other signals that need a defined boot level, especially flash and HyperRAM chip selects, therefore require their own external bias. Keep HR1 deselected and verify that its RWDS output remains high-impedance throughout power-up and FPGA reconfiguration.
After configuration, reclaim P15 for the HyperRAM PHY; the resistor stays fitted. At 3.3 V it adds approximately 3.3 mA load when RWDS is driven low. Verify low-level voltage, drive capability and RWDS timing for both FPGA and HyperRAM drivers with this load. If the boot-state or runtime checks fail, revisit the shared-pin arrangement.
The nominal 1 kΩ value follows the configuration-bias guidance in Gowin UG984 §3.3. It does not resolve the separate HR1 DQS-routing validation.
- DDR3 — each SDRAM byte-lane's 8 DQ + DM + DQS± kept inside one FPGA DQS group (logical byte lanes 0–8 → physical DQS groups 1, 0, 3, 2, 5, 4, 7, 6, 11) so write-levelling stays legal; DRAM CK± on the SGCLK6 clock pair (Y22/Y23). Internal VREF (0.5·VCCIO = 0.75 V) — no VREF ball consumed.
- HyperRAM 2 — RWDS on DQS23 (F18), CLK on SGCLK1 (E17): a fully private HyperBus, independent of DDR3/SRAM.
- Pulse OPI (FPGA = slave) — runtime SSPI/OPI clock on R16 (SSPI_CLK; not a general-clock pin), SPI_DQS on DQS15 (T25). G20 is the codec/I²S MCLK connection.
- HDMI — TMDS differential pairs; pixel clocks on SGCLK5 / MGCLK5 / SGCLK4; on-die 100 Ω differential termination on the two receive links.
- SRAM clock on SGCLK0 (E20); WM8960 MCLK on G20. N21 is Pulse OPI data (D5).
HyperRAM 1 vs HyperRAM 2
- HyperRAM 1 rides the MSPI master bus (shared with the boot flash): x4 base
IO0–3on R14/R15/P14/N14, flashMCS_NP18, clockCCLKH13. It widens to x8 only when its own CS is selected, on four separate nearby pins —DQ4–7= N16/P16/N22/L25 — withRWDSon P15 (DQS12) andHR1_CSon R23. It never touches the SSPI set. - Pulse OPI = the SSPI slave bus (bank 4): CS
L24· CKR16· D0–3 onN17/N18/R17/T24, widened to x8 at runtime with D4–7 onT23/N21/R18/L20, DQST25, INTM20. At boot Pulse is the SSPI master and QPI-programs the FPGA (x4); post-config the same pins widen to Pulse's x8 OPI data. The bank-3 OPI was dropped and WM8960 I²S + Clicky/Sticky UART moved into the island (bank 3). Each SSPI pin needs a 4.7 kΩ pull-up to bank-4 VCCIO. Runtime OPI clock sits on the SSPI_CLK pin (not a GCLK) — DQS-based capture covers it, but confirm in timing. - Boot-mode straps: MODE0/1 (bank-10 AB7/Y9) remain DeMon-expander outputs (PA0/PA5). MODE2 (W9) is permanently strapped low with a 10 kΩ resistor; it is not connected to the expander because MSPI boot (
001) and SSPI programming (010) both require MODE2=0. After configuration, W9 is reused asVSYNC_OUT; the FPGA image must release the MODE2 input and enable the output only after configuration. HSYNC is removed and optical S/PDIF remains on bank 4 (K25); together with shared SRAM enable/bank selection this freed K16, M16 and M17 — all three now reassigned as restored header GPIO15, GPIO17 and GPIO18. - HyperRAM 2 (assigned here, banks 2/3) is a private, independent HyperBus — no flash, no config traffic, own clock and DQS. RESET# from DeMon expander PA4 (HyperRAM 1 = PA2), each bank clearable independently.
Before fab — run in GoWin EDA for DRC
- Set VCCIO per the table (2/3/4 = 3.3 V, 5/6/7 = 1.5 V); confirm DQS-group completeness and internal VREF on 5/6/7.
- HDMI-in is the open electrical item: confirm the GW5AST-138 takes TMDS33 input directly on the 3.3 V bank, or whether the two DeMon links need AC-coupling + re-bias.
- MSPI bus pull-ups (from the GW5A config-pin spec):
MI2/WP(P14) andMI3/clock-lock(N14) gate MSPI validity — WP must read high for MSPI to be valid, and clock-lock is active-low with only a weak internal pull-up — so both need 4.7 kΩ pull-ups to bank-4 VCCIO (3.3 V) on the board. Confirm the flash/HR1 clock is EMCCLK (P16) vs CCLK, and pin down the x8MI4–7, HyperRAM DQS/RWDS and 2nd CS against GoWin's MSPI-HyperRAM app note (the x4 MCSN/MOSI/MISO/MI2/MI3 are solid). - All banks are fully allocated — no unassigned spares remain. Bank 3's six former spares and bank 4's two now carry restored header GPIO15–22. Header GPIO assignments are not spare pins.
User I/O Header — Raspberry Pi layout
All 28 header GPIO are populated (GPIO0–27), a full 40-pin Raspberry-Pi-layout interface. GPIO0–14 and GPIO23–27 reach the header through the 1.5 V ↔ 3.3 V translators on banks 5/6/7; the restored GPIO15–22 come off bank-3/4 balls at 3.3 V and connect directly, no translator. GPIO15–25 no longer route to their original bank-5 balls — those now carry the DDR3 ninth byte lane — so they are re-driven from the reassigned balls (banks 3/4/7). The earlier beyond-Pi extras GPIO28–30 are dropped. Power/ground retain their existing positions.
Parallel-bus grouping. The full 18-bit SMI data bus (SD0–SD17 on GPIO8–25) is restored: GPIO8–14 on bank-5 balls, GPIO15–25 on the reassigned bank-3/4/7 balls. SA0–5 (GPIO0–5) and SOE_N/SWE_N (GPIO6/7) are unchanged. Caveat: the 18 data lines are no longer bank-contiguous — GPIO8–14 sit in bank 5 (1.5 V, translated), GPIO15–22 in banks 3/4 (3.3 V, direct) and GPIO23–25 in bank 7 (1.5 V, translated) — so per-line skew/delay tuning may be needed at high SMI clocks. The clean single-bank grouping is not recoverable while the DDR3 ninth lane occupies the original bank-5 balls.
Physical placement — rear-mounted, Raspberry Pi 400 / 500 style. The header sits on the rear edge of the case, horizontal and facing outward, the way the Pi 400 and Pi 500 expose theirs — the natural home for a keyboard-computer: reachable without opening the case, and a HAT or ribbon lies flat off the back. This does not change the pin-to-signal map below — it is the standard Pi electrical pinout (pin 1 = 3.3 V, pin 3 = GPIO2, … pin 40 = GPIO21). What it changes is orientation: a rear-facing connector is approached from the opposite side to a board-top header, so its physical pin-1 corner is flipped relative to a classic Pi — the same reason Pi-400 GPIO adapters are "reversed". Fix pin 1's physical corner in the mechanical layout, and if Pi-400/500-style adapters or cables should drop in, match their orientation and verify against a real unit.
| Pin | Signal | RPi default function | SMI function | FPGA ball |
|---|---|---|---|---|
| 1 | 3V3 | 3.3 V power | — | — |
| 2 | 5V | 5 V power | — | — |
| 3 | GPIO2 | I2C1 SDA | SA2 | N8 |
| 4 | 5V | 5 V power | — | — |
| 5 | GPIO3 | I2C1 SCL | SA3 | N2 |
| 6 | GND | Ground | — | — |
| 7 | GPIO4 | GPCLK0 | SA4 | U1 |
| 8 | GPIO14 | UART TXD | SD6 | U20 |
| 9 | GND | Ground | — | — |
| 10 | GPIO15 | UART RXD | SD7 | K16 |
| 11 | GPIO17 | General-purpose I/O | SD9 | M16 |
| 12 | GPIO18 | PCM CLK / PWM0 | SD10 | M17 |
| 13 | GPIO27 | General-purpose I/O | — | K6 |
| 14 | GND | Ground | — | — |
| 15 | GPIO22 | General-purpose I/O | SD14 | M19 |
| 16 | GPIO23 | General-purpose I/O | SD15 | G1 |
| 17 | 3V3 | 3.3 V power | — | — |
| 18 | GPIO24 | General-purpose I/O | SD16 | H3 |
| 19 | GPIO10 | SPI0 MOSI | SD2 | T18 |
| 20 | GND | Ground | — | — |
| 21 | GPIO9 | SPI0 MISO | SD1 | T17 |
| 22 | GPIO25 | General-purpose I/O | SD17 | G8 |
| 23 | GPIO11 | SPI0 SCLK | SD3 | AB24 |
| 24 | GPIO8 | SPI0 CE0 | SD0 | U17 |
| 25 | GND | Ground | — | — |
| 26 | GPIO7 | SPI0 CE1 | SWE_N | J8 |
| 27 | GPIO0 | ID_SD (HAT EEPROM) | SA0 | U4 |
| 28 | GPIO1 | ID_SC (HAT EEPROM) | SA1 | N6 |
| 29 | GPIO5 | GPCLK1 | SA5 | R5 |
| 30 | GND | Ground | — | — |
| 31 | GPIO6 | GPCLK2 | SOE_N | U24 |
| 32 | GPIO12 | PWM0 | SD4 | AC24 |
| 33 | GPIO13 | PWM1 | SD5 | T20 |
| 34 | GND | Ground | — | — |
| 35 | GPIO19 | PCM FS / PWM1 | SD11 | M15 |
| 36 | GPIO16 | General-purpose I/O | SD8 | J16 |
| 37 | GPIO26 | General-purpose I/O | — | C4 |
| 38 | GPIO20 | PCM DIN | SD12 | L15 |
| 39 | GND | Ground | — | — |
| 40 | GPIO21 | PCM DOUT | SD13 | K26 |
Accelerator adapter — optional Raspberry Pi co-processor
The user I/O header above is a general Raspberry-Pi-layout expansion — HATs, the 18-bit SMI bus, the Z80 bus, and user GPIO all live on it as documented. Plugging a Raspberry Pi in as a co-processor — the way the ZX Spectrum Next uses a Pi Zero "accelerator" — is a purist/enthusiast option, not a normal-use feature: the Ant64 already has a built-in companion computer (DeMon, the CM5), so an external Pi is a bonus, not the primary compute path.
To keep the base header general, Pi-accelerator support lives inside the add-on module — a small adapter or carrier board — not on the mainboard connector. That confines every accelerator-specific quirk — connector orientation, the 3.3 V cut, Pi-tuned power protection — to a cheap, revisable board, and leaves the mainboard header fully available for HAT / SMI / Z80 / user-GPIO use.
Module options
The socket is a fixed contract — a standard 40-pin Pi-GPIO header, rear-mounted, with power gated by DeMon (PB6 / PB7). What fills the add-on module is free to vary, provided it presents that same standard header back to the socket:
- Pi Zero 1 / 2 W on the internal adapter (below) — mirrors the Next and reuses its NextPi ecosystem.
- A Compute Module (CM4/CM5, or a CM4-form module) on a small carrier PCB inside the module — the carrier breaks the CM's GPIO out to the same standard 40-pin footprint, so it looks identical to the socket. This is usually less bulky than a full Pi 4/5 in a box, brings out no port cluster, and reuses the CM know-how the Ant64 already has from DeMon; the orientation question softens too, since a carrier routes GPIO deliberately rather than mating two fixed headers.
Both are modest-current, internal, GPIO-only co-processors (≈0.2–0.5 A for a Zero; a CM similar at idle, more under load) — comfortably within the switched 5 V path, so the socket contract and DeMon power control are identical either way.
What the adapter passes, cuts, and protects
| Signal class | Handling across the adapter |
|---|---|
| GPIO0–27 | Straight through, GPIOx ↔ GPIOx. Both sides are 3.3 V logic; direction is software-defined on the FPGA and on the Pi, exactly as the Next does it. Add ~33–100 Ω series resistors per line. |
| GND (8 pins) | Straight through — signal and power return. |
| 5 V (pins 2, 4) | Ant64 → Pi through a current-limited load switch / eFuse (soft-start, current limit, reverse-current block), enabled by DeMon's I/O expander (MCP23017 PB7) — off until the system sequences it up. |
| 3.3 V (pins 1, 17) | Not connected. The Pi regulates its own 3.3 V from the 5 V feed; leaving these open stops the Ant64's 3.3 V rail meeting the Pi's regulator output. |
Physical pin order. Electrically the map is 1-to-1 by GPIO number, but the physical pin positions must match how a Next-style accelerator mounts — its Pi carries a female header on its underside and sits inverted over the host, so the position order is not necessarily a straight pass-through. Take the exact position translation from the ZX Spectrum Next's published Accelerator header pinout and verify it against the target Pi's inverted mount before committing the shim layout; do not assume a plain 1:1 physical pass-through. Note too that the base header is itself rear-mounted (Pi-400/500 orientation — see the header section), so the shim has two orientation factors to reconcile: the header's rear-facing hand and the accelerator Pi's inverted mount.
Power protection (why the shim, and the mainboard)
- Back-feed on 5 V. The Pi's header 5 V pins connect straight to its 5 V rail with no input protection (the Pi's fuse/ideal-diode is only on its USB input). The load switch above blocks the Pi back-feeding the Ant64 (e.g. if a user also plugs USB power into the Pi) and trips on a Pi fault instead of sagging the board rail.
- Phantom-powering through GPIO. Driving a GPIO high into a Pi whose 3.3 V rail is down leaks current through the Pi's ESD clamps into its rail (possible latch-up). Mitigate with the series resistors above and, ideally, an output-enable-gated buffer/translator held disabled until the Pi's 3.3 V is up. Sequence that across the two supervisors: DeMon enables 5 V (expander PB7), the Pi's 3.3 V comes up, and only then does FireStorm drive the header GPIO — coordinated over the DeMon↔FireStorm ready/done lines and QSPI channel.
- Mainboard supplies. The header's 3.3 V and 5 V are switched, current-limited rails (load switch / eFuse) enabled by DeMon's I/O expander — PB6 = 3.3 V, PB7 = 5 V — defaulting off until DeMon powers them up. That gives current limiting and reverse-block protection for any HAT or a shorted header, not just the accelerator, and lets DeMon gate header power independent of FPGA state. Keep the switched header-pin 3.3 V separate from the 3.3 V powering the level translators, so cutting HAT power doesn't disable the FPGA's own GPIO / SMI / Z80 use of the header.
Packaging — rear-plug accelerator module
Because the header is rear-mounted and outward-facing (above), the whole accelerator — the adapter or carrier board plus its Pi or CM — can be a sealed rear-plug module that clips onto the back of the case like a dock or an oversized cartridge. Every awkward detail (the orientation flip, the 3.3 V cut, the series resistors, the Pi-specific load switch) is resolved inside the module, so the mainboard header stays fully general and the accelerator is a clean optional accessory.
Design intent for the enclosure:
- The module hosts its own load switch. Size the eFuse / load switch (soft-start, current limit, reverse-current block) to the module's Pi or CM. The mainboard just presents the raw switched 5 V — still
PB7-gated by DeMon for the coarse enable, power sequencing and header-short protection — plus the GPIO; it needn't know whether the module holds a Pi Zero or a CM, because the module owns its own tailored protection. - Key the connector. Once the shim is wired and boxed, a keyed/shrouded connector means the module can seat only one way — which retires the "two orientation factors" concern entirely for the user. Key it deliberately, since the header's rear-facing (reversed) hand makes a wrong-way insert plausible otherwise.
- Take the mechanical load off the pins. A boxed module cantilevered off a single 40-pin connector has mass and leverage, and the contacts must not carry it. Plan retention — a clip, a thumbscrew, or a shroud/rails the module slides into and seats against the case.
- Sealed, GPIO-only — thermals stay modest. Whether the module holds a Pi Zero on the adapter or a CM on a carrier, it's an internal co-processor that talks only over the header GPIO, so the box can be sealed with no ports to bring out. A Pi Zero runs happily passive; a CM under sustained load wants a small heatspreader and a thermal path to the case — but neither needs the airflow a boxed full Pi would.