TestBench.tools

MIL-STD-1553B Message Decoder

Lay out a full 1553B transaction: command, data words and status, with parity checks.

BC → RT (receive)4 words — layout matches
#WordRoleDecoded
10x2822Command (BC → RT)RT 5 · Rx · SA 1 · WC 2
20x1234Data word 14660 · int16 4660
30x5678Data word 222136 · int16 22136
40x2800RT statusRT 5

This tool lays out a whole MIL-STD-1553B transfer. Paste the 16-bit words of a message — the first is the command — and it assigns each word its role (command, data or status), decodes the command and status fields, and checks that the word count matches the layout. Reference: 2822 1234 5678 2800 decodes as a BC → RT transfer of two data words to RT 5.

How it works

A 1553 message is an ordered sequence of words whose roles are fixed by the leading command word. The decoder reads that command — its T/R direction, subaddress and word count — and builds the expected role sequence: receive transfers put the data words between the command and the RT's status; transmit transfers put the status first; mode commands use their own short forms. Mapping your pasted words onto that sequence turns a raw hex dump into a readable transaction, and a length check catches missing or extra words.

Worked example

words: 2822 1234 5678 2800
[1] 0x2822 command → RT 5, receive, SA 1, WC 2
[2] 0x1234 data · [3] 0x5678 data
[4] 0x2800 status → RT 5 · layout matches (BC → RT)

Parameters

ParameterValueNotes
BC → RT (receive)command · data×WC · status
RT → BC (transmit)command · status · data×WC
Mode (no data)command · status
BroadcastRT 31 · no status word
Word countfrom commandfield 0 → 32

Transfer formats

C
/* BC -> RT receive transfer layout (word count N):
 *   [0] command   (T/R = 0)
 *   [1..N] data words
 *   [N+1] RT status word
 *
 * RT -> BC transmit transfer:
 *   [0] command   (T/R = 1)
 *   [1] RT status word
 *   [2..N+1] data words
 *
 * The command word's WC field (0 => 32) sets N. */

FAQ

How does the decoder know each word's role?

It treats the first word as the command word and derives the transfer format from its T/R bit and subaddress. A receive command (T/R = 0) lays out command → data words → status; a transmit command (T/R = 1) lays out command → status → data words; mode commands follow their own short formats. The word count in the command tells it how many data words to expect.

Which transfer formats are supported?

BC-to-RT (receive), RT-to-BC (transmit), and mode commands with or without a data word, including broadcast (RT address 31, no status word returned). RT-to-RT transfers use two command words and are not auto-laid-out here — decode their command words individually with the command word tool.

Why does it flag a word-count mismatch?

The command word declares how many data words the transfer carries, which fixes the total word count for the message. If the number of words you paste does not match that expectation, the decoder says so — a quick way to spot a dropped or extra word in a capture.

How are data words interpreted?

Data words are 16-bit payload with no protocol-level structure, so the decoder shows the raw value and its signed 16-bit interpretation. What the bits actually mean is defined by the subsystem's interface control document, not by 1553 itself.

Is my data uploaded?

No. The whole transfer is decoded locally in your browser.

Related tools