SpaceWire has two types of characters: data and control characters which are illustrated in Figure 32.
- Data characters which hold an eight-bit data value transmitted least-significant bit first. Each data character contains a parity-bit, a data-control flag and the eight-bits of data. The parity-bit covers the previous eight-bits of data or two-bits of control code, the current parity-bit and the current data-control flag. It is set to produce odd parity so that the total number of 1’s in the field covered is an odd number. The data-control flag is set to zero to indicate that the current character is a data character.
- Control characters which hold a two-bit control code. Each control character is formed from a parity-bit, a data-control flag and the two-bit control code. The data-control flag is set to one to indicate that the current character is a control character. Parity coverage is similar to that for a data character. One of the four possible control characters is the escape code (ESC). This can be used to form longer control codes. Two longer control codes are specified and valid which are the NULL code and the Time-Code.
In addition to the data and control characters there are two control codes: NULL and time-codes.
- NULL is formed from ESC followed by the flow control token (FCT). NULL is transmitted, whenever a link is not sending data or control tokens, to keep the link active and to support link disconnect detection.
- The Time-Code is used to support the distribution of system time across a network. A Time-Code is formed by ESC followed by a single data-character.
Figure 32 Data and Control Characters and Control Codes