soc.knu.ac.krsoc.knu.ac.kr/pdf/domestic/flexray.pdf · ' s ls 3 3 ' stu?% ®

6

Upload: dangthien

Post on 08-May-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

그림 1. FlexRay 통신 네트워크 노드 구조

그림 2. FlexRay 통신 제어기 구조

(Time-triggered) 방식을 모두 지원하며 안전성, 신

뢰성, 편의성 향상을 위한 자동차 내 고속 제어시스

템을 위해 개발된 차세대 자동차용 통신 프로토콜

이다.[2]

FlexRay 통신 제어기 (Communication

Controller)는 FlexRay 통신의 핵심요소로서 고속,

고신뢰성 통신 네트워크를 구현한다. 본 논문에서는

FlexRay 통신 제어기에서 각 노드간 동기화에 핵심

적인 역할을 수행하는 클럭 동기화 프로세스(Clock

Synchronization Process; CSP)의 효율적인 하드웨

어 구조를 제안한다. 특히, CSP 모듈에서 클럭 동

기 오류를 보정하기위한 연산을 하드웨어적으로 최

적화 하기위한 방법, 그리고 하드웨어 공유 및 파이

프라인 기법을 사용하여 면적 및 연산 효율을 높일

수 있는 하드웨어 구조를 제안한다.

Ⅱ장에서는 FlexRay 통신 프로토콜에 대한 간략

한 설명과 FlexRay 통신 네트워크의 핵심인 통신

제어기의 구조 및 기능에 대해 설명한다. Ⅲ장에서

는 CSP 모듈의 클럭 동기화 동작을 간단하게 설

명하고 이의 효율적인 하드웨어 구조를 제안하고,

설계된 CSP 모듈의 검증을 수행한다. Ⅳ장에서 결

론을 맺는다.

Ⅱ. FlexRay 통신 제어기2.1 FlexRay 통신 프로토콜

FlexRay 통신 프로토콜은 두 개의 채널을 지원하

며, 각 채널당 최고 10Mbps의 속도를 지원한다. 특

히, 데이터 전송 시 TDMA(Time Division Multiple

Access) 방식을 사용한 정적 세그먼트 부분과

FTDMA(Flexible Time Division Multiple Access)

방식을 사용한 동적 세그먼트 부분을 혼용하여 사

용하기 때문에, 데이터의 신뢰성 및 유연성이 높다.

이러한 장점 등으로 FlexRay는 차세대 차량용 백본

네트워크로써 주목받고 있다.[1][2]

2.2 FlexRay 통신 제어기

FlexRay 통신 네트워크를 구성하는 각 노드는 그

림 1과 같이 호스트(Host), FlexRay 통신 제어기

(FlexRay Communication Controller) 및 버스 드라

이버(Bus Driver)로 구성된다.

FlexRay 통신 제어기는 FlexRay 통신 네트워크

의 핵심 부분으로 버스 드라이버를 통해 들어오는

메시지 데이터를 받아 처리하고, 현재 통신 제어기

의 상태 정보를 호스트에 전달하며, 호스트로부터

받은 제어 신호 및 데이터를 적절히 처리하여 이를

버스 드라이버에 출력하는 역할을 수행한다. 통신

제어기의 구조는 그림 2와 같다.

통신 제어기는 코딩디코딩 프로세서(CODEC,

Coding and Decoding Process), 미디어 접근 제어

프로세서(MAC, Media Access Control Process), 프

레임과 심볼 처리(FSP, Frame and Symbol

Processing), 클럭 동기 프로세서(CSP, Clock

그림 4. . CSP 모듈의 클럭 동기화를 위한 동작

Synchronization Process)로 구성된 4개의 코어 및

CHI(Controller Host Interface), POC(Protocol

Operation Control) 모듈 로 구성된다. 각 코어들은

더 작은 단위의 모듈로 나누어지며 동작 모드에 따

라 코어의 동작이 이루어진다.

각 코어의 동작을 살펴보면, 우선 POC는 CHI를

통해 전달되는 호스트의 명령을 처리하여 각 코어

의 모드 변화를 포함한 현재 통신 제어기의 상태를

호스트에 제공한다. MAC은 노드의 Frame을 전송

하는 부분으로써 전송 할 데이터를 수신 받아 데이

터를 Frame으로 변환한다. 그리고 Frame 전송 요

청이 있을 경우, CODEC으로 Frame을 전송한다.

FSP는 Frame과 각 노드의 제어 정보를 가진

Symbol의 유효성을 판단하는 부분으로 CODEC 코

어로부터 Frame과 Symbol을 수신 받는다. 그리고

Frame과 Symbol의 타이밍 및 데이터 검사를 하며,

호스트에 Frame을 전송한다. CODEC은 Frame을

encoding/decoding 한다. Encoding의 경우, MAC

으로부터 네트워크로 전송할 Frame을 수신하여,

Frame에 Symbol을 삽입한 후 bitstrream으로 변환

하여 버스 드라이버로 전송한다. decoding의 경우

버스 드라이버로부터 bitstream을 수신하여 Frame

과 Symbol을 추출하여 FSP로 전송한다.

한편 CSP는 FlexRay 통신 시스템에서 각 노드간

의 클럭 동기화를 위한 핵심 모듈이다. 이후 3장에

서는 CSP 모듈의 클럭 동기화 동작을 간단하게

설명하고, CSP 설계를 위한 효율적인 하드웨어 구

조를 제안한다. 특히, CSP 모듈에서 클럭 동기 오

류를 보정하기위한 연산을 하드웨어적으로 최적화

하기위한 방법, 그리고 하드웨어 공유 및 파이프라

인 기법을 사용하여 면적 및 연산 효율을 높일 수

있는 하드웨어 구조를 제안한다.

Ⅲ. 제안된 CSP 모듈

본 장에서는 3.1절을 통해 CSP 모듈의 동작을 살

펴보고, 3.2 절을 통해 CSP 모듈의 설계와 3.3절을

통해 CSP 모듈 검증에 대해 살펴본다.

3.1 CSP 모듈의 동작

CSP는 FlexRay 통신 시스템에서 각 노드간의 클

럭 동기화를 위한 핵심 모듈이다. 아래 그림 4를 통

해 FlexRay 각 노드간 클럭 동기화를 위한 기본 동

작을 살펴보면, 우선 MAC에서는 스타트 노드로부

터 시작된 사이클을 기준으로 데이터 입출력이 수

행된다. 각 사이클은 TDMA 방식으로 프레임 전송

을 위한 static segment(static) 및 FTDMA 방식으로

프레임 송수신을 위한 dynamic segment(dyn)가 있

으며, FlexRay 각 노드의 제어는 symbol

window(sym)를 통해서 수행된다. NIT(Null Idle

Time)는 주어진 사이클을 보정하는 역할을 수행한

다. 이러한 MAC의 데이터 송수신은 MTG에서 생

성된 매크로틱을 기준으로 수행되며, MTG의 매크

로틱 오류 계산은 CSP로부터 수행된다. CSP에서의

클럭 동기화 오류 계산 동작을 살펴보자. CSP의

measurement phase 에서는 스타트 노드로부터 시

Number of Measurement

Values (zLength)K

Midpoint

(Correction values)

1-2 0 (max1 + min1) / 2

3-7 1 (max2 + min2) / 2

>7 2 (max3 + min3) / 2

표 1 . FTM 알고리즘을 위한 parameter K

그림 5. FTM 알고리즘 흐름도

작된 사이클 시간을 기준으로 MAC에서의 static 시

간과 자신에게 미리 설정된 static 시간을 서로 비

교하여 오차를 측정한다. CSP에서는 오차 측정값

(measurement values)을 사용하여 각 사이클의 시

간 오차를 수정하기 위해 매 사이클 마다 오프셋

수정 값(offset correction value)을 계산하여 홀수

사이클 마다 적용한다. 그리고 각 노드간의 사이클

오차를 수정하기 위해 홀수 사이클에서는 rate 수정

값(rate correction value)을 계산하여 각 사이클 마

다 적용한다. 이러한 과정을 통해서 각 노드간의 데

이터 송수신 동기화가 이루어지며, 실제 동기화에

가장 중요한 역할을 수행하는 모듈은 CSP이다.[3]

CSP에서 수정 값(Correction values)을 계산하기

위하여 FlexRay Communication System Protocol

Specification에서 제시하는 알고리즘은 Fault-tolera

nt midpoint algorithm(FTM)이다. 그림 5는 FTM

알고리즘의 흐름도를 나타낸다.

FTM 알고리즘은 측정된 값을 Register에 저장하

고, 측정된 값들의 수(zLength)를 계산한다. 그리고

측정된 값을 정렬하여 zLength의 범위에 따라 표 1

을 참고하여 K 값을 결정하게 되며, K 값에 따라

중간 값(midpoint) 연산을 수행하게 된다. K=0이면

sorting된 값 중 가장 큰 값(max1)과 가장 작은 값

(min1)의 중간 값을 구한다. K=1이면 두 번째로 큰

값(max2)과 두 번째로 작은 값(min2)의 중간 값을

구하며, K=2일 경우 3번째로 큰 값(max3)과 3번째

로 작은 값(min3)의 중간 값을 구한다. 이렇게 구해

진 중간 값을 이용하여 오프셋 수정 값과 rate 수정

값을 계산한다.

예를 들어 3개의 값이 측정되었다면 zLentgth는

3이므로, k=1이 된다. 다음 단계는 3개의 수를

sorting 하고, 이 값을 통해 max1, max2, max3,

min1, min2, min3가 결정된다. 현재는 k=1이므로

중간 값은 (max2 + min2 )/2 가 된다.

3.2 CSP 모듈의 설계

본 절에서는 FlexRay의 클럭 동기화의 핵심 모듈

인 CSP에 대한 하드웨어 구조를 제시한다. 그림 6

은 CSP Block Diagram이다. CSP는 CSP control

블록, CSS 블록, CSP 블록, MTG 블록으로 나눈다.

제안된 CSP control 블록은 Cold_start,

Cycle_start등의 input signal을 통해 CSS와 CSP,

MTG 모듈의 control signal을 생성한다. CSS 블록

을 살펴보면 integration_control 블록과

Synchronization startup process 모듈로 나누어진

다. Integration_control 블록은 Synchronization

startup process 모듈을 제어하는 블록으로써

cold_start signal이 들어오면 Synchronization

startup process를 정지하고, 그렇지 않으면

Synchronization startup process 모듈을 시작하여,

clock 동기화를 스타트 업시킨다.

CSP block은 클럭 동기화를 위한 block으로써,

클럭 동기화를 위하여 시간 오차를 측정하고, 측정

된 값을 Register_file에 저장한다. 또한, 측정된 값

을 FTM 알고리즘을 이용하여 오차의 중간 값을 계

산하여 오프셋 오차와 rate 오차를 계산하는

그림 6. CSP 하드웨어 구조

Calculation Offset, Calculation rate 모듈에 넘겨준

다. 두 모듈에서는 오차의 중간 값을 이용하여 rate

수정 값과 offset 수정 값을 계산하여 MTG로 보낸

다. MTG 모듈에서는 정정된 rate 수정 값과 offset

수정 값을 적용하여 Macrotick과 Microtick

CycleCounter를 만든다.

한편, 앞에서 언급된 FTM 알고리즘을 하드웨어

적으로 구현하면 2가지 문제를 가지고 있다. 첫째는

최대 15개의 14bits register를 sorting을 해야 하는

문제가 발생한다. 이를 위해 Measurement value 하

나당 15번의 비교가 필요하며, 이를 sorting 하려면

많은 delay가 발생한다. 둘째, 오프셋 수정 값과

rate 수정 값을 계산하기 위해서는 많은 시간이 걸

리기 때문에 value를 측정하는 동안에 오프셋 수정

값과 rate 수정 값의 계산이 이루어져야 하므로, 이

를 위해 필요한 중간 값 계산도 value를 측정하는

동안 이루어져야 한다. 하지만 제시된 알고리즘은

측정이 끝난 후에 중간 값 알고리즘을 계산하므로

오프셋 수정 값과 rate 수정 값의 계산이 그만큼

delay가 발생하게 된다. 이러한 두 가지 문제를 해

결하기 위하여 그림 7의 하드웨어 구조를 제안하였

다.

제안된 구조는 6개의 register를 가지며, 측정된

값의 Minimum(3개)과 Maximum(3개)을 구하는 구

조로 2가지 기능으로 분리하였다. 왼쪽 블록은 측정

된 값이 들어오면 6개의 비교기(Comparator)와 6개

의 register를 이용하여 값을 비교할 수 있도록 파

이프라인 구조로 설계하였다. 측정된 값이 들어오면

비교기1과 비교기4에서 각각 max1, min1과 비교한

다. 만약 max1보다 크면 max1에 측정값이 저장되

며, max1의 값은 max2로, 기존의 max2의 값은

max3로 저장되며 기존의 max3의 값은 버려지게

된다. 만약 max1보다 작으면 다음 사이클에 비교기

2에서 max2와 비교한다. 마찬가지로 측정된 값이

min1과 비교하여 min1보다 작으면 min1에 저장되

고, 기존의 min1의 값은 min2로 저장된다. 그리고

기존의 min2의 값은 min3로 저장되고, 기존의

min3값은 버려지게 된다. 만약 측정값이 min1보다

크다면, 다음 사이클에 비교기5에서 min2와 비교된

다.

본 구조에서는 측정값을 저장하고 sorting 했던

spec과는 달리 측정된 값이 들어오는 즉시 비교하

여 register에 저장함으로써 비교 횟수와 register 수

를 줄였다.

오른쪽 블록은 midpoint를 계산하는 블록이다.

zLength는 측정된 값의 수를 counter한 값을 나타

낸다. 측정이 끝났음을 알리는 en_done 시그널이

들어오면 Mux가 enable되어 zLength 측정된 값에

그림 7. 제안된 FTM 알고리즘의 하드웨어 구조

따라 세 가지 경우 중 하나를 선택해서 midpoint를

출력한다. Midpoint 계산에 필요한 나누기 2 연산

은 Shift 연산을 이용하여 간단하게 구현하였다.

3.3 CSP 모듈의 검증

본 논문에서는 ModelSIM 6.5를 이용하여 CSP

모듈의 검증과 FTM 모듈을 검증하였다. 측정이 끝

난 후, FTM에서 2 클럭 후에 중간 값을 CSP로 넘

겨줌으로써 rate와 offset의 연산을 수행함을 알 수

있었다. 이를 통해 중간 값 연산이 CSP의 rate와

offset 수정 값을 계산하는데 필요한 중간 값 연산

의 delay를 줄일 수 있었다.

검증된 HDL을 CMOS 0.18-μm 라이브러리를 이

용하여 합성하였다. 합성한 결과는 CSP 전체 모듈

의 총 gate 수가 약 233,565개, 이중 제안된 FTM

gate 수는 약 14,955 개였으며, 이는 전체 모듈의

약 10%를 차지하는 비율이다.

Ⅳ. 결 론

본 논문은 FlexRay 통신 제어기의 동기화를 수행

하는 CSP를 설계하기 위한 하드웨어 구조를 제안

하였다. 특히, CSP 동기화를 위해 오차 측정 값의

중간 값을 구하기 위한 FTM 알고리즘에 관한 연구

를 진행하였다. 본 논문에서는 하드웨어 공유 기법,

파이프라인 기법을 사용하여 CSP의 효율적인 하드

웨어 구조를 제시하였다. 이를 HDL을 사용하여 설

계한 후, 시뮬레이션을 통해 검증하였다. 이를 통해

동기화를 위한 시그널 오차 측정이 끝난 후, 제안된

FTM 하드웨어 구조를 통해 중간 값이 출력까지는

2 클럭이 필요함을 알 수 있었다. 그 결과 rate,

offset 수정 값을 계산하는데 필요한 중간 값이 바

로 전달되어 delay를 줄일 수 있었다. 이는 본 논문

에서 제시하는 하드웨어 구조가 많은 연산을 필요

로 하는 CSP를 위해 효율적인 구조를 제공함을 알

수 있었다.

감사의 글

본 연구보고서는 정보통신부 출연금으로 ETRI, SoC 산업진흥센터에서 수행한 IT SoC 핵심설계인

력 양성사업의 연구결과입니다.본 연구보고서의 내용을 발표할 때에는 반드시

ETRI, SoC 산업진흥센터 IT SoC 핵심설계인력양

성사업의 결과임을 밝혀야 합니다.

참 고 문 헌

[1] FlexRay Communication System Protocol Specifica-tion Version 2.1 Revision A, 2005

[2] FlexRay Consortium, http://www.flexray.com[3] J. L. Welch and N. A. Lynch, "A New Fault-

Tolerant Algorithm for Clock Synchronization", vol.77 no.1 pp.1-36, April 1988