FlexRay: 설계, 기능 및 애플리케이션
In-Vehicle Networking
2007년 04월호 지면기사  / 글|마티아스 라우쉬 박사(Mathias Rausch PhD.) 선임 시스템 엔지니어 프리스케일 세미컨덕터

5년간의 프로토콜 개발 끝에 프로토콜 사양의 두 번째 버전(버전 2.1)이 2005년 봄에 공개되었다[1]. 첫 번째 제품은 2003년 발표되었으며 올해에 더 많은 제품이 발표될 예정이다. 이 최신 기술은 비용 효율이 뛰어난 최신 애플리케이션의 구현을 가능하게 해주므로, 이에 대한 업계의 관심이 지대하다. 본문에서는 FlexRay의 기능을 바탕으로 이 기술을 적용할 수 있는 분야에 대해 살펴본다. 그런 다음 FlexRay에 사용된 세 가지 메커니즘을 일련의 예를 통해 자세히 설명하고 FlexRay의 여러 가지 애플리케이션 측면에 대해 논의한다.
끝으로, 허용 가능한 토폴로지와 허용 불가능한 토폴로지의 예를 설명하고 클러스터 켜기(wake-up) 기능의 활용 시나리오를 간략히 알아본다. 그리고 최적의 메시지 크기를 계산하는 방법에 대한 설명으로 결론을 맺고자 한다. 이 글의 목적은 FlexRay에 대한 정보를 제공함과 동시에 사용자가 FlexRay 및 그 애플리케이션의 잠재력을 인식할 수 있도록 돕는 데 있다.

FlexRay의 개요

기능
FlexRay는 기존의 차량 내부 통신 프로토콜에는 존재하지 않았던 기능을 상당히 많이 제공하며, 이를 통해 새로운 분야에 적용할 수 있는 길이 열릴 수 있다. 기본적인 기능은 아래와 같다.

● 2×10Mbps의 데이터 속도
FlexRay는 각각 10Mbps의 데이터 속도로 동작하는 통신 채널 2개를 지원한다. 이는 구성과 비교 모델에 따라 사용 가능한 대역폭이 CAN 프로토콜에 비해 10배에서 40배까지 확장됨을 의미한다.

● 동기화된 시간축
FlexRay에 적용된 액세스 방식은 동기화된 시간축을 기반으로 한다. 이 시간축은 자율적으로 설정되며 프로토콜에 의해 동기화되어 애플리케이션에서 사용 가능하게 된다. 시간축의 정밀도는 0.5μs∼10μs 범위(일반적으로 1∼2μs)이다.

● 확정된 메시지 대기 시간과 변동 폭 보장
통신은 정기적으로 순환되는 사이클로 구성된다. 특정 메시지가 통신 사이클 내의 고정된 위치에서 발생하므로 수신기에서 어떤 메시지가 도착할 것인지 미리 알 수 있다. 도착 시간의 일시적인 변동 폭은 편차가 작고 보장되어 있다.

● 이중화 및 비이중화 통신
FlexRay는 시스템의 가용성을 높이기 위해 메시지를 예비로 전송할 수 있는 옵션을 제공한다. 개별 메시지는 예비 메시지를 포함하여 전송할 수는 있지만, 모든 메시지에 예비 메시지를 함께 전송하면 너무 많은 대역폭이 낭비되며 그럴 필요도 없다.

● 유연성
FlexRay 개발에서 주요 초점은 유연성이었다. 이중화(redundant) 또는 비이중화(non-redundant) 방식으로 전송될 메시지를 자유롭게 선택할 수 있을 뿐만 아니라, 가용성(정적 대역폭 할당) 또는 처리량(동적 대역폭 할당)에 맞게 시스템을 최적화 할 수도 있다.
또한 기존 노드에서 소프트웨어를 조정할 필요 없이 시스템을 확장할 수 있다. 버스 토폴로지뿐만 아니라 스타(star) 토폴로지도 지원된다. 다양한 구성 매개변수를 통해 통신 사이클의 지속 시간 또는 메시지 길이 등 특정 애플리케이션의 요구사항에 맞게 통신 시스템을 조정할 수 있다.

적용 분야
앞에 열거된 기능에서 다음과 같이 다양한 적용 분야가 파생될 수 있다.

● CAN 대체
현재 CAN 이상의 데이터 속도가 필요한 애플리케이션의 경우 2개 이상의 CAN 버스를 병렬로 사용하고 있다. FlexRay는 이러한 멀티 버스 솔루션을 대체하기에 최적이다.

● 백본
높은 데이터 속도를 지원하는 FlexRay는 여러 개별 네트워크 간의 연결을 제공하는 차량용 백본에 적합하다.

● 실시간 애플리케이션, 분산 제어 시스템
메시지의 확정 및 보장된 사이클 타임과 좁은 변동 폭 여유는 FlexRay를 엄격한 실시간 요구사항에 따라 운영되는 분산 제어 시스템에 최적의 기술로 만드는 요소이다.

● 안전 중심의 시스템
FlexRay 자체는 시스템 안전을 강화하는 기능이 없지만, FlexRay의 다양한 기능은 유선화(by-wire) 시스템과 같은 안전 중심의 시스템 설계를 지원한다. 차량 내 통신의 경우, FlexRay는 이벤트 중심(CAN)의 통신에서 시간 중심의 통신으로 이전하는 패러다임 전환을 지원한다.
이러한 전환은 신기술의 도입에 영향을 줄 뿐만 아니라, 관련 종사자의 재교육이 필요하므로 다소의 시간이 걸릴 것이다. 이 단계가 일단 완료된 후에는 훨씬 더 많은 적용 분야가 개발될 것이다.

프로토콜 분류
다양한 프로토콜이 자동차용으로 특별히 고안되어 왔으며 그림 1에 그 개요가 나와 있다. 가장 오래되고 잘 알려진 프로토콜은 CAN이며, 동력발생장치(powertrain) 애플리케이션에는 대부분 고속 CAN(CAN-C)으로 배치되고 차체 애플리케이션에는 저속 CAN(CAN-B)이 주로 사용된다. 도달 가능한 최고 데이터 속도는 1Mbps이지만 일반적으로 네트워크는 500kbps 이하에서 운영된다.
LIN 프로토콜은 불과 몇 년 전에 개발되었지만 이미 널리 확산되었다. 이 프로토콜은 낮은 전송 속도를 요구하는 비용 효율적인 모듈용으로 개발되었다. 이 프로토콜은 특히 시트 및 미러 조정, 파워 윈도와 같은 차체 애플리케이션용으로 개발되었다. 지원하는 데이터 속도는 20kbps로서 이러한 종류의 애플리케이션에는 충분하다. D2B 프로토콜과 그 후속 기술인 MOST 프로토콜은 멀티미디어 애플리케이션용으로 특별히 개발되었으며 전적으로 멀티미디어 분야에만 사용된다. 이 프로토콜은 다른 분야에 배치하기에 적절하지 않다. 속도 면에서 볼 때, FlexRay는 CAN 프로토콜과 MOST 프로토콜의 중간에 위치하지만 내결함성 기능으로 인해 FlexRay가 다른 프로토콜보다 다소 높은 복잡성을 갖고 있다.

기능
이 장에서는 FlexRay에 사용된 메커니즘 중 일부를 자세히 설명한다. 다룰 내용은 액세스 방식, 클록 동기화, 클러스터 시동 등이다.

1. 액세스 방식
FlexRay를 사용한 통신 방식은 정기적으로 순환되는 통신 사이클로 구성된다. 통신 사이클은 언제나 정적 영역과 네트워크 유휴 시간(NIT)으로 구성된다. NIT는 프로토콜 내부 프로세스를 위해 필요하다. 이 시간 동안에는 클러스터의 노드 간에 통신이 일어나지 않는다(그림 2 참조).
통신 사이클의 정적 영역은 TDMA(시분할 다중 접속) 기술을 기반으로 한다. TDMA 기술은 개별 노드에 대해 전송이 허용되는 고정된 시구간을 할당한다. 모든 구간은 동일한 크기를 가지며 1부터 순서대로 번호가 매겨진다. 이 시구간 중 하나 이상은 각 클러스터 노드에 영구적으로 할당된다. 작동 중에는 이와 같은 할당 내용이 변경되지 않아야 한다.
통신 사이클에는 정적 영역과 더불어 선택적으로 동적 영역이 추가로 구성될 수 있다. 이러한 동적 영역 내의 통신 미디어에 액세스하는 데에는 미니 슬롯이라는 방식이 사용된다. 송신되는 메시지는 동적 구간에 영구히 할당된다. 크기가 모두 같고 구간이 노드에 할당된 경우에도 항상 전송에 사용되는 정적 구간과 달리, 동적 영역에서는 필요할 경우에만 전송이 일어난다.
따라서 사용 가능한 대역폭도 동적으로 할당된다. 송신 대기 중인 메시지가 있는 노드는 메시지 번호(ID)가 구간 번호와 일치할 경우에 전송을 시작한다. 전송 중인 노드가 없을 경우, 모든 노드에서 정확히 소구간(mini-slot) 1개 동안 대기한 후에 구간 카운터를 증가시킨다. 구간 카운터가 증가된 후에는 모든 노드에서 해당 구간 번호가 송신 메시지 중 하나와 일치하는지 확인한다. 일치하는 항목이 있을 경우, 해당 노드에서 메시지를 전송한다. 이 메시지를 수신하는 모든 다른 노드는 메시지 수신이 완료될 때까지 기다린 후에 구간 카운터를 증가시킨다. 동적 영역의 끝에 이를 때까지 이 과정이 계속된다. 사이클 도중에 메시지를 전송하는 노드가 없거나 소수일 경우 동적 영역의 끝부분에서 더 높은 구간 번호가 도착한다. 전송하는 노드가 많은 경우 더 낮은 구간 번호가 도착한다.
따라서 구간 번호가 높은(우선순위가 더 낮은) 송신 메시지가 있는 노드의 경우, 이번 사이클에서 전송이 가능하더라도 다음 사이클에서는 이전의 동적 영역에서 얼마나 많은 메시지가 전송되었는가에 따라 전송이 불가능할 수도 있다.
메시지가 확실히 전송되도록 하려면 사용자가 메시지를 정적 영역 내에서 전송하거나, 동적 영역 내에서 메시지를 더 낮은 메시지 번호(우선순위가 더 높은)에 할당해야 한다.

2. 클록 동기화
TDMA 기반 통신 프로토콜의 경우 통신 미디어에 대한 액세스가 시간 영역 내에서 제어된다. 따라서 각 노드의 타이밍을 동기화하는 것이 중요하다. 그 선결 조건으로 모든 노드의 클록이 서로 동기화되어야 하며 제한적이고 보장된 최대 변동 폭을 가져야 한다. 이 때의 최대 변동 폭을 정밀도라 부른다.
클록 변동 폭은 위상 변동 폭과 주파수 변동 폭으로 나눌 수 있다. 위상 변동 폭이란, 특정 시간에서 두 클록 간의 절대값 차를 의미한다. 주파수 변동 폭은 시간이 경과되면서 위상 변동 폭에 생기는 변화이다. 주파수 변동 폭은 특정 기간에 걸친 위상 변동 폭의 변화를 반영한다.
클록 동기화를 구현하는 방법으로는 위상 보정을 통한 방법과 주파수 보정을 통한 방법이 있다. FlexRay에서는 위상 보정뿐만 아니라, 주파수 보정도 구현하는 복합적인 방식을 사용한다. 클록 동기화는 제어 루프의 일종이며 다른 모든 제어 루프와 마찬가지로 측정, 계산 및 설정 기능으로 구성된다.
각 클록 간의 변동 폭을 측정하려면 각 노드에서 수신 도중 메시지의 도착 시간을 측정해야 한다. 정적 영역에서는 타이밍 구성표를 통해 각 노드에서 언제 메시지가 수신될 것인지 알 수 있다. 특정 메시지가 예정보다 일찍 또는 늦게 도착하는 경우, 실제 시간과 예정 시간 간의 차이가 측정된다. 이러한 차이는 송신 노드와 수신 노드 간의 클록 변동 폭을 나타내는 것이다. 각 노드는 내결함성 평균 알고리즘[2]을 사용하여 수집한 측정값으로부터 보정 값을 계산한다. 주파수 보정의 경우, 두 통신 사이클 간의 측정값이 필요하다. 이 측정값 쌍 간의 차이는 각 통신 사이클의 클록 변동 폭 변화를 반영한다. 이 값은 전술한 방식에서 설명한 더블 사이클의 끝부분에서 보정 값을 계산하는 데 사용된다. 그런 다음 이 보정 값은 이후의 더블 사이클 전체에 사용된다.
모든 측정값이 수신되면 한 통신 사이클의 측정값만을 필요로 하는 위상 보정 값의 계산이 수행되며, 이 작업이 위상 보정 단계의 시작 전에 완료되어야 한다. 통신 사이클의 끝부분에서 네트워크 유휴 시간(NIT)의 일부는 위상 보정용으로 예약된다. 위상 보정은 클록의 주파수 변동 폭 측정에 방해가 되지 않도록 한 사이클씩 건너뛰면서 수행된다.
그림 3은 클록 동기화의 각 단계와 서로 다른 액세스 방식에 따른 할당 방식을 보여준다. 클록 동기화 메커니즘에 대한 자세한 설명은 [3]을 참조하기 바란다.

3. 클러스터 시동
시동 단계는 대부분의 다른 기술 프로세스 또는 절차와 마찬가지로 FlexRay에서도 매우 복잡한 작동 단계 중 하나이다. 이는 FlexRay의 통신 방식이 클록 동기화 구성표를 기반으로 하지만, 시동 단계 동안에는 시간축이 확립되지 않은 상태이기 때문이다. 또한 내결함성 유지를 위해 FlexRay에는 마스터가 존재하지 않고 이러한 시간축을 마스터에서 간단히 지정할 수 없기 때문이다.
클러스터를 시동하면 항상 복수 인스턴스로 존재하는 소위 “콜드스타터”가 시작된다. 첫 번째로 메시지 전송을 시작하는 콜드스타터를 “선행 콜드스타터”라 하며 나머지 모두를 “후속 콜드스타터”라고 한다.
노드가 켜지고 초기화가 완료된 다음에는 적절한 호스트 명령에 이어서 시동 프로세스로 진입한다. 콜드스타터가 아닌 노드는 최소한 2개 이상의 콜드스타터가 서로 통신 중임을 확인할 때까지 대기한다. 콜드스타터는 통신 사이클 2개 동안 전송 채널을 자체적으로 모니터링하여 다른 노드에서 전송 중인지 판단한다. 다른 노드에서 전송 중이지 않을 경우 해당 노드가 전송을 시작하며 이로써 선행 콜드스타터가 된다. 선행 콜드스타터는 가장 먼저 평범한 기호를 전송하여 다른 노드에게 현재 자신이 선행 콜드스타터로서 클러스터를 시동 중임을 알린다. 이 노드는 기호(기호는 특정 수의 널 비트임)를 전송한 후에 자체 클록을 시작하며, 이를 통해 최초의 자체 통신 사이클을 시작한다. 선행 콜드스타터는 사전에 정의된 클러스터 전반의 통신 구성표에 따라 할당된 구간 내에서 전송을 시작하며 모든 다른 노드와 마찬가지로 시동 단계 동안의 자체 구간 중 하나에서만 전송을 수행한다.
선행 콜드스타터에서 전송한 메시지는 후속 콜드스타터에서 수신할 수 있다. 구간 번호와 동일한 메시지 식별 번호(ID)를 통해 수신기에서는 송신기가 위치한 구간을 파악할 수 있다.
각 메시지에는 전송 중인 노드의 현재 사이클 번호가 함께 전송된다. 다른 노드들은 첫 번째 메시지를 수신한 후에 다음 통신 사이클의 두 번째 메시지가 전송되기를 기다린다.
두 번째 메시지가 수신되면 후속 콜드스타터들은 수신된 메시지의 사이클 번호와 구간 번호를 통해 초기화된 자신의 클록을 시작한다. 이 과정은 송신기와 수신기 간에 시간을 동기화하는 작용의 기준이 된다. 더불어, 수신 노드는 첫 번째 메시지와 두 번째 메시지의 수신 시간 간격을 측정하며, 이는 통신 사이클의 사이클 타임과 동일하다. 이렇게 측정된 시간이 로컬 콜드스타터 시간과 비교된다. 감산을 통해 가능한 변동 폭이 결정되며 주파수 보정 구성표에서 보정 값으로 사용된다. 따라서 해당 후속 콜드스타터는 전송 구간에 대응하는 시간값과 수신된 사이클 번호를 통해 자신의 클록을 시작할 뿐만 아니라, 자체 시간축의 주파수를 가능하면 선행 콜드스타터와 가깝도록 보정한다.
원칙적으로, 후속 콜드스타터의 클록은 시동 시에 선행 콜드스타터의 클록과 동기화된다. 오류 발생을 방지하려면 후속 콜드스타터는 전송을 시작하기 전에 2사이클 동안 대기해야 한다. 이 2사이클 동안 후속 콜드스타터는 선행 콜드스타터의 메시지와 함께 이미 통합이 완료된 다른 후속 콜드스타터의 메시지를 계속 수신한다. 이렇게 수신된 메시지에서 수신 시간이 로컬 콜드스타터 시간과 비교된다. 예정 수신 시간과 실제 수신 시간 간의 변동 폭이 측정되며 보정 값이 계산되어 2절에서 설명한 클록 동기화 알고리즘에 따라 적용된다. 계산된 보정 값이 지정된 한계값을 초과하지 않을 경우, 해당 노드는 다음 사이클부터 전송을 시작할 수 있게 된다. 해당 노드는 시동 단계를 성공적으로 완수한 것이며 이제 일반적인 통신 상태인 “정상 작동” 상태가 된다.
선행 콜드스타터는 계산된 보정 값을 결정 및 검증한 후 통신 사이클 2개 이내에 후속 콜드스타터에서 메시지를 수신함으로써 시동 단계를 종료한다. 그림 4는 선행 콜드스타터와 후속 콜드스타터의 시동 단계를 보여준다.

적용 분야

1. 허용 가능한 토폴로지 및 허용 불가능한 토폴로지
FlexRay에서는 매우 다양한 토폴로지를 적용할 수 있다. 일반적으로 FlexRay 노드는 2채널을 지원하므로 싱글 채널 시스템 뿐만 아니라, 듀얼 채널 시스템도 개발할 수 있다. 듀얼 채널 시스템의 경우 전체 노드를 두 채널에 모두 연결할 필요는 없다. 그림 5와 그림 6의 예는 각각 노드 1, 3, 5가 두 채널에 모두 연결된 경우와 노드 2, 4가 한 채널에만 연결된 상태를 보여준다.
그림 5와 그림 6에 표시된 예는 인터페이스 로직의 관점에서 동일한 토폴로지를 나타낸다.
두 토폴로지의 차이점은 그림 5에서는 노드 연결에 버스(bus)가 사용된 반면에 그림 6에서는 각 채널에 스타 커플러(star coupler)가 사용되었다는 점이다. 버스 구조에 대비한 스타 커플러의 장점은 송신기와 수신기의 지점간(P2P) 연결 방식에 있다. 이는 특히 고속 전송과 장거리 전송 회선에서 분명히 드러난다.
또 다른 중요한 장점은 오류 격리가 가능하다는 점이다. 예를 들어, 신호 전송에 사용된 두 전선이 단락된 경우 버스 시스템에서는 이후 해당 채널의 통신이 불가능하게 된다. 스타 구조를 사용하는 경우 스타 커플러에 대한 연결이 단락된 노드만 영향을 받게 된다. 다른 모든 노드는 아무런 제한 없이 서로 통신을 계속할 수 있다. 기타 지원되는 토폴로지의 예는 [4]를 참조하기 바란다.
그림 7에 표시된 토폴로지는 3개의 채널로 구성되어 있고 각 노드가 각각 2개의 채널에 연결된 것으로 FlexRay에 허용되는 토폴로지가 아니다. 이 토폴로지는 지원되지 않을 뿐더러 작동하지도 않을 것이다. 그 이유는 간단하다. FlexRay에서는 전송 중의 데이터 보안을 위해 채널 A와 채널 B에 서로 다른 CRC가 사용된다. 이는 두 채널의 우발적인 혼동을 방지하기 위한 것이다. 이는 또한 그림 7에서 채널 A에 연결된 노드가 채널 B에 연결된 노드와 통신하려면 채널 C가 필요하므로 이 통신은 불가능함을 의미한다. CRC의 비호환성이 아니라 해도, 클록 동기화는 이러한 토폴로지에 맞게 설계되지 않았다.

2. 클러스터 켜기(wake-up)
FlexRay는 통신 채널을 통해 클러스터를 켜는 기능을 몇 가지 제공한다. 켜기(wake-up) 기능은 호스트 애플리케이션과의 상호작용으로 수행된다. 이 기능에는 몇 가지 변형이 있으며, 그 중 하나를 여기서 자세히 설명한다.
그림 8은 4개의 노드가 있는 클러스터를 나타낸다. 이 구성도에서 원 안의 숫자는 각 모듈이 켜지는 단계를 나타내며 이어지는 각 번호에 대응한다.

① 호스트 컨트롤러 1이 외부 이벤트에 의해 켜진다. 즉, 대기 모드에서 정상 모드로 전환되며 초기화가 시작된다. 그리고 초기화 도중 또는 초기화 후 FlexRay CC를 대기(전원 차단) 상태에서 정상 상태(전원 공급)로 켠다.
② 호스트 1이 자체의 FlexRay CC를 켜고 초기화한다.
③ 호스트가 자체의 버스 드라이버(BD 1A 및 BD 1B)를 켠다.
④ 호스트가 통신 채널을 통해 CC에 클러스터 켜기 명령을 전달한다. CC가 켜기(wake-up) 상태로 진입하며 켜기(wake-up) 패턴을 생성하여 버스 드라이버로 전송한 다음 버스로 전송한다.
⑤ 채널 A의 모든 버스 드라이버가 켜기(wake-up) 패턴에 의해 켜진다. 즉, 대기 모드에서 정상 모드로 전환되며 호스트를 켠다.
⑥ 호스트 컨트롤러 2 및 3이 초기화 절차를 수행한다.
⑦ 호스트 2와 3이 자체의 CC를 켜고 초기화한다. 이 과정이 완료되면,
⑧ 채널 B의 버스 드라이버가 그 동안에 켜졌는지 확인한다. 켜지지 않은 경우 호스트가 두 번째 버스 드라이버를 켠다.
⑨ 선택된 호스트에서 두 채널이 모두 켜졌는지 확인한다. 켜지지 않은 경우, 하나 이상의 호스트에서 켜기(wake-up) 명령을 CC로 전송하여 두 번째 채널을 켠다. 채널 B의 켜기(wake-up) 패턴에 의해 이 채널 내에 아직 켜지지 않은 모든 버스 드라이버가 켜진다.
⑩ 채널 B에만 연결된 노드는 채널 B의 켜기(wake-up) 패턴에 의해서만 켜진다(노드 4). 버스 드라이버가 호스트를 켜고,
⑪ 호스트는 초기화 후에 소속 CC를 켠다.
⑫ 두 채널이 모두 켜진 후에 시동 절차를 수행할 수 있다. 그러려면 각 호스트에서 CC에 시동 명령을 전송해야 한다.
켜기 기능은 버스 드라이버, CC 및 호스트의 상호작용에 의해서만 작동한다. 이 장치가 각각 단독으로 켜기를 수행할 수는 없다. 켜기는 FlexRay 자체적으로 구현되는 기능이 아니며 항상 애플리케이션 소프트웨어가 참여해야 한다.

3. 프레임 크기 선택
FlexRay 기반 통신 시스템의 설계 과정에서 사용자는 효율성, 안정성, 보안 및 사용자 친숙성에 영향을 미치는 일련의 결정을 내려야 한다.
따라서 적절한 토폴로지를 선택하는 것 외에도 다양한 구성 매개변수를 정의해야 한다. 이러한 구성 매개변수 중 하나로 프레임 크기가 있다. 정적 영역에서는 모든 프레임이 동일한 크기를 가진다.
기본적으로 이 크기에 의해 구간 크기가 결정된다. 이 통신 시스템의 목표는 가능하면 많은 사용자 데이터를 전송하면서도 오버헤드를 최소화하는 것이다. 그렇기 때문에 프레임 크기가 중요한 역할을 한다.
사용자가 선택할 수 있는 구성 옵션을 보여주는 예가 표 1에 있다.
표 1은 7개의 노드가 있는 클러스터 내에서 가능한 전송 데이터의 분배 방식을 나타낸다. 이러한 분배 방식을 기반으로 서로 다르게 계산된 시나리오가 표 2에 나와 있다. 이를 목표로 메시지 크기(순수 데이터)가 먼저 선택되었다. 이 프로세스에서 FlexRay에 필요한 몇 가지 규칙이 지켜져야 한다. 정적 영역 내의 모든 메시지는 동일한 크기를 가진다. 또한 이 메시지 크기는 짝수이어야 한다.
표 2의 2열에는 서로 다른 네 가지 메시지 크기가 선택되어 있다. 3열은 모든 데이터 바이트를 한 사이클에서 전송하려면 각 메시지 크기로 얼마나 많은 메시지가 필요한 지 보여준다. 메시지 크기(2열)와 메시지 수(3열)를 곱하면 한 사이클 내의 총 순수 데이터 수(4열)가 나온다. 순수 데이터 수를 기준으로 하면 2번이 최고의 솔루션이 될 것이다.
하지만 최적의 솔루션을 결정하려면 메시지가 페이로드 데이터로만 구성되는 것이 아니라 식별자 및 CRC와 같은 부수적인 데이터도 추가되어야 전송 가능하다는 사실을 고려해야 한다. 그러므로 각 메시지에 5바이트의 헤더와 3바이트의 CRC를 추가한 총 메시지 크기가 5열에 나와 있다. 헤더와 CRC와 더불어 각 메시지에는 송신기와 수신기의 활성화에 필요한 시동 시퀀스(TSS)가 추가된다. 메시지를 전송한 후에 노드에서 통신 미디어에 아무런 활동이 없음을 인지하기까지는 다소의 시간이 걸린다. 이 시간을 ‘유휴 상태 인지 시간’이라고 부르며, 구성에서 반드시 고려해야 한다. 6열에 시동 시퀀스와 유휴 상태 인지 시간을 고려할 때 필요한 대역폭이 나와 있다.
클러스터 내의 클록은 항상 상호 간에 변동 폭을 보이며 그 최대값을 정밀도라 한다. 두 메시지 간의 간격이 이 정밀도보다 넓어야만 서로 다른 노드의 메시지가 겹치지 않게 된다. 시스템의 정확한 정밀도는 판단할 수 없기 때문에 이 정밀도에 안전 여유가 추가된다. 정밀도는 항상 추정치이다. 이 예에서는 각 메시지에 클록 변동 폭과 안전 여유로 총 4μs의 안전 여유가 추가되었으며, 이는 10Mbps의 비트율에서 메시지 당 40비트가 추가됨을 의미한다. 필요한 대역폭이 오른쪽 열에 바이트 단위로 표시되어 있다.
순수 데이터(4열)만으로 비교하면 2번이 최고의 솔루션이지만, 다른 요소를 고려하면 4번이 최적의 솔루션이다. 4번은 표시된 예에서 최적의 솔루션이다. 프레임 크기를 선택할 때에는 결과 대역폭만 중요한 것이 아니다. 솔루션의 서비스 편의성과 간편한 확장성뿐만 아니라 특히 테스트 차량의 경우 우수한 디버그 및 오류 탐지 옵션도 고려되어야 한다.
이러한 기능은 수치상으로 표현하기가 훨씬 힘든 것이다. 그렇다고 해서 무시할 수도 없는 요소이다.

요약 및 전망
이 글에서는 FlexRay에서 가장 중요한 기능을 바탕으로 장래성 있는 적용 분야를 중점적으로 검토했다.
또한 다수의 메커니즘 중에서 두 가지 핵심 메커니즘을 선택하여 자세히 설명했다. 다음에 계속되는 클러스터 시동과 관련한 논의는 메커니즘의 상호 작용뿐만 아니라 프로토콜의 복잡성에 대한 감각까지 설명하고 있다.
통신 채널을 통해 클러스터 켜기를 지원하는 토폴로지 구성과 최적의 프레임 크기 선택 방법은 사용자에게 특별한 관심사일 것이다. 이에 대해서는 예제를 통해 다양한 옵션을 다루었다. FlexRay는 현재 다수의 기업에서 평가 중인 통신 프로토콜이다.
이미 초기 구현은 사용자에게 공급할 수 있으며 올해 안에 후속 구현들이 속속 발표될 것이다. 사용자가 FlexRay 기반 통신 시스템을 설계 및 구성할 수 있도록 지원하는 도구가 제공된다.
FlexRay가 CAN과 같은 표준 기술이 되려면 2년 정도는 걸리겠지만, 이를 위한 첫 단계는 이미 완료되었으며 분명히 앞으로 더 많은 단계가 진행될 것이다.



<저작권자 © AEM. 무단전재 및 재배포, AI학습 이용 금지>


  • 100자평 쓰기
  • 로그인


  • 세미나/교육/전시

TOP