MX Foundation 4
CSDB Introduction

The Commercial Standard Digital Bus (CSDB) is a unidirectional asynchronous bus, formerly known as the Collins Standard Digital Bus. Data is transmitted over an interconnect cable using devices compliant with the RS-422A. The standard supports two bus speeds: low bus speed 12,500 bps (+-0.1%) and high bus speed 50,000 (+-0.1%). Data is transmitted using the NRZ (non return to zero) format with a logic "0" positive and "1" negative. Start bits are logic "0" and stop bits logic "1".

Byte Format

CSDB data is transmitted in a byte format using eleven (11) bit groups. Each group consists of a start bit, followed by 8 data bits, followed by a parity bit (odd), and ending with a stop bit. The 8 data bits (one byte) are numbered 0 through 7 for each byte, and are transmitted LSB first:

  Word       |  Description  |  Usage                                                
  -----------|:-------------:|:----------------
  -          |  sync         |  Start Bit
  Bit(s) 0-7 |  data         |  [message block]
  -          |  parity       |  parity bit
  -          |  sync         |  stop bit

Byte Synchronization

Therefore there is byte level synchronization performed by start / stop bits.

Bytes may contain any data whatsoever, except for both cases below:

Message Block

A message block is a group of bytes defined as a single, serial message consisting of a fixed number of bytes transmitted in a fixed sequence.

The message block is identified by a «Label », or address, which is always the first byte: byte (0).

The label is followed by a status byte and data. Each message may be subdivided in any prearranged way whatever to contain one or more parameters. On a given bus, all message blocks must contain the same number of bytes.

[Label][Status][Data 0][Data 1]...[Data n]

The message block entity are as follows:

  • Label byte: Must consist of pre-assigned address as listed below to identify the data which follows in that message block.
  • Status byte: This byte, if used, contains information on the source, mode and validity of the data which follows in that message block.
  • Data: Up to 10 bytes of data

Frame Definition

A frame is defined as the interval from the start of a SYNC block to the start of the next block. In other words, a frame is a fixed interval of time on a given bus. The API services transmit block(s) unit(s) but perfect timing synchronization for frames can be achieved using the Scheduled Transmit Service.

Transmission

We depict below how a typical CSDB frame transmission takes place

[SYNC Block][IDLE][Message Block #0][IDLE][Message Block #1]...[Message Block #n][SYNC Block]

Transmission of CSDB messages must be synchronized at the block level using the SYNC character A5. A sync block consists of « n » bytes of repeated sync characters « A5 », where « n » is the number of bytes fixed for that bus (6 or 8 bytes). The sync block marks the beginning of a new frame. This block of « n » bytes is guaranteed uniqueness because « A5 » is never used as an address for any data message blocks which follow. Even if « A5 » appears in a data portion of a message, it could appear n-1 times at most.

The frequency of synchronization was selected to be the same as the maximum update rate for each bus in order that the essential data may be validated and used with minimum delay, or recovered quickly after outages. (Synchronization less often would suffice for some data, but keeping a single standard is desirable, especially when the essential nature of the data is not clear.)

Block Count

Typically the CSDB word may be composed of 6 or 8 bytes (the implementation allows 12). The first two bytes are for the label and the status. The other 4 to 6 bytes contain the data. The KMXF_CSDB_BLOCKCOUNT attribute can be used to change the block count value.

Updated 10/23/2023