Hi. Let me take a stab at this.
You will need 2 key documents for this review:
1) StartKit Hardware Manual
https://www.xmos.com/download/private/s ... 1.3%29.pdf
page 4
2) WIFI SliceKit Schematic download:
https://www.xmos.com/support/boards?product=15833
* last download URL on this webpage contains the schematics
Using the schematic for the WIFI Slicekit, review the PCI Express fingers that allow interfacing with this circuit board. The pinout.rst file (PIN column) offers the relevant and juicy details.
Code: Select all
XA-SK-WIFI-TIWISL Functional Pins
+++++++++++++++++++++++++++++++++
This table shows the port mapping for each of the Slice Card Signal IO, and the Slicekit Slot connector pin it is located on.
=================== ========= ======== ======== ======== ====== ===============================
Function STAR TRIANGLE SQUARE CIRCLE PIN Description
=================== ========= ======== ======== ======== ====== ===============================
SPI_DATAIN 1C 1K 1C 1K B10 SPI Interface to WIFI module
SPI_CLK 1B 1J 1B 1J A8 SPI Interface to WIFI module
SPI_DATAOUT 1G 1I 1G 1I B15 SPI Interface to WIFI module
SPI_IRQ# 1L 1F 1L 1F A15 Interrupt from WIFI module
SPI_CS# 4A0 4E0 4A0 4E0 B6 WIFI Module Chip Select
PWR_EN 4A1 4E1 4A1 4E1 B7 WIFI Module Power Enable
4A2 4E2 4A2 4E2 A6
4A3 4E3 4A3 4E3 A7
LED0 4B0 4F0 4B0 4F0 B9 User LED
LED1 4B1 4F1 4B1 4F1 B11 User LED
4B2 4F2 4B2 4F2 A9
4B3 4F3 4B3 4F3 A11
8B0 8D0 8B0 8D0 B12
8B1 8D1 8B1 8D1 B13
8B2 8D2 8B2 8D2 B17
8B3 8D3 8B3 8D3 B18
=================== ========= ======== ======== ======== ====== ===============================
This document states that if you seat the WIFI slice board into the STAR slot of the XMOS SLICEKIT (not StartKit), then:
SPI_DATAIN will map to 1C port pin. The 1 prefix clarifies that the interface port is "1 Bit" in width.
and so on till we reach:
SPI_CS# which will map to 4A0. The 4 prefix clarifies that the interface port is a 4 bit port and this pin will be a weight of bit # 0 if seated in the STAR slot.
If this PCB is moved to the TRIANGLE slot then the next column of values will apply and your code must match the mappings else your will be "shooting blanks" and not chatting with the hardware.
Now the StartKit details....
Trace where each PCI Express pins from the WIFI Slice board land on the StartKit PCIe slot map shown on page 4.
Code: Select all
(SPI_DATAIN) B10 on the PCIe (male finger) -> will map to StartKit slot pin P1K0 (X0D34 on CPU).
* port is 1 Bit wide and you can use Bit 0 of Port K to communicate with this pin
(SPI_CLK) A8 on the PCIe (male finger) -> will map to StartKit slot pin P1J0 (X0D25 on CPU).
* port is 1 Bit wide and you can use Bit 0 of Port J to communicate with this pin
(SPI_DATAOUT) B15 on the PCIe (male finger) -> will map to StartKit slot pin P1I0 (X0D24 on CPU).
* port is 1 Bit wide and you can use Bit 0 of Port I to communicate with this pin
(SPI_IRQ#) A15 on the PCIe (male finger) -> will map to StartKit slot pin P1L0 (X0D35 on CPU).
* port is 1 Bit wide and you can use Bit 0 of Port L to communicate with this pin
(SPI_CS#) B6 on the PCIe (male finger) -> will map to StartKit slot pin P4C0 (X0D14 on CPU).
* port is 4 Bit wide and you can use Bit 0 of Port C to communicate with this pin
NB: Being a 4 bit wide port, any R/W with this port will affect all 4 bits of port C
(PWR_EN) B7 on the PCIe (male finger) -> will map to StartKit slot pin P4C1 (X0D15 on CPU).
* port is 4 Bit wide and you can use Bit 1 of Port C to communicate with this pin
NB: Being a 4 bit wide port, any R/W with this port will affect all 4 bits of port C
Pins A6 (P4C2) & A7 (P4C3) on the PCIe fingers for this WIFI Slice board are NOT USED.
This means that P4C2 and P4C3 bit values are no care for this WIFI Slice coding.
(LED0) B9 on the PCIe (male finger) -> will map to StartKit slot pin P4D0 (X0D16 on CPU).
* port is 4 Bit wide and you can use Bit 0 of Port D to communicate with this pin
NB: Being a 4 bit wide port, any R/W with this port will affect all 4 bits of port C
(LED1) B11 on the PCIe (male finger) -> will map to StartKit slot pin P4D1 (X0D17 on CPU).
* port is 4 Bit wide and you can use Bit 1 of Port D to communicate with this pin
NB: Being a 4 bit wide port, any R/W with this port will affect all 4 bits of port C
Pins A9 (P4D2) & A11 (P4D3) on the PCIe fingers for this WIFI Slice board are NOT USED.
This means that P4D2 and P4D3 bit values are no care for this WIFI Slice coding.
Next, download the example code for the WIFI Slice board use and alter the source code to map to those for the StartKit. Alter the target board to be the StartKit as well for the makefile.
These changes are informing the source code that the respective new port mappings on the CPU will allow for communication with the WIFI Slice board.
Recommend to:
a) make the relevant changes to target the StartKit and compile and test. Should work without pain.
b) If no go, then focus to blink the 2 x LEDs on board the WIFI Slice board to be confident that you are chatting with the proper hardware mappings.
The XMOS CPUs are large, fast GPIO pins which can be shuffled around to suit most of your needs. You are not tied down to specific port pins for use of the WIFI Slice board as shown in the SliceKit.
It is very easy to lose your way with the many XMOS mappings and translations but is also fun and hopefully rewarding when it is done right. Hope this helps.
Kumar
PS: The WIFI Slice web page on the XMOS website contains a link to the Ethernet Slice board which is incorrect.
sliceKIT daughtercard port mappings
* do not see the need for the XA-SK-ETH100 Ethernet Slice board document for the WIFI Slice board