본문 바로가기
임베디드 개발/펌웨어

ARINC 429 waveform

by eteo 2024. 1. 1.

 

 

 

 

 

ARINC 429 Tx_H, Tx_L 라인을 잡고 파형을 디코딩해보자.

 

 

 

 

위 사진은 100kbps, odd parity로 Label은 210, SDI는 00, Data 값은 0, SSM은 00인 데이터를 전송한 파형이다.

 

이전글에도 언급한적 있지만 Label은 MSB first로 전송되고 나머지는 LSB first로 전송된다.

 

Label은 8진수(Octal number)인데 Label 필드가 8 bits이니 2bit, 3bit, 3bit로 끊어읽으면 된다. 즉 여기서 알 수 있는 건 Label의 최대값은 Decimal로 255, Hexa로는 0xFF, Octal로는 377이다.

 

ARINC 429 파형은 RZ 방식이라 스파이크 부분만 보면 되니까 읽기편한 감이 있다. 아무튼 파형에서 Label 필드 부분을 보면 10 001 000 (210)이 읽힌다.

 

SDI, Data, SSM 부분은 전부 0이고, Parity를 뺀 부분에서 1이 2개 있으니까 홀수를 맞추기 위해 Odd Parity는 1이 된걸 볼 수 있다.

 

 

 

 

📌 Return-to-Zero 란

 

Return-to-Zero(RZ 또는 RTZ)는 디지털 데이터 전송에서 사용되는 용어로 비트 펄스 사이에서 반드시 일정시간 동안 중립 또는 제로 레벨을 유지한 후 다음 신호를 전송하는 방식이다. 신호에서 연속적으로 1 또는 0이 나타나더라도 마찬가지로 중간에 제로로 복귀한다. 

 

RZ 방식은 신호의 제로로 돌아가는 부분을 활용하여 데이터의 동기화를 달성하므로 Self-Clocking 신호라고도 하며, 별도의 클럭 신호 없이도 디코딩이 가능하다는 장점이 있지만 Non-RZ 방식과 비교하여 동일한 데이터 속도를 달성하기 위해 대역폭을 두 배로 사용하므로 대역폭 사용량이 높아지는 단점을 가지고 있다.

 

 

 

 

 

 

 

조금 더 확대해서 보자.

 

 

 

 

내가 bitrate를 100Kbps로 설정했기 때문에 1 bit time이 10us가 나오는걸 알 수 있다.

 

출력단에서 Vmax/Vmin은 ±5V 정도로 Vpp가 10V이다.

 

또 확대하니까 Return-to-Zero 특성이 극명하게 보인다.

 

 

 

 

 

 

 

 

 

 

다음은 다른 조건은 동일하고 Data 값에 1를 보내고 SSM은 11을 보내봤다.

 

 

 

이렇게 하니 전체적으로 1의 개수가 5개여서 Parity 필드는 0으로 꺼져있다.

 

 

ARINC 429는 항전 쪽에서 쓰이는 통신방식이다 보니까 Label 별로 어떤 비행 파라미터를 전송하고 어떤 데이터 포맷을 쓰는지 어느정도 정형화 되어있다.


ADC(Air Data Computer)에 따라 그 세부적인 데이터 포맷은 다를 수 있지만 일단 Label 210은 True Airspeed를 BNR 로 전송하는데 쓰이고, 인터넷에서 흔히 찾을 수 있는 그 세부적 포맷은 다음과 같다.

 

https://www.redimec.com.ar/contenido/productos/pdf/1432803530_1.pdf

 

 

 

 

Data 필드만 확대해서 보면 아래와 같다. 

 

 

 

11~13 bit는 padding이 오고 14 bit 부터 유효 데이터가 시작하는데 Resolution이 0.0625니까 14 bit가 2^-4를 나타낸다.

 

그리고 내가 Data 값으로 1을 보냈으니까 2^0 자리만 1로 켜진것을 볼 수 있다.

 

 

 

그럼 소스코드에선 해당 데이터를 어떻게 읽으면 될까? MSB부터 LSB까지 uint32_t 형으로 읽어서 resolution을 곱해주면 될 것 같다.

 

위 케이스에선 먼저 16을 읽고 *0.0625 해서 1을 알아내면 된다.

 

 

 

 

 

 

 

만약 음수인 경우라면? 이땐 2의 보수를 사용한다.

 

 

 

아래는 데이터가 -1일 경우의 파형이다.

 

 

 

sign 비트 빼고

111 1111 1111 0000 인데 비트반전하면

000 0000 0000 1111 이고 +1 하면

000 0000 0001 0000 이다.

-16 * 0.0625 = -1

 

 

 

 

 

아래는 데이터가 -2048 일때의 파형

 

 

 

 

 

 

 

 

 

 

아래는 데이터가 -1268.5 일때의 파형인데 내가 429 워드 전송에 사용한 Mystic 툴에서는 정확하게 세팅이 안되는 것 같다.

 

 

 

sign 비트 빼고

011 0000 1011 0111 인데 비트반전하면

100 1111 0100 1000 이고 +1 하면

100 1111 0100 1001 이다.

-20,297 * 0.0625 = -1,268.5625

 

 

 

'임베디드 개발 > 펌웨어' 카테고리의 다른 글

CAN 통신의 ISO 표준  (0) 2024.01.09
Ethernet 물리 계층의 표준  (0) 2024.01.08
RS-422, RS-485 Waveform  (0) 2023.11.24
RS-232 Waveform  (0) 2023.11.23
Vmax, Vmin, Vp, Vpp, Vavg, Vrms  (0) 2023.11.20