5
$\begingroup$

Why are ARINC labels reversed before transmitting them to destination and the LSB (less significant bit) is transmitted first:

  • Actual label = 0x58: 0101 1000
  • Transmitted as label = 0x1A: 0001 1010

Is there any particular advantage over formal transmission and label reversed transmission?

Also all systems are designed for odd parity. Why is that?

$\endgroup$
  • 1
    $\begingroup$ See en.wikipedia.org/wiki/… $\endgroup$ – DeltaLima Aug 31 '15 at 11:04
  • 1
    $\begingroup$ I strongly doubt there is any advantage to either. Simply historical coincidence. $\endgroup$ – Jan Hudec Aug 31 '15 at 12:08
  • 2
    $\begingroup$ Rather than opinion, I feel the answer might lie into computer science history (and thus this question might be suited for their SE) $\endgroup$ – Federico Aug 31 '15 at 12:48
  • $\begingroup$ @mins posted what looked like a great answer (then deleted it) based on the ARIN 429 Commentary. I'd encourage him (her?) to restore the answer, but just in case, I've re-linked the PDF he pointed to. $\endgroup$ – FreeMan Sep 1 '15 at 12:23
  • 1
    $\begingroup$ @FreeMan: I'm not happy with my answer, but I'll undelete it so that someone can use and improve. Feel free to reuse the content. $\endgroup$ – mins Sep 1 '15 at 20:54
7
$\begingroup$

Revised answer

The ARINC 429 frame is composed of 4 bytes (32 bits numbered by convention 1 to 32 from right to left). Bits 11 to 29, which are the payload of the frame, can represent data using different formats, e.g. binary or BCD data. The label is used to indicate the content of the data field, and which format is used, and is necessary to convert data bits into useful information.

enter image description here
ARINC 429 frame used in BCD format (source)

The label is usually spelled as an octal quantity (rather than decimal or hexadecimal), e.g. 010101102 will be spelled as 1268 (01 010 110) rather than 5616 (0101 0110) or 8610.

The way bits are numbered somehow makes the label the "least significant byte" and bit 1 the "least significant bit". However:

  • The format above is for naming and ordering information, but doesn't tell how bits are really stored in components memory.

  • In digital engineering, bits are usually numbered from 0 to 31, as the number actually indicates the weight of the bit: 0 is 20 (1), 4 is 24 (16). In this convention bit 0 is indeed less significant than bit 31.

The ARINC 429 data bus is composed of 2 wires and the ground reference. When an ARINC frame is transmitted on the bus, it must be serialized, which means sending bits one at a time. The transmission order is:

  • The label byte transmitted first, "MSB" first: 8-7-6-5-4-3-2-1.
  • The other bits are then transmitted "LSB" first: 9-10-11 ... 30-31-32.

So, back to your question, why not using the left to right order for the whole frame? Or at least the left to right order for the label if it's sent first?

From Wikipedia:

Like CAN Protocol Identifier Fields, ARINC 429 label fields are transmitted most significant bit first. [...] This notional reversal also reflects historical implementation details.

So let's assume there is no reason to reverse the label bits, other than historical implementations that wanted to mimic the behavior of CAN. In the French version of this Wikipedia article, it is stated that this reversal helped to read the label when looking at a frame using an oscilloscope. The MSB arriving first also appears on the left of the display (the signal on an oscilloscope generally enters on the right of the screen and scroll towards the left side as a function of the time):

enter image description here
ARINC 429 bit stream on a datascope (source)

I'm a bit baffled by this explanation, as engineers working with binary representations are used to read them is both directions quite easily after a short time.

Still according to Wikipedia, hardware used to serialize and de-serialize the ARINC word were actually insensitive to the order of the label bits:

ARINC 429 transceivers have been implemented with 32-bit shift registers. Parallel access to that shift register is often octet-oriented. As such, the bit order of the octet access is the bit order of the accessing device, which is usually LSB 0; and serial transmission is arranged such that the least significant bit of each octet is transmitted first. So, in common practice, the accessing device wrote or read a "reversed label" (for example, to transmit a Label 2138 [or 8B16] the bit-reversed value D116 is written to the Label octet). Newer or "enhanced" transceivers may be configured to reverse the Label field bit order "in hardware."

About odd parity

It is usual in digital serial communication to use data value changes (0 to 1 or 1 to 0) to derive a clocking clue in order to ensure the receiver samples the line voltage at the right time. This is less expensive than transmitting the clock signal on a separate wire. As each bit lasts the same time, the receiver uses a local clock that is roughly in sync with the transmitting clock. To actually maintain the synchronization in the long term, the receiver uses the raising and falling edges of the signal to detect bit borders and phase-align its clock.

enter image description here
Resynchronization of receiver clock on front and rear edges of the signal

That works well if the delay between edges is short. This means avoiding sending long series of 0 or 1. The parity bit can help. For data containing only 0 bits (or 1 bits) the odd parity bit will be 1 (or 0), preventing long edgeless streams to occur.

In some uses of ARINC 429, the parity bit is not transmitted, and is used for data, but nevertheless it seems superfluous for sync in this case since the link protocol is 3-level with return to zero, ensuring two edges for each bit of data.

enter image description here
Return to zero coding (source)

$\endgroup$
  • $\begingroup$ As an IT guy, this answer works for me! $\endgroup$ – FreeMan Sep 2 '15 at 12:06
  • $\begingroup$ There's an incorrectness in this answer: You change the order you read the ARINC word (From-right-to-left to from-left-to-right), but you keep the label LSB as being the first bit transmitted. The question with ARINC-429 is that the first bit transmitted is actually the label MSB (The bit transmission order is 8-7-6-5-4-3-2-1-9-10-11... up to 32) $\endgroup$ – Alex Mar 23 '16 at 18:33
  • $\begingroup$ Sorry @mins. I don't have an answer. I just noticed that you say that label LSB is transmitted first, but, in fact, on ARINC-429 protocol, label MSB is the first transmitted bit. It's not a matter of just reading the word from left-to-right or right-to-left. $\endgroup$ – Alex Mar 29 '16 at 12:59
  • $\begingroup$ @Alex: I completely rewrote the answer. Thanks again for your comment. $\endgroup$ – mins Mar 31 '16 at 14:30
0
$\begingroup$

I have an idea that is used in some other cases and I think that the reason in this filed is also the same. Suppose that we must take a decision from incoming code or number, which bit of number gives us more information, MSB or LSB? Of course MSB has more information especially for estimation of magnitude of the incoming number. In some microprocessors, the high bits of instruction codes show us the instruction group. As an example, in Z80, if the first two MSB bits of instruction be 01 immediately we conclude that we have a register to register data transfer (LD r,r’) and we can prepare the hardware for executing the instruction. Now if we need some preparation for receiver hardware before completion of incoming label bits, so we prefer that giving the MSB bits at the first.

$\endgroup$
  • 1
    $\begingroup$ I'm not sure that this is useful information. Much of the transmission order was driven by pre-existing standards and doesn't really take into account the type of hardware receiving the label. $\endgroup$ – selectstriker2 Dec 5 '18 at 19:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.