MIL-STD-1553
버스 프로토콜 (Bus protocol)

1553 버스는 여러개의 원격 터미널(Remote Terminal:RT)을 제어하는 하나의 버스 컨트롤러(Bus Controller:BC)로 이루어져 있다.
메시지는 하나 이상의 16-bit 워드(command, data 또는 status)로 이루어진다.
각 워드는 3μs 의 동기 펄스(1.5μs 하위 purse, 1.5 μs 상위 purse 그리고 명령과 status words는 그 반대이다. 이들은 맨체스터 코드에서는 없다)에 인도되고, 홀수 패리티 비트(Odd parity bit)가 뒤에 따라온다.
실제로 각 워드는 20bit 워드로서 구성될 수 있다(3bit는 sync로, 16bit는 payload(실데이터), 1bit는 홀수 패리티 컨트롤)
메시지 안에 속한 word들은 연속적으로 전송되며, 메시지들간에는 4μs 의 간격이 존재한다.
장치는 올바른 command에 대해서는 4~12μs 이내에 응답을 보내기 시작해야 하고 14μs안에 응답을 보내지 않는다면 메시지를 받지 않은 것으로 간주한다.
버스 안에서의 모든 통신은 마스터 BC의 통제 하에서 이루어지고, BC에서 RT로 보내는 command에 기초하여 전송과 수신을 한다.
BC에서 터미널로 데이터를 전송하는 워드의 시퀀스는 다음과 같다.
(표기하는 형식은 '<originator>.<word_type(destination)>' 이고, CSP와 비슷한 형식이다)
master.command(terminal)→ terminal.status(master)→ master.data(terminal)→ master.command(terminal)→ terminal.status(master)
그리고 터미널에서 터미널로의 통신은 다음과 같다.
이것은 RT에서 RT로 전송하는 동안, 통신은 BC에 의해서 이루어지는 것을 의미한다. 데이터는 처음에 통신을 초기화하는 RT의 버퍼에 저장된다(이를 RT1이라고 하자). BC는 RT1에서 데이터를 읽어오고, 목적지 RT(RT2라고 하자)의 버퍼에 write한다.
이 과정은 터미널이 동작 중이고, 데이터를 받을 수 있는지에 대해서 확인한다.
데이터 전송 시퀀스의 끝에 있는 status는 데이터가 도착했는지, 그리고 데이터 전송 결과가 허용 가능한지를 알 수 있게 한다.
이 시퀀스는 MIL_STD-1553에 높은 신뢰도(integrity)를 제공한다. 위 시퀀스는 단순화되었고, 에러나 다른 fault가 나는 상황을 보여주진 못한다.
터미널 장치는 그 자신이 데이터 전송을 시작할 수는 없다.터미널로부터의 전송요청은 마스터 컨트롤러에 의해 제어되며, 그 동안 터미널은 대기하고 있다(polling). 높은 우선순위의 function들(예> 비행체 제어면(control surface)에 보내는 command)은 더 자주 poll된다. 낮은 우선순위의 command들은 더 적은 비율로 poll된다. 그러나 표준은 어떠한 특정한 word에 따른 특정한 타이밍을 명시하지는 않는다( 이는 시스템 디자이너에게 달려있다). 장치가 poll되고 있을 때 응답이 없는 것은 fault를 가리킨다.
BC와 RT 사이에는 다섯 가지의 트랜잭션(처리과정)이 존재한다.
Receive data(데이터 수신) 버스 컨트롤러는 16비트 command 워드를 보낸다. 그 즉시 1~32개의 16비트 데이터 워드가 붙는다. 선택된 RT는 그 이후에 16비트 Status응답 워드를 BC에 돌려준다.
Transmit data(데이터 송신) 버스 컨트롤러는 하나의 command워드를 RT에 보낸다. 다음에 RT는 하나의 Status 응답 워드와 바로 다음에 따라오는 1~32개의 워드를 BC로 보낸다.
Broadcast data(광역 데이터 송신) 1553B에서 추가된 기능. BC는 broadcast 타입 커맨드를 의미하는 31개의 Terminal Address를 포함하는 하나의 command 워드를 보낸다. 그 뒤에 0~32개의 데이터 워드가 따른다. 모든 RT들은 그 데이터를 받기위해 대기할 것이지만, 응답을 보내지는 않는다. 이런 방식은 시스템 전체 업데이트를 하는 데 사용될 수 있다(시간 업데이트 등).
Mode Code BC는 Mode Code 타입 커맨드를 나타내는 0또는 31개의 Subaddress를 포함하는 하나의 워드를 보낸다. 이 커맨드 뒤에는 어떤 코드가 사용되고 있는지에 따라 하나의 워드가 따라올 수도 그렇지 않을 수도 있다. RT는 Status 응답 워드를 응답으로 돌려주며, 그 뒤에는 하나의 데이터워드가 따라올 수도 아닐 수도 있다.
RT to RT Transfer(RT간 전송) 버스 컨트롤러는 Receive data command를 내보내고, 그 뒤에 Transmit data command가 따른다. 터미널은 Status word를 수신 터미널로 보내고, 그 뒤를 1~32개의 데이터 워드가 따라온다. 그 후, 수신 터미널은 Status 워드를 보낸다.
커맨드 워드는 다음과 같이 만들어졌다.
첫 5개의 bit는 Remote Terminal address(0~31)이다.
6번째 비트는 수신이면 0, 송신이면 1이다.
다음 5개의 비트는 터미널에 데이터를 hold하거나 받기 위한 위치(subaddress)를 가리킨다.(1~30)
(주> subaddress 0과 31은 Mode Code로 예약reserved되어 있다.)
마지막 5개의 비트는 다음에 올 워드의 개수이다.(1~32) 모두 0이면 32words를 가리킨다.
(역주> 5개의 비트가 나타낼 수 있는 숫자의 범위는 0~31이지만 여기에서는 1~32를 나타내기 위해 0을 32로 약속한다는 것을 의미합니다)
Mode Code일 경우에는, 이 비트들은 Mode Code number를 가리킨다.(예> Self Test 개시 와 BIT Word 전송)
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |

| Remote Terminal address (0 - 31) | Remote Terminal address (0 - 31) | Remote Terminal address (0 - 31) | Remote Terminal address (0 - 31) | Remote Terminal address (0 - 31) | Receive or Transmit | Location (subaddress) of data (1 - 30) | Location (subaddress) of data (1 - 30) | Location (subaddress) of data (1 - 30) | Location (subaddress) of data (1 - 30) | Location (subaddress) of data (1 - 30) | Number of words to expect (1 - 32) | Number of words to expect (1 - 32) | Number of words to expect (1 - 32) | Number of words to expect (1 - 32) | Number of words to expect (1 - 32) |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
Status 워드는 다음과 같이 판독한다.
첫 5개의 비트는 응답하는 RT의 address이다.
나머지는 각각 상태가 있는 비트 코드이다(single bit condition codes).
어떤 비트들은 예약되어 있다.
하나의 '1' state는 상태가 true임을 나타낸다. Message Error 나 Service Request가 예가 될 수 있다. 하나이상의 상태가 동시에 true가 될 수 있다.
| 0 | 1 | 2 | 3 | 4 | 5 |
| --- | --- | --- | --- | --- | --- |

| Remote Terminal address | Remote Terminal address | Remote Terminal address | Remote Terminal address | Remote Terminal address | Single bit condition codes |
| 1 | 2 | 3 | 4 | 5 | 6 - 16 |