Table of Contents | ||||
---|---|---|---|---|
|
Figure 1:
List of figures
Figure 2: SPW interface internal scheme
Table 1:
List of tables
Table 2: IP SPW pads occupation
Introduction
This document is intended to help user to configure and use the Serializer/ Deserializer and Clock Recovery SpaceWire IP provided by NanoXplore (file IP_SPW_BANK.vhd).
...
Note
This IP does not implement the full SpaceWire CODEC.
All All the contents of this document are protected by copyright law. They may not be disclosed to third parties or copied or duplicated in any form without the written consent of NanoXplore.
For any question, please contact NanoXplore team support@nanoxplore.com.
Acronyms
Acronym | Definition |
DES | Deserializer |
DIV | Divider |
FPGA | Field Programmable Gate Array |
IO | InputOutput |
IP | Intellectual Property |
LSB | Less Significant Bit |
RX | Receiver |
SER | Serializer |
SPW | SpaceWire |
TX | Transmitter |
WFG | WaveForm Generator |
Anchor | ||||
---|---|---|---|---|
|
Description
The IP_SPW_BANK can be instantiated for configuring SpaceWire protocol above a NG-Medium complex IO Bank.
The location of the IO Bank must be specified in the instantiation using the ‘bank’ bank
generic parameter. The IP instantiates some elements in the FPGA and some in the specified bank:
2 WFG in FPGA
17 Pads in specified bank
The Figure 1 following figure represents an overview of the IP, including the two SpaceWire interfaces and the different inputs and outputs of the IP.
The input and output differential lines (DI
, SI
, DO
, SO
) are represented as an unique signal in the IP. Physically, you will have to connect 2 pads as these lines are differentials.
...
The following table presents the matching between IP ports and the NG-Medium IO Bank pads locations. These locations should not be specified with the ‘addPad’ method in Python script: they are already specified inside the IP.
Name | Location |
DO1 | D01P & D01N |
SO1 | D02P & D02N |
DI1 | D03P & D03N |
SI1 | D04P & D04N |
DO2 | D12P & D12N |
SO2 | D13P & D13N |
DI2 | D14P & D14N |
SI2 | D15P & D15N |
(Required) | D10N |
Anchor | ||||
---|---|---|---|---|
|
The following table presents the different generics to be specified in the instantiation of the IP.
Name | Type | Description | Values |
dataSize | Integer | Width of the data packets to be transmitted | 4, 6, 8, 10 |
bank | String | Bank where the SpaceWire IP should be located | IOB2, IOB3, IOB4, IOB5, IOB9, IOB10, IOB11, IOB12 |
voltage | String | Bank voltage | 1.5V, 1.8V, 2.5V |
reference | String | Termination reference of pads | floating,VT |
Anchor | ||||
---|---|---|---|---|
|
For pre synthesis simulation, only ‘dataSize’ dataSize
generic is needed. Other generics are mandatory for synthesis with NXmap.
Finally, Table 4 the following table shows the signals to be connected. All the reset signals are optional, they are forced to ‘0’ by default.
Name | Width | Direction | Description |
DO1 | 1 | Out | DO output line of the SpaceWire |
SO1 | 1 | Out | SO output line of the SpaceWire |
DI1 | 1 | In | DI input line of the SpaceWire |
SI1 | 1 | In | SI input line of the SpaceWire |
RXRST1 | 1 | In | Receiver reset |
RXO1 | 20 | Out | Receiver data out |
RXSCK1 | 1 | Out | Receiver slow clock |
TXRST1 | 1 | In | Transmitter reset |
TXI1 | 10 | In | Transmitter input |
TXFCK1 | 1 | In | Transmitter fast clock |
TXSCK1 | 1 | Out | Transmitter slow clock (generated by IP) |
DO2 | 1 | Out | DO output line of the SpaceWire |
SO2 | 1 | Out | SO output line of the SpaceWire |
DI2 | 1 | In | DI input line of the SpaceWire |
SI2 | 1 | In | SI input line of the SpaceWire |
RXRST2 | 1 | IN | Receiver reset |
RXO2 | 20 | Out | Receiver data out |
RXSCK2 | 1 | Out | Receiver slow clock |
TXRST2 | 1 | In | Transmitter reset |
TXI2 | 10 | In | Transmitter input |
TXFCK2 | 1 | In | Transmitter fast clock |
TXSCK2 | 1 | Out | Transmitter slow clock (generated by IP) |
Anchor | ||||
---|---|---|---|---|
|
The Figure 2 following figure presents a detailed view of each of the two SpaceWire interfaces included in the IP.
...
Anchor | ||||
---|---|---|---|---|
|
...
When set to ‘1’, the RXRST
signal can be used to stop the receiver part. It resets the synchronization between bank clock and fabric clock. It also resets the recovery clock divider to ensure a clean restart when RXRST
is back to ‘0’.
...
'0'.
When RXRST
is set to
...
'1', the value on RXO
output is stable but undefined. It is not set to plain zero.
When set to ‘1’, the TXRST
signal can be used to stop the transmitter part. It resets the synchronization between bank clock and fabric clock. It also resets the TXFCK
divider to ensure a clean restart when TXRST
is back to ‘0’.
...
'0'.
When TXRST
is set to
...
'1', the values on DO
and SO
outputs are forced to
...
'0'. The first word transmitted after a reset is undefined.
Waveforms
TX part
To send data, user has to use the TXI
input bus starting from index 0 to index ‘dataSize-1’.
The Figure 3 following figure presents the lines of the SpaceWire when emitting a message.
The vertical red lines delimits the visible words on DO
& SO
outputs. LSB is sent first.
In this example, dataSize
was set to 6.
Anchor | ||||
---|---|---|---|---|
|
...
The delay between sampling of data by TXSCK
(txOut on Figure 3previous figure) and serialized data on DO
& SO
depends on the initial conditions.
...
To receive data, user has to use the RXO
output bus. Depending on the dataSize
set, there are one or more words available in the bus. It is important to note that the words are not aligned.
The Table 5 and Table 6 two following tables show how 6 bits long words may be organized in the RXO
bus. The length of Past and Future offsets cannot be predicted.
...
Future | WORD3 | WORD2 | WORD1 | Past |
Anchor | ||||
---|---|---|---|---|
|
In most cases, the length of ‘Future’ + ‘Past’ is equal to 8 and thus there are 12 bits available for words which corresponds to 2 complete words. The repartition of the 8 bits between Past and Future parts cannot be predicted.
...
Future | WORD2 | WORD1 | Past |
Anchor | ||||
---|---|---|---|---|
|
For a dataSize
of 6, the minimum number of bits to consider to be sure to retrieve one word is 11 bits. The Figure 4 below presents the lines of the SpaceWire when receiving a message.
...
Again, the vertical red lines are just delimiting the visible words on the DI
& SI
lines.
Anchor | ||||
---|---|---|---|---|
|
...
The provided example ‘SpaceWire’ is a small design which shows how to instantiate an IP_SPW_BANK IP. It includes a PLL and a WFG for the clock generation.
The generic dataSize
is set to 6, and the bank
generic to “IOB12” in order to use J4 & J5 SpaceWire connectors of the NG-Medium evaluation kit board v2.
...
Moreover, the offset will also be different for a bitstreamed design tested on evaluation kit board. So do not worry if the switch number 1 on the board does not change the state of the led1 but of another led.