6
$\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$
6
  • 1
    $\begingroup$ See en.wikipedia.org/wiki/… $\endgroup$
    – DeltaLima
    Aug 31, 2015 at 11:04
  • 2
    $\begingroup$ I strongly doubt there is any advantage to either. Simply historical coincidence. $\endgroup$
    – Jan Hudec
    Aug 31, 2015 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, 2015 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, 2015 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, 2015 at 20:54

3 Answers 3

10
$\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$
4
  • $\begingroup$ As an IT guy, this answer works for me! $\endgroup$
    – FreeMan
    Sep 2, 2015 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, 2016 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, 2016 at 12:59
  • $\begingroup$ @Alex: I completely rewrote the answer. Thanks again for your comment. $\endgroup$
    – mins
    Mar 31, 2016 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
  • 2
    $\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$ Dec 5, 2018 at 19:28
0
$\begingroup$

Most parts of "mins" are right except minor words. And it is found the statement on the net or some tutorials of the aviation comments are not correct, which says "transmission order is 8-7-6-5-4-3-2-1-9-10-11-12-13...-32". First this expression is not precise since what the number(8,7,6...32) of the order are. Probably it is the ARINC 429 word bit position:

32|31..30| ......8 7 6 5 4 3 2 1

P.|..SSM.|...........Label

enter image description here

For ARINC 429 word, it is often said that MSB is left and LSB is right based on above bit position. But this omit something. This is not applied for whole word. And what's more, MSB and LSB must be used for the specific scopes. Usually, there is no confusion or mistakes for such omissions. But for 429 word, it is constructed with different groups. And the MSB/LSB of label is not same with other groups. So from my respective, don't use the "LSB of ARINC 429 word, MSB of ARINC 429 word", which brings confusion. For the label, the MSB of the label is the right-to-left number based on above writing/reading sequence.

Specifically(based on above bit position),

MSB of the octal label part 1 is bit 1,LSB of octal label part 1 is bit 2;
MSB of the octal label part 2 is bit 3,LSB of octal label part 2 is bit 5;
MSB of the octal label part 3 is bit 6,LSB of octal label part 3 is bit 8;

32 31 30........8.......7....6|5.......4.......3|2.........1
................LSB........MSB|LSB..........MSB|LSB.......MSB
P...SSM........oct label part3|oct Label part 2|oct Label part1

enter image description here

And in aviation, we often call label xxx such as Label 260(octal). Actually label 260 is expressed in ARINC Standard Part1-17). Obviously, like decimal numbers, octal 2 is the most significant number,
octal 0 is the least significant number(Note i don't use MSB/LSB as the single number will be constructed with MSB and LSB). Then the label is put into the ARINC 429 word. The octal "2" as oct label part 1 is put into the position 1 and 2. Here it is different with other parts of ARINC 429 word. If it is like other parts, the octal "2" should be put into position 8,7,6. (Continue) oct "6" as oct label part 2 is put into position 3,4,5.
(Continue) oct "0" as oct label part 3 is put into position 6,7,8. And each part of the octal number: MSB of part 1 is the position 1, LSB of part 1 is the position 2; MSB of part 2 is the position 3, LSB of part 2 is the position 5; MSB of part 3 is the position 6, LSB of part 3 is the position 8(right to left). So the octal label 260 in ARINC 429 word is like:

32|...31 30|.... 8 7 6 | 5 4 3 | 2 1

.P|......SSM|......0 0 0 | 0 1 1 | 0 1

......................0....|.....6.|..2

enter image description here

This is the Table 6-8 of ARINC 429 part1-17.

Now back to transmission order, we often say that the label of ARINC 429 word is transmitted first and the MSB of label is transmitted first. Such statement is right just as the standard. In fact, based on "MSB of label is transmitted first", apparently, for example octal label 260, see above bits arrangement, the bit number 1 of octal "2" is the transmitted first since 1 is the MSB of octal "2"(also MSB of octal 260), then 0,1,1,0,0,0,0. IF use the bit position, the transmission order is position 1(first transmission)->position 2, 3,4,5,6,7,8. And for the whole ARINC 429 word transmission order is 1,2,3,7,8...32.(here 1,2 is the bit position as above display).

But why are there so many statement of the transmission order like 8,7...1 9,10....32?

I guess there may be two. One is misunderstanding of this paragraph in ARINC 429 Standard

"The LSB and LSC of each word should be transmitted first. It may be noted that the LSB of the word is the MSB of the label and the label is transmitted ahead of the data in each case. This 'reversed' label characteristic is a legacy from past system in which the octal coding of the label field was, apparently, of no significance."

The other reason: Maybe some aviation company product does not comply to ARINC 429 standard, but to comply to the standard, use such statement to convert it.

And back to the original question: [Actual label = 0x58: 0101 1000], in fact, the label in aviation is not spell as 0x58. First the 0x 58, 0101 1000 is actually reading style of left-right in ARINC 429 word for the label, i.e. reading the label like other parts of ARINC 429. This style is convenient to software programming since maybe the driver of ARINC 429 card doesn't provide the octal style setting. But to translate this label to ARINC standard meaning, it should be spelled per standard(from right to left), which is label octal 032. The octal 032 is just the "Transmitted as label = 0x1A: 0001 1010". The hex 0x1A spelled as octal is octal 032. Find the label in ARINC 429 standard, the label 032 is often used as "ADF Frequency".

Last word, the original question "why the LSB (less significant bit) is transmitted first" actually, you thought most left 0 is LSB, but the most left 0 is the MSB of the label. ARINC standard requires that MSB of label is transmitted first for compatibility of past system(stated in the ARINC 429 standard).

$\endgroup$

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.