You are on page 1of 11

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/237298089

The SpaceWire Onboard Network for Spacecraft

Article · May 2004


DOI: 10.2514/6.2004-592-388

CITATION READS
1 2,250

1 author:

Steve Parkes
STAR-Dundee Ltd
109 PUBLICATIONS   516 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

SpaceFibre View project

All content following this page was uploaded by Steve Parkes on 28 May 2015.

The user has requested enhancement of the downloaded file.


The SpaceWire Onboard Network for Spacecraft

S.M. Parkes1, C. McClements1

1
University of Dundee, Dundee, DD1 4HN, Scotland, UK.

SpaceWire is a communications network for use onboard spacecraft. It is designed to connect high data-
rate sensors, large solid-state memories, processing units and the downlink telemetry subsystem
providing an integrated onboard, data-handling network. SpaceWire links are serial, high-speed (2
Mbits/sec to 400 Mbits/sec), bi-directional, full-duplex, point-to-point data links which connect together
SpaceWire equipment. Application information is sent along a SpaceWire link in discrete packets.
Control and time information can also be sent along SpaceWire links. SpaceWire is defined in the
European Cooperation for Space Standardization ECSS-E50-12A standard [1], [2] and is being used on
ESA and NASA missions.

A SpaceWire network comprises SpaceWire links, nodes and routers. The nodes are the functional units
that wish to use the onboard communication services of the SpaceWire network and are fitted with one or
more SpaceWire interfaces. These units are connected together directly using point-to-point SpaceWire
links or indirectly via SpaceWire routers. SpaceWire interfaces, links and routers are the three elements
of a SpaceWire network. A SpaceWire routing switch is able to connect together many nodes, providing a
means of routing packets between the nodes connected to it. A SpaceWire routing switch comprises a
number of SpaceWire link interfaces and a routing matrix. The routing matrix enables packets arriving at
one link interface to be transferred to and sent out of another link interface on the routing switch.

A radiation tolerant routing switch is currently being developed which is fully SpaceWire compliant and
has the following facilities:

• Eight SpaceWire ports.

• Two external parallel ports, each comprising an input FIFO and an output FIFO.

• An internal configuration port accessible via the crossbar switch from the external parallel port or the
SpaceWire ports.

• A routing table accessible via the configuration port which holds the logical address to output port
mapping.

This paper provides an introduction to SpaceWire and the SpaceWire standard. It aims to build an
understanding of the operation of a SpaceWire link by describing each protocol level in turn. The simple
and flexible packet structure, link initialization and flow control, the encoding of data and control

1 of 10
characters, the signalling technique, and the physical cable and connector used by SpaceWire are all
explained. The SpaceWire Router is then introduced and path and logical addressing schemes
explained. The architecture of the router ASIC is described and the development schedule and expected
performance is provided.

SpaceWire Standard
SpaceWire was developed to fill a need for a high-speed data-link for space applications. Many
commercial links are overly complex for space applications often having a rich set of features which
increase the cost (gate count, complexity, power) of implementation. A simple high-speed link was
required which could be readily implemented in a range of ASIC and FPGA technologies and which
would be able to carry higher-level protocols when necessary.

SpaceWire is based on two existing standards IEEE-1355 [3] and Low Voltage Differential Signalling
(LVDS) [4]. The LVDS signalling was added to IEEE-1355 and several problems with IEEE-1355 resolved
to form the SpaceWire standard. Connectors and cable suitable for space application were defined.
Network and router definitions were also added to the SpaceWire standard.

The main features of SpaceWire are as follows:

• High speed – able to operate at over 200 Mbits/s over distances of up to 10 m (slower data rates
can be used over longer distances).

• Full duplex, bi-directional – symmetric links simplify flow control and network construction.

• Simple – readily implemented in a ASIC or FPGA technology

• Low gate count – enabling hardware only implementation for simple systems. Each link interface
requires between 5k and 10k gates.

• Scalable – more links can be added to give more bandwidth where needed.

• Bandwidth sharing – if there is more than one link running between the same two end points then
the total bandwidth of the two links can be shared between all the packets going between those
two end points.

• Fault tolerance – where bandwidth sharing is being used if one of the links fails then the other
link(s) will immediately start to carry all the packets going between the two end points. This
provides a simple means of adding fault tolerance and graceful degradation into a SpaceWire
system.

• Topological freedom – any form of network architecture can be implemented with SpaceWire:
buses, rings, trees, hyper-cubes, etc. There is no limitation to the network topology. Links may be
added where needed to give extra bandwidth or to provide fault tolerance.

2 of 10
• Protocol carrier – can carry higher level protocols for example TCP/IP [5]

• Good EMC performance – through use of LVDS and shielded cables low radiated emissions and
good radiated immunity are achieved.

• Time-Codes – support the distribution of time information across a SpaceWire network [6].

Early versions of SpaceWire have been used on several missions including Mars Express, Rosetta and
STEREO. The SpaceWire standard is now being designed into a wide range of missions including Bepi-
Colombo, Earth Care, SPECTRA, SDO and the James Webb Space Telescope.

Packet Level:

SpaceWire sends information in packets across point-to-point links which may be joined together by
routers to form a network. The packet format is simple comprising the address of the node for which the
packet is intended (destination address), the data (cargo) to be transported to the destination node and
an end of packet marker which separates one packet from the next.

<Destination Address> <Cargo> <End of Packet Marker>

The “Destination Address” is a list of zero or more data characters that represents either the identity code
of the destination node or the path that the packet is to take to get to the destination node. The
destination address is used by SpaceWire routers [7] to direct a packet towards its destination node. Over
a single point-to-point link there is no need to use a destination address.

The “Cargo” is the data to transfer from source to destination. If required higher level protocols, e.g.
TCP/IP [5] can be carried within a SpaceWire packet cargo.

The “End of Packet Marker” is used to indicate the end of a packet. Two types of end of packet marker
are defined:

• EOP normal end_of_packet marker - indicates end of packet

• EEP error end_of_packet marker - indicates that the packet has been terminated prematurely due to
a link error.

Since there is no start_of_packet marker, the first data character following an end_of_packet marker
(either EOP or EEP) is regarded as the start of the next packet.

Exchange Level:

The exchange level is responsible for making and maintaining a connection across a SpaceWire point-to-
point link, which is illustrated in Fig. 1. The host systems that wish to communicate over the SpaceWire
link are connected to the link via a SpaceWire interface, which comprises a SpaceWire transmitter and
receiver. SpaceWire links are bi-directional, full-duplex so the SpaceWire transmitter at one end of the

3 of 10
link is connected to the SpaceWire receiver at the other end of the link and vice versa. Once a connection
is made SpaceWire packets can flow in both directions between the two host systems.

SpaceWire SpaceWire
Interface Interface
HOST
HOST TRANSMITTER SpaceWire RECEIVER HOST
HOST
SYSTEM
SYSTEM Link SYSTEM
SYSTEM
END
ENDAA END
ENDBB
RECEIVER TRANSMITTER

Figure 1: SpaceWire Point-To-Point Link

The SpaceWire exchange level provides the following services: initialisation, flow-control and error-
handling. Link Initialisation is illustrated in Fig. 2.

1. Sends NULLs to 2. Null received


open connection
6. FCT received,
5. Send FCT
connection made

SpaceWire SpaceWire
Interface Interface
HOST
HOST TRANSMITTER RECEIVER HOST
HOST
SYSTEM
SYSTEM SYSTEM
SYSTEM
END
ENDAA END
ENDBB
RECEIVER TRANSMITTER

4. Null received
3. Send Nulls and
7. FCT received, FCTs in reply
connection made

Figure 2: Link Initialisation

There are two characters that are used to perform link initialisation: the Null (idle) character which is sent
whenever the link has nothing else to send keeping the link active, and the FCT (flow control token)
character which is used to perform link flow control across the point-to-point link.

Following reset the link transmitter is held in a reset state until it is instructed to start and attempt to make
a connection with the link interface at the other end of the link. The following steps then occur to make a
connection (numbers correspond to the numbered steps in Fig. 2):

1. Once instructed to start the transmitter will start to send out Null (idle) characters.
2. The other end of the link will then receive a Null.
3. Assuming that the SpaceWire interface at end B is in the “Autostart” mode, as soon as it receives a
Null it will send out at least one Null, followed by one or more FCTs, followed by continuous Nulls.
4. End A of the link will receive a Null.
5. Having received a Null end A will send out an FCT.
6. End B receives this FCT and is then connected and ready to send data.
7. End A receives an FCT sent by End B and is connected and ready to send data.

4 of 10
Each end of the link sends NULLs, waits to receive a NULL, then sends FCTs and waits to receive an
FCT. Since a link interface cannot send FCTs until it has received a NULL, receipt of one or more NULLs
followed by receipt of an FCT means that the other end of the link has received NULLs successfully and
that full connection has been achieved.

There are effectively three possible modes for a SpaceWire interface: Disabled, Started and Autostart.
“Disabled” means that it will not attempt to make a connection nor will it respond if the other end of the
link tries to make a connection. “Started” means that it will continually try to make a connection, sending
out burst of Nulls for 12.8 us and then going quiet for 19.2 us. “Autostart” means that it will not initiate
connection establishment, but will respond if the other end tries to make a connection.

Once a connection has been established then Nulls are sent by both ends to keep the connection active
and FCTs are used to manage the flow of data across the link. A transmitter is only allowed to transmit N-
Chars (normal characters, which are data characters, EOP or EEP) if there is space for them in the host
system receive buffer at the other end of the link. The host system indicates that there is space for eight
more N-Chars by requesting the link transmitter to send a flow control token (FCT). The FCT is received
at the other end of the link (end B) enabling the transmitter at end B to send up to eight more N-Chars. If
there is more room in the host receive buffer then multiple FCTs can be sent, one for every eight spaces
in the receive buffer. If multiple FCTs are received then it means that there is a corresponding amount of
space available in the receiver buffer e.g. four FCTs means that there is room for 32 N-Chars. Link flow
control is illustrated in Fig. 3.

1. Sends NULLs
to maintain
2. Host System connection
4. FCT received
indicates it has 3. Transmitter enabling 8 more
room for 8 more sends FCT to chars to be sent
chars request 8 more
chars
SpaceWire SpaceWire
Interface Interface
HOST
HOST TRANSMITTER RECEIVER HOST
HOST
SYSTEM
SYSTEM SYSTEM
SYSTEM
END
ENDAA END
ENDBB
RECEIVER TRANSMITTER

6. N-Chars
received and 5. Transmitter
passed on to sends N-chars
host system from host

Figure 3: Link Flow Control

If an error, for example a parity error or the disconnection of a link, occurs then the SpaceWire receiver
will detect the error. The transmitter will then cease sending any characters including Nulls so that the link
goes quite. The other end of the link will detect the fact that the link has gone quiet as a disconnection
and will stop sending any characters. This “exchange of silence” is used to signal the fact that an error
has occurred to the two ends of the link. The two ends of the link will then wait for a short period of time

5 of 10
(19.2 us) and then attempt to make a connection again. Link disconnection is detected when, following
reception of a data bit, no new data bit is received within a link disconnect timeout window (850 ns). This
puts a lower limit of the data signalling rate on a SpaceWire link of 2 Mbits/s (500 ns plus safety margin).

Character Level:

The character level defines the control characters, data characters and control codes that are used by the
SpaceWire link. They are illustrated in Fig. 4.

D a ta C ha ra cte rs
P 0 X X X X X X X X
0 1 2 3 4 5 6 7
LS B MS B
D ata-C ont rol F lag
P arity B it

C on tro l C ha ra cte rs
P 1 0 0 FCT Fl o w Con tro l T o ken

P 1 0 1 EOP No rmal E nd o f P acke t


P 1 1 0 EEP E rro r En d o f Pa cke t
P 1 1 1 ESC E scap e

C on tro l C od es
P 1 1 1 0 1 0 0 NUL L

P 1 1 1 1 0 T T T T T T T T Tim e -co de
0 1 2 3 4 5 6 7
LS B MS B

Figure 4: SpaceWire Characters and Control Codes

Data characters comprise a data-control flag which is set to zero to indicate that it is a data character, an
8-bit data byte and a parity bit. The control characters are the FCT and two end of packet markers (EOP
and EEP). In addition there is an escape character (ESC) which is used to form longer control codes. Null
is an ESC followed by FCT. A SpaceWire time-code is formed from ESC followed by a data character,
where the data character holds the value of the time code. All characters are sent serially across the
SpaceWire link starting with the parity bit as illustrated by the arrows in Fig. 4.

Signal Level:

SpaceWire uses Data-Strobe (DS) encoding which encodes the transmission clock with the data into
Data and Strobe so that the clock can be recovered by simply XORing the Data and Strobe lines
together. The data values are transmitted directly and the strobe signal changes state whenever the data
remains constant from one data bit interval to the next. This coding scheme is illustrated in Fig. 5. The
reason for using DS encoding is to improve the skew tolerance to almost 1-bit time, compared to 0.5 bit
time for simple data and clock encoding. A self-clock scheme was not used to avoid the need for phase-
locked loops in the receiver which would complicate the receiver design significantly precluding FPGA
implementation. The DS encoding scheme is also used in the IEEE 1355-1995 [3] and IEEE 1394-1995
(Firewire) standard [8].

6 of 10
D a ta 0 1 0 0 1 1 0 1 1 0

Figure 5: Data-Strobe (DS) Encoding

The data and strobe signals are transmitted differentially using Low Voltage Differential Signalling
(LVDS). A SpaceWire link contains two sets of differential signals, one set transmitting the D and S
signals in one direction and the other set transmitting D and S in the opposite direction. That is a total of
eight wires for each bi-directional link.

Low Voltage Differential Signalling (LVDS) as defined in ANSI/TIA/EIA-644 [4] is specified as the
signalling technique for SpaceWire. LVDS uses balanced signals to provide very high-speed
interconnection using a low voltage swing (350 mV typical). The balanced differential signalling provides
adequate noise margin to enable the use of low voltages in practical systems. The low voltage swing
results in relatively low power consumption at high speed. LVDS is appropriate for connections between
chips on a board, boards in a unit, and unit to unit interconnections over distances of 10 m or more [9].

Physical Level:

SpaceWire is designed to run over cables or PCB tracks and to meet the EMC specifications of typical
spacecraft. The Physical level of the SpaceWire standard covers cables, connectors, cable assemblies
and printed circuit board tracks.

The SpaceWire cable comprises four twisted pair wires with a separate shield around each twisted pair
and an overall shield. The twisted pairs have a differential impedance of 100 ohms and closely matched
cable lengths to give low signal skew. The individual shields around each twisted pair help provide the
continuous 100 ohms differential impedance and also provide shielding against magnetic fields, which
are produced by currents flowing though wires. The outer shield provides a return path for any
(unwanted) common mode signal and also provides protection against interference from electric fields.

The SpaceWire connector is a nine pin micro-miniature D-type which is available qualified for space use.
It has eight signal contacts for the four differential signal pairs in SpaceWire and a screen termination
contact for the inner shields. The outer shield of the cable is connected to the connector backshell.

SpaceWire can also be run over printed circuit boards (PCBs) including backplanes. The PCB tracks
must have 100 ohm differential impedance. They should also be laid out so that the data and strobe pair
tracks are close to the same length to avoid unnecessary skew and should be separated from other
signal tracks.

7 of 10
SpaceWire Router
The SpaceWire links provide point-to-point connections between two end points. To construct networks
using these links it is necessary to use SpaceWire routers [7] which are connected to several SpaceWire
links. When a packet arrives at a router its destination address is examined and the necessary port
(SpaceWire interface on a router) that it has to be sent out of to forward it towards its final destination is
determined. The packet is then router out of this port. Depending on the size and form of the network a
packet may traverse several routers on its way to its destination. There can be up to 31 ports on a
SpaceWire router, which are numbered 1 to 31. SpaceWire routers recognise two forms of destination
address:

Path Address: The path address describes the path through the network. There is one destination
address byte for each router that has to be traversed by the packet. Each of these bytes contains the port
number that a packet has to be routed through. So the first byte of the destination address contains the
output port number for the first router. This byte is stripped off when the packet passes through the router
to reveal the next byte in the destination address which will determine the output port for a possible
second router. The destination address bytes in a path address are all in the range 1 to 31 i.e. are valid
output port numbers.

Logical Address: A logical address represents the identity of the destination node. Logical addresses
take on the values 32 to 255 so are distinct from path address values. Normally there is only one logical
address byte forming the destination address, allowing up to 224 destination nodes on a SpaceWire
network. Inside each router is a routing table which maps each logical address to an output port. The
logical address is not stripped off as it will be needed by subsequent routers that the packet has to
traverse. The routing tables are configured by network management software and may be dynamically
reconfigured to take into account failures in the network or new nodes or routers being added to the
network (e.g. powered up at particular times during a mission).

The University of Dundee have developed generic SpaceWire router IP that can be implemented in a
range of different technologies (FPGA and ASIC) [7]. The number of SpaceWire ports and external ports
along with various other characteristics are controlled by VHDL Generics, allowing the Router IP to be
customised to particular applications [10], [11].

The SpaceWire Router design is being implemented in a radiation tolerant ASIC by the University of
Dundee, Austrian Aerospace and Astrium GmbH. This router chip will have eight SpaceWire ports with
LVDS drivers/receivers on-chip and two external ports. It will be implemented in a Quad Flat Pack (QFP)
package [7] and be available early in 2005. It is expected to operate at a data rate of up to 200 Mbits/s.
The architecture of the SpaceWire router ASIC is illustrated in Fig. 6.

8 of 10
Control
Logic Routing
Table
SpaceWire
Port 1
SpaceWire
Port 2 Status/Error
SpaceWire Registers
Port 3 Status
SpaceWire Outputs
Port 4
SpaceWire SpaceWire Control
Interfaces Port 5 Registers
SpaceWire
Port 6 Non-blocking
SpaceWire Crossbar
Port 7 Switch Conf iguration
SpaceWire Port
Port 8

External Input FIFO


Input/Output Output FIF O Time-Code
External Port Time Inputs/
Counter Outputs
External Input FIFO
Input/Output Output FIF O
External Port

Figure 6: SpaceWire Router ASIC Architecture

There are eight SpaceWire ports, two external ports and an internal configuration port in the SpaceWire
router. A low latency, worm-hole routing, non-blocking, crossbar switch enables packets arriving at any
SpaceWire port, external port or generated in the configuration port to be directed out of any other
SpaceWire or external port or to be routed to the configuration port. The SpaceWire ports are fully
compliant with the SpaceWire standard [1] providing high-speed, bi-directional communications. The
external ports each comprise an input FIFO and an output FIFO and can receive and send data
characters and end of packet markers. A time-code port and a time-counter facilitate the propagation of
time-codes [6].

The configuration port is accessible via any of the SpaceWire or external ports. It contains registers which
control the operation of the SpaceWire ports, external ports and the crossbar switch. The configuration
port holds status registers for the various ports and the switch. These registers can be read using a
configuration read command to determine the status of the router and to access error information. Status
and error information can also be selected for output on several status pins. The routing table is accessed
via the configuration port. The logical address port mappings and priority bits can be set in the routing
table. The routing table is used to control group adaptive routing and priority arbitration in the crossbar
switch.

Conclusions
SpaceWire has been designed specifically for space applications building on two commercial standards
[3][4]. It is being designed into several space missions across Europe and the USA. This paper has given

9 of 10
an overview of the SpaceWire standard and introduced the SpaceWire Router that is being developed for
ESA.

Acknowledgements
The SpaceWire standard resulted from the work of the SpaceWire working group comprising many
people across many countries, companies and organisations the authors are indebted to them for their
continuous encouragement, participation and essential comments and corrections to the SpaceWire
standard. The authors would like to acknowledge the support of ESA for the High-Speed Interconnect
and SpaceWire Router contracts under which the SpaceWire router ASIC is being developed. Specific
thanks are due to Pierre Fabry and Agustin Leon the ESA study technical managers for these contracts
and to Philippe Armbruster for overall leadership in this area.

References
[1] S.M. Parkes, Standard ECSS-E-50-12A, SpaceWire, Links, Nodes, Routers and Networks, European
Cooperation for Space Standardization, Noordwijk, The Netherlands, (2003).

[2] J. Rosello, SpaceWire Web Page, ESA, http://www.estec.esa.nl/tech/spacewire/ (2002).

[3] IEEE Standard for Heterogeneous Interconnect (HIC) (Low-Cost, Low-Latency Scalable Serial
Interconnect for Parallel System Construction), IEEE Standard 1355-1995 (1996).

[4] Tele-communications Industry Association, Electrical Characteristics of Low Voltage Differential


Signaling (LVDS) Interface Circuits, Standard ANSI/TIA/EIA-644 1995 (1996).

[5] S. Mills and S.M. Parkes, TCP/IP Over SpaceWire, DASIA, Prague, (2003).

[6] S.M. Parkes, The Operation and Uses of the SpaceWire Time-Code, International SpaceWire
Seminar, ESTEC Noordwijk, The Netherlands (2003).

[7] S.M. Parkes, C. McClements, G. Kempf, S. Fischer, S., and A. Leon, SpaceWire Router, International
SpaceWire Seminar, ESTEC Noordwijk, The Netherlands (2003).

[8] IEEE, “IEEE Standard for a High Performance Serial Bus”, IEEE Standard 1394-1995, (1996).

[9] S.M. Parkes, High-Speed, Low-Power, Excellent EMC: LVDS for On-Board Data Handling, Proc. 6th
International Workshop on Digital Signal Processing Techniques for Space Applications, ESTEC (1998).

[10] S.M. Parkes, C. McClements, M. and Dunstan, SpaceWire Router Technology makes ASIC
Interfacing Easy, International SpaceWire Seminar, ESTEC Noordwijk, The Netherlands (2003).

[11] S.M. Parkes, C. McClements, I. Martin, S. Mills, and R. Manston, SpaceWire Development and Test
Equipment, International SpaceWire Seminar, ESTEC Noordwijk, The Netherlands (2003).

10 of 10

View publication stats

You might also like