General Purpose Interface Adapter (GPIA)

Register Map

Byte Offset Name R/W Purpose
0 GPIP R 16-bit input port
2 GPOP RW 16-bit output port

NOTE. You must write to GPOP using 16-bit writes. If you use 8-bit writes, the intended byte will be set correctly; however the other half of the halfword will be changed to an unpredictable value. It should be safe to read from the GPIA using byte reads, however. No plans exists to change this behavior for the Kestrel-2DX.

Input Port Map

Bit Name Purpose
15 VSYNC Current state of the vertical sync pulse to the monitor. Active low.
14 HSYNC Current state of the horizontal sync pulse to the monitor. Active low.
13-3 unassigned
2 SPI_MISO SPI receive data. Active high.
1 SD_WP SD Card Write Protected. Active low. (I think.)
0 SD_CD SD Card Detected. Active low.

Output Port Map

Bit Name Purpose
15-14 MGIAPG Selects one of three 16KB pages from IPL RAM from which the MGIA fetches video data.
13 unassigned
12-9 LEDANO LED anode selects. Bit 12 is the left-most LED; bit 9 is the right-most. Active high.
8-1 LEDCTH LED cathodes. Bit 8 is the A segment, bit 1 is the DP segment. Active high.
0 unassigned

The following bits serve double-duty:

Bit Name Purpose
12 SPI_LED_3 LED enable for SPI unit 3. Active high.
11 SPI_LED_2 LED enable for SPI unit 2. Active high.
10 SPI_LED_1 LED enable for SPI unit 1. Active high.
9 SPI_LED_0 LED enable for SPI unit 0. Active high.
3 SPI_CLK Clock to the SPI slave. Active high.
2 SPI_MOSI Data output to SPI slave. Active high.
1 SPI_SS SPI slave select output, unit 0. Active low.

Note that up to 4 attach SPI devices can be addressed by this GPIA core. Bootstrap software identifies them as units 0 through 3. Currently, only unit 0 is supported. Units 1..3 will illuminate different activity LEDs, but the SPI traffic will continue to route to unit 0. This will change eventually, so don't depend on this behavior.


Value Video Memory Range
00 $10000-$13FFF
01 $14000-$17FFF
10 $18000-$1BFFF
11 $1C000-$1FFFF (not implemented in Nexys-2 design)