The ZXUNO expansion port is mostly undefined at this stage. That is: most of the pins have not a definitive assignment, as this depends upon which device has been plugged in the connector, which in turn defines which core you should use with it. That particular core would redefine the signals it needs to talk with that device.
That said, you must guess that each core comes with its own pinout for the expansion port. To help with that, we have come with a proposed solution, which it is yet to be implemented in the FPGA core, but the idea is this:
- Besides power pins, there will be a pin labelled as ID. This pin carries information from a serial 1-wire EEPROM chip which will be present in every device. This EEPROM will tell the core, and hence BIOS, which device has been plugged in (and which pins it will use from the expansion connector). It has currently been mapped to pin P56.
- The core (actually, the BIOS), will be able to interrogate this pin to find out how much and which devices are present (the 1-wire protocol allows more than one device to share the data pin)
- If the BIOS can identify the device (that is, if the core has been designed to work with that particular device) it will program the required expansion port pins to talk with the device and the setup will be omplete.
- If the BIOS cannot identify the device, it will keep the expansion port pins floating.
Up to this date, the only assingments performed to the expansion port are those needed for the wifi module and the MIDI module (which can be used at the same time). You can check them by reading the .UCF file at the cores/exp27/zxuno_v4 directory of the repository. The relevant section of such UCF is here:
Código: Seleccionar todo
# MIDI
NET "midi_out" LOC="P43" | IOSTANDARD = LVCMOS33;
NET "clkbd" LOC="P50" | IOSTANDARD = LVCMOS33 | PULLUP;
NET "wsbd" LOC="P57" | IOSTANDARD = LVCMOS33 | PULLUP;
NET "dabd" LOC="P46" | IOSTANDARD = LVCMOS33 | PULLUP;
# UART
NET "uart_tx" LOC="P16" | IOSTANDARD = LVCMOS33;
NET "uart_rx" LOC="P12" | IOSTANDARD = LVCMOS33 | PULLUP;
NET "uart_rts" LOC="P22" | IOSTANDARD = LVCMOS33;
NET "uart_reset" LOC="P26" | IOSTANDARD = LVCMOS33 | PULLUP;