# SpaceWire

SpaceWire is a spacecraft communication network based in part on the IEEE 1355 standard of communications. It is coordinated by the European Space Agency (ESA) in collaboration with international space agencies including NASA, JAXA, and RKA.
Within a SpaceWire network the nodes are connected through low-cost, low-latency, full-duplex, point-to-point serial links, and packet switching wormhole routing routers.

## Architecture
### Physical layer

SpaceWire's modulation and data formats generally follow the data strobe encoding - differential ended signaling (DS-DE) part of the IEEE Std 1355-1995. SpaceWire utilizes asynchronous communication and allows speeds between 2 Mbit/s and 200 Mbit/s, with initial signalling rate of 10 Mbit/s. DS-DE is well-favored because it describes modulation, bit formats, routing, flow control, and error detection in hardware, with little need for software. SpaceWire also has very low error rates, deterministic system behavior, and relatively simple digital electronics. SpaceWire replaced old PECL differential drivers in the physical layer of IEEE 1355 DS-DE by low-voltage differential signaling (LVDS). SpaceWire also proposes the use of space-qualified 9-pin connectors.
SpaceWire and IEEE 1355 DS-DE allows for a wider set of speeds for data transmission, and some new features for automatic failover. The fail-over features let data find alternate routes, so a spacecraft can have multiple data buses, and be made fault-tolerant. SpaceWire also allows the propagation of time interrupts over SpaceWire links, eliminating the need for separate time discretes.

### Link layer

Each transferred character starts with a parity bit and a data-control flag bit. If data-control flag is a 0-bit, an 8-bit LSB character follows. Otherwise one of the control codes, including end of packet (EOP).

### Network layer

The network data frames look as follows:
| Address byte | Address byte... | Protocol ID | Frame data |
One or more address bytes are used for the routing. Addresses are either physical ones (0–31), or logical ones. The difference is that the physical addresses are deleted from the frame header during routing - which is used for hop-based routing (based on path specified in the frame itself). Logical addresses may be deleted as well, depending on the router configuration.

### Interconnection

The hardware devices may be connected either directly, or via a SpaceWire router. In the former case, usually pairs of devices are used to guarantee a fail-safe operation, which is handled by the software.
A SpaceWire router is usually a crossbar switch-type device, operating in wormhole switching mode. This also may limit the speed of the communication to the lowest common speed. The routing decisions are based on the programmed routing table and the initial incoming frame contents.

## Uses

SpaceWire is used all around the globe. Its use began primarily in ESA projects, but it is currently used by NASA, JAXA, RKA, and many other organizations and companies. Some NASA projects using it include the James Webb Space Telescope, Swift's Burst Alert Telescope, the Lunar Reconnaissance Orbiter, LCROSS, the Geostationary Operational Environmental Satellite (GOES-R), and the SCaN Testbed, previously known as the Communications, Navigation, and Networking Reconfigurable Testbed (CoNNeCT). It has also been selected by the United States Department of Defense for Operationally Responsive Space. SpaceWire initiatives are being coordinated between several space agencies in the frame of Consultative Committee for Space Data Systems (CCSDS) in order to extend its communication model to the network and transport layers of the OSI model.
SpaceWire supports highly fault-tolerant networks and systems, which is one reason for its popularity.

## Protocols

The ESA has a draft specification in place for the Protocol ID.
The following Protocol ID's have been assigned in ECSS-E-ST-50-51C:
| Protocol ID | Name | Description |
| 1 | Remote Memory Access Protocol (RMAP) | used to remotely access/alter register configuration of the devices |
| 2 | CCSDS Packet Transfer Protocol | a common protocol used for sending Telecommands and receiving Telemetry |
| 238 | Proposal for Reliable Data Delivery Protocol (RDDP) | used on GOES-R |
| 239 | Serial Transfer Universal Protocol (STUP) | Used on SMCS-332 ASIC |