**MIL-STD-1553**는 미국 국방성에 의해 발간되는 군사규격으로 시리얼 통신 데이터 특성을 정의하였다. 이것은 원래 군사용 항공전자 시스템을 위해 설계되었으나 점차 민간 및 군사분야에서 항공기 탑재 장비 데이터 처리(OBDH, on-board data handling)에 사용하게 되었다. 이것의 특징은 두 개의 물리적 레이어를 가지고 있다. 1973년 미국 공군에 의해 처음 발간되었으며, F-16 전투기에 처음 사용하였다. 미국 국방 분야에서 넓게 사용하였고, NATO에서도 STANAG 3838 AVS으로 적용하였다. MIL-STD-1553는 현재 파이어와이어(FireWire)로 대체되고 있다. ( 적어도 국내 방산에 한하여 IEEE1394 를 1553 대체 인터페이스로 사용하고 있다는 얘기는 들은 바 없다. DDC사 에도 질문해 봤으나 2024년 현재 IEEE1394 를 했다가 접었다는 얘기가 돌아왔다. F-35 기에 FIREWIRE 가 들어갔다는 얘기는 들어봤으나 이 외에는 들은 바 없다. )

버전 (Revision)
-------------

MIL-STD-1553B는 1975년 MIL-STD-1553A 규격을 갱신하여 1978년 발간하였다. 기본적인 차이점은 옵션을 정의한 것인데 사용자를 위해 남겨두는 것보다 낫기 때문이다. 이것은 규격서가 제정되기 전에 발견한 것인데 사용하는 데 어울리지 않는 면이 있었다. 하드웨어와 소프트웨어는 각각 새로운 응용제품을 위해 재 설계를 해야만 했다. 1553B의 가장 주요 목적은 유연성을 제공하여 사용자에게 재설계를 하지 않도록 하는 것이다. 이것의 완성은 전기적 인터페이스를 외부적으로 정해서 전기적 호환성을 가짐으로 다른 제작업체간에 발생할 수 있는 설계의 차이점을 없애버렸다.

5개의 변경사항을 1978년에 발간하였다. 예를 들어 변경사항 2 1986년 발간된 제목을 보면 "Aircraft internal time division command/response multiplex data bus"에서 "Digital time division command/response multiplex data bus"로 되었다.

MIL-STD-1553는 미국 국방성과 SAE(Society of Automotive Engineers)의 항공 분과에서 관리되고 있다.

물리적 레이어 (Physical layer)
------------------------

단일 버스(single bus)는 와이어 페어(wire pair)로 구성되는데 1 MHz에서 70–85 Ω 임피던스를 갖는다. 원형 커넥터를 사용할 때, 중앙 핀은 하이(high, positive) Manchester bi-phase signal에 사용된다. 전송기와 수신기쌍(Transmitters and receivers couple는 전원장치 차폐 트랜스를 통해 버스에 연결되고, 나머지 연결은 한쌍의 isolation 저항과 하나의 coupling transformer를 사용하여 분화된다.
이것은 회로 합선의 충격을 줄이고, 버스가 비행체를 통해 전류를 전도시키지지 않도록 보장한다. 맨체스터 코드는 같은 wire pair에서 clock과 데이터를 모두 나타내는 데 사용된다. 그리고 (트랜스를 통과할 수 없는)시그널 속에 있는 어떠한 DC component라도 제거한다. bit rate는 1.0 MB/s(Megabit per second = 1 bit per μs)이다.
이 bit rate의 종합적인 정확도(combined accuracy)와 장기(long-term) 안정성은 단 ±0.1% 이내로 명시된다.; short-term clock(짧은 주기 클락) 안정성 또한 0.01%이내라는 것이다. 전송기(transmitter)의 peak-to-peak 출력 전압은 18-27V이다.

버스가 이중 또는 삼중 구성이 가능한 것은 몇 개의 독립적인 wire pair를 사용하기 때문이고, 이로써 모든 디바이스는 모든 버스에 연결된다.
현재의 마스터 컨트롤러에 의한 failure 이벤트에서 새로운 버스 컨트롤 컴퓨터가 정의될 필요가 있다.
보통, 보조 비행 컨트롤 컴퓨터들이 메인 데이터버스를 통해서 마스터 컴퓨터와 비행체의 센서들을 모니터한다.
다른 버전의 버스는 광섬유를 사용하는데, 이는 무게가 덜 나가고, EMP를 포함한 전자기적 간섭에 대해 더 나은 저항을 갖는다.

이것이 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)

그리고 터미널에서 터미널로의 통신은 다음과 같다.

master.command(terminal\_1)→ terminal\_1.status(master)→ master.command(terminal\_2)→ terminal\_2.status(master)→ master.command(terminal\_1)→ terminal\_1.data(terminal\_2)→ master.command(terminal\_2)→ terminal\_2.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 사이에는 다섯 가지의 트랜잭션(처리과정)이 존재한다.

1. **Receive data(데이터 수신)** 버스 컨트롤러는 16비트 command 워드를 보낸다. 그 즉시 1~32개의 16비트 데이터 워드가 붙는다. 선택된 RT는 그 이후에 16비트 Status응답 워드를 BC에 돌려준다.
2. **Transmit data(데이터 송신)** 버스 컨트롤러는 하나의 command워드를 RT에 보낸다. 다음에 RT는 하나의 Status 응답 워드와 바로 다음에 따라오는 1~32개의 워드를 BC로 보낸다.
3. **Broadcast data(광역 데이터 송신)** 1553B에서 추가된 기능. BC는 broadcast 타입 커맨드를 의미하는 31개의 Terminal Address를 포함하는 하나의 command 워드를 보낸다. 그 뒤에 0~32개의 데이터 워드가 따른다. 모든 RT들은 그 데이터를 받기위해 대기할 것이지만, 응답을 보내지는 않는다. 이런 방식은 시스템 전체 업데이트를 하는 데 사용될 수 있다(시간 업데이트 등).
4. **Mode Code** BC는 Mode Code 타입 커맨드를 나타내는 0또는 31개의 Subaddress를 포함하는 하나의 워드를 보낸다. 이 커맨드 뒤에는 어떤 코드가 사용되고 있는지에 따라 하나의 워드가 따라올 수도 그렇지 않을 수도 있다. RT는 Status 응답 워드를 응답으로 돌려주며, 그 뒤에는 하나의 데이터워드가 따라올 수도 아닐 수도 있다.
5. **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 전송)

  


|
|  |
Command Word Bit Usage| Remote Terminal address (0 - 31) | Receive or Transmit | Location (subaddress) of data (1 - 30) | 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가 될 수 있다.

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

대략 구성
-----

Figure 1. A conceptual model of a MIL-STD-1553B bus.
그림 1 typical MIL-STD-1553B system.

구성은 다음과 같다.

* 듀얼 Mil-Std-1553B 버스
* 버스 콘트롤러
* 3개 원격 터미널
* 버스 모니터

### 버스 콘트롤러

Mil-Std-1553 버스에는 한 시점에 오직 하나의 버스 콘트롤러(BC)가 있다. 이 BC는 버스를 통해 모든 메시지 통신을 개시(initiate)한다.

그림1 은 1553 데이터 버스의 세부내용을 보여준다:

* 로컬 메모리에 저장된 명령 리스트에 따라 동작한다
* 명령을 보내어 다양한 원격터미널이 송,수신하도록 한다.
* 원격 터미널(RT)로부터 수신한 모든 요청을 처리한다.
* 에러를 감지하고 복구한다.
* 에러 기록을 유지한다.

### 원격 터미널

원격 터미널은 다음을 제공하는 데 사용할 수 있다.

* Mil-Std-1553B 데이터 버스와 연결된 서브 시스템간의 인터페이스
* Mil-Std-1553B와 다른 Mil-Std-1553B 버스 간의 브릿지

예를 들어 추적중인 개체에서, 원격 터미널(RT)는 함께 동작하는 장치에서 디스플레이하기 위해서 관성항법 보조시스템(INS)로부터 데이터를 얻는다(그리고 1553버스를 통해 데이터를 다른 RT로 보낸다). 더 간단한 원격터미널의 예는, 비행체의 헤드라이트나 착륙등이나 신호표시기의 스위치를 켜는 인터페이스이다.

**원격 터미널 테스트 계획:**
**RT 검증 테스트 계획**은 원래 AS15531과 Notice 2와 함께 MIL-STD-1553B의 요구사항을 충족시키기 위해 디자인된 원격 터미널을 검증하기 위한 것이었다. 이 테스트 계획은 초기에는 MIL-HDBK-1553, Appendix A에 정의되었다. 그리고 MIL-HDBK-1553A, Section 100에서 업데이트되었으며, 지금은 SAE AS-1A Avionic Network Subcommittee as AS4111에 의해 관리된다.
**RT 제품 테스트 계획**은 단순화된 하나의 검증 테스트 계획 부분이고, RT의 제품 테스트를 위해 계획되었다. 이 테스트 계획은 SAE AS-1A Avionic Netowrk Subcommittee (AS4112)에 의해 관리된다.

### 버스 모니터

버스 모니터는 데이터 버스를 통해 메시지를 전송할 수 없다. 주요한 목적은 버스의 처리과정(transactions)를 모니터 및 기록하는 것인데 버스 콘트롤러 또는 원격 터미널의 동작에 영향을 미치지 않아야 한다. 이 기록된(recorded) 상태는 저장될 수 있으며 후에 오프 라인 상태에서 분석하기 위함이다.

이상적으로 버스 모니터는 1553 데이터 버스의 모든 메시지를 잡아 저장하는 것이지만 바쁘게 움직이는 버스 상태에서 모든 전송 상태를 기록하는 것은 비현실적이다. 그래서 버스 모니터는 가끔 구성을 전송 상태의 일정 부분을 기록하는데 응용 프로그램에 의해 제공되는 조건에 따라서 이루어진다.

대체 역할로서 버스 모니터는 백업 버스 콘트롤러에 연계해 사용된다. 이것은 백업 버스 콘트롤러가 활성 버스 컨트롤러가 되도록 요구받았을 때 원활하게 동작하도록 한다.

버스 하드웨어 특징
----------

버스 하드웨어는 다음을 포함한다.

1. 케이블
2. 버스 연결자
3. 터미네이터
4. 커넥터

### 케이블(Cabling)

MIL-STD-1553B가 데이터 버스가 70~85옴의 고유임피던스를 가져야한다고 명시하더라도 업계에서는 78옴을 표준화해 왔다. 같은 맥락에서 업계는 보통 twinax cable로 알려진 케이블(78옴의 고유 임피던스를 가짐)을 표준화해 왔다.

MIL-STD-1553B는 버스의 길이를 명시하지 않는다. 그러나 버스의 최대길이는 케이블 컨덕터(전도자,유도자)와 전송된 시그널의 시간지연(time delay)와 직결되어 있다. 더 작은 컨덕터는 큰 컨덕터에 비해 시그널을 약화시킨다. 1553B의 전형적인 전달 지연(propagation delay)는 1.6 ns/ft이다. 그래서 양 끝단의 거리가 100ft인 버스는 160ns(나노세컨드,10억분의 1초)의 전달지연이 생긴다. 이것은 1553B시그널의 rise time(역주>펄스 진폭이 10%치에서 90%치에 이르기까지의 경과 시간, 오름시간)과 같다.
MIL-HDBK-1553A에 의하면, 시그널의 전달 지연 시간이 rise time 이나 fall time의 50%보다 많으면, 전송 라인 효과(transmission line effects)를 고려해 볼 필요가 있다.
이 지연 시간은 확장된 거리에 비례한다. 또한 고려사항에는 전송자(transmitter)와 수신자(receiver)의 실제 거리, 그리고 전송자와 수신자의 개별적인 파형 특성이 포함되어야 한다.
MIL-1553B는 Stub들과 결합된 트랜스(transformer)를 위한 가장 긴 스텁(Stub)이 20ft라고 되어 있다. 그러나 넘을 수도 있다. Stub가 연결되어있지 않은 메인버스는 방해 반향없는 무한한 길이의 전송 라인같이 보인다. Stub가 추가되면, 버스는 로드되고, 결과 반영에 미스매치가 나타난다. 반향에 의한 미스매치와 신호 왜곡(signal distortion)정도는 stub와 터미널 입력 임피던스에 의해 나타나는 임피던스의 작용이다. 신호 왜곡을 최소화하기 위해서는 stub가 높은 임피던스를 가지는 것이 바람직하다. 이 임피던스는 버스에게로 반영된다. 그러나 동시에 임피던스는 낮게 유지되어야 한다. 그래야 충분한 신호 강도(signal power)가 수신단으로 전달될 것이다. 그르므로, 특정한 signal-to-noise ratio(역주>SNR-시그널을 노이즈로 나눈 값으로 log10으로 나타난다.)와 시스템 오류율 성능(system error rate performance)에 도달하는 데에는 이러한 충돌하는 요구사항의 교환이 필요하다.(더 많은 정보는 MIL-HDBK-1553A를 참조할 것)

### 버스 연결자(Bus Couplers)

버스 연결자의 목적은 반향을 줄이고, 신호 임피던스 레벨을 유지하고, 회로 합선시에 버스를 보호하는 것이다.
버스연결자(커플러)없이 직접 연결된 장비들은 DC isolation 이나 common mode rejection을 제공하지 않기 때문에, 버스로의 직접연결은 피해야 한다. 커플러 없이는 장비의 내부 isolation 저항(회로 보드에 대부분 장착되어 있다)과 메인 버스 사이에서의 어떠한 합선으로 인한 실패(shorting fault)는 전체 버스의 실패(Fault)를 유발했다. 왜냐하면, 장치의 내부 isolation 저항들이 버스의 합선에 대하여 확실히 알 수 있을 정도로 충분하지 않기 때문이다.
트랜스(transformer)에 더하여, 버스 커플러는 built-in fault isolation 저항을 가지고 있어서, Stub에서 회로합선이 된 경우에 메인버스를 보호하는 기능을 제공한다. 버스 컨트롤러, 버스 모니터, 그리고 원격 터미널을 가지고 있는 모든 장비는 커플러의 stub끝과 연결되어야 한다.

### 터미네이터

버스의 양 끝단( 하나의 커플러를 포함하고 있던지 여러개의 커플러들이 같이 연결되어 있던지 간에)은 78옴의 터미네이터로 종결되어야 한다. 전기적 종결의 목적은 파형 왜곡을 불러올 수 있는 신호의 반향으로 인한 효과를 최소화 하기 위한 것이다. 만일 터미네이터가 쓰이지 않는다면 통신 신호는 이상하게 변형되거나 간헐적인 통신 실패를 야기하며 위태로워질 수도 있다.

### 커넥터

물론 많은 타입의 커넥터가 존재하고 버스 케이블과 커플러에 사용될 수 있겠지만, 가장 많이 쓰이는 타입의 커넥터는 concentric twinax connector이다. 가장 유명한 concentric twinax connector는 세개의 bayonet(찔러넣는 형식) coupling slots/lugs이다.(동축 BNC 커넥터와 같은 envelope 크기)

개발 툴
----

MIL-STD-1553의 and/or 문제 해결을 개발할 때, 하드웨어 시그널 검사는 문제를 찾아내는 데에 매우 중요하다. 프로토콜 해석 능력을 갖춘 논리 분석기(logic analyzer)나, 프로토콜 분석기는 시그널을 수집하고, 분석하고, 해석하고 저장하여 빠르게 파형을 볼 수 있도록 하는 데에 유용한 툴이다.