SpaceWire links are point-to-point data links that connect together a SpaceWire node (e.g. instrument, processor, mass-memory unit) to another node or to a router. Information can be transferred over both directions of the link at the same time. Each link is a full-duplex, bi-directional, serial data link which can operate at data-rates of between 2 Mbits/s and 200 Mbits/s. It sends information as a serial bit stream using two signals in each direction (data and strobe). These signals are driven across the link using Low Voltage Differential Signalling (LVDS) which requires two wires for each signal, resulting in a SpaceWire cable containing four screened twisted pairs.
Bit synchronisation in SpaceWire is achieved by sending a clock signal along with the serial data. To reduce the maximum clock to data skew requirements the clock signal is encoded into a strobe signal in such a way that XORing the data and strobe signal recovers the clock signal.
Character synchronisation is performed once only, when the link is started. If character synchronisation is ever lost it will be detected as a parity error and the link restarted to recover character synchronisation.
SpaceWire provides a simple mechanism for starting a link, keeping the link running, sending data over the link, ensuring that data is not sent if the receiver at the other end of the link is not ready for it, and for recovering from any errors on the link. All this is handled by the link state-machine in the SpaceWire interface and is transparent to the user application.