반응형

 

1. 클럭 신호란?

1) 클럭의 개념(역할)

-. 제어기를 담당하다 보면 PSI, UART, I2C 등 여러 가지 통신방식을 만나게 됩니다. 그러면 이때 빠지지 않고 등장하는 것이 바로 클럭(CLK)이죠. 앞뒤 내용 다 빼고 클럭이 하는 역할만 말하자면 여러 통신이나 기타 동작들이 이루어질 때 이것들이 서로 엉키지 않도록 동기화시켜주는 지표로 사용됩니다.

 

-. 말이 좀 어려우니 예를  들어 설명을 해보면 A소자와 B소자가 에게 정보를 주 고있다고 했을 때 만약 클럭이 없다면? A소자가 01101101이라는 데이터를 보냈다고 생각해 봅시다. 그런데 B소자는 A소자와 동기화된 클럭이 없기 때문에 이 신호를 0011110011110011이라고 인식하게 돼 버렸고 두 소자의 통신상에 문제가 발생하게 되었습니다.

 

 

-. 문제가 발생한 핵심은 A소자와 B소자가 각각 하나의 신호를 가지고 데이터로 변환하는 시점(빨강 점선)이 다르단 것입니다. 이처럼 같은 신호를 가지고도 서로 다르게 해석할 수 있고, 서로 어느 시점에 데이터를 전송해야 할지 아니면 읽어야 할지를 알 수 없으니까 클럭이 없다면 통신하기가 여간 힘든 게 아니겠죠. (만약 B소가 A소자로부터 High입력을 받으면 무조건 1번 동작을 하고 Low입력을 받으면 무조건 2번 동작을 한다 와 같이 서로 간의 통신이 아닌 아주 단순한 입력 감지만 하면 된다면 굳이 클럭을 적용할 필요까지는 없겠죠.)

 

2) 클럭의 구성요소

-. 클럭신호는 그림만 봐도 대충 알 수 있지만 신호의 크기, 주파수, 듀티비 등으로 구성됩니다. 하지만 대부분의 클럭 신호가 그 크기는 동작전압으로 가져다 쓰고, 듀티는 거의 대부분 50%를 쓰기 때문에 실질적으로 고려되는 요소는 주파수이지요. 그래서 타이밍 이슈 관련된 품질문제 대책서를 보면 클럭이Hz 짜리인지의 내용만 있고 듀티나 신호의 크기는 없는 것입니다.

 

3) 클럭의 역할

-. 클럭의 역할은 크게 2가지입니다.

-. 첫 번째는 위에서도 언급했듯 디지털 신호가 올바르게 전송, 수신되도록 시간 간격을 동기화하는 역할입니다.

-. 또 하나의 용도는 시간을 측정하는 역할입니다. 전자식 손목시계를 Quartz 시계라고도 하죠? 그 이유는 시계 안에 수정 발진자가 들어있어 수정의 진동주기를 가지고 시간을 측정하기 때문에 Quartz시계라고 합입니다. 전장 제어기에서 시간을 측정하는 용도는 크게 2가지입니다. 먼저 시계처럼 쓰이는 경우입니다. AVN같이 시간 정보가 중요한 제어기들은 자체적으로 현재시간을 계산할 수 있는 RTC(Real Time Clock) 모듈이 들어가는데 이는 앞서 예로든 전자시계와 동일한 용도, 구조라고 생각하셔도 됩니다. 두 번째는 MCU가 SW 설계 오류 등의 이유로 무한루프를 돌 경우들처럼 어떤 특수한 상황에 빠졌을 때 그런 상황임을 인지하는 용도로 쓰입니다.(대표적인 예가 와치독이죠) , 무한루프에 빠져 일정 시간 이상 정상 동작을 못할 경우 보통 MCU 리셋을 시켜주는데 이때의 일정 시간을 카운팅 하는 용도로 쓰입니다. 와치독이나 인터럽트에 의한 타이밍 이슈 방지용도 이런 건 설명하면 내용이 복잡해질 수 있으니 나름 쉽게 해서 가장 아래 참조로 빼보았습니다.

 

참고) RTC(Real Time Clock)
이름 그대로 실시간 시계입니다. 앞서 말한 바와 같이 차량에서는 AVN처럼 시간이 중요한 제어기에 들어가는 모듈(소자)로 차량 전원이 나가더라고(차량 정비 등의 이유로 B+단자 탈거 등) 자체적으로 시간을 측정하는 게 가능하도록 한 것입니다. RTC는 소비전력이 낮기 대문에 보통 동전 모양의 배터리를 같이 장착하여(슈퍼 켑을 달기도 합니다) 차량 전원이 거지더라도 전원을 공급받아 시간을 측정합니다.
사진은 아두이노용 RTC모듈로 대충 어떻게 생겼는지 참고만 하시면 될 거 같습니다.

 

2. 클럭 신호 발진 소자 (크리스탈 vs 오실레이터)

-. 클럭 신호를 발생시키는(발진) 소자는 크게 크리스탈(X-TAL)과오실레이터(OSC)가 쓰입니다.(물론 세라믹이나 뭐 기타 다른 물질을 이용해서 발진 소자를 만들기도 합니다만 대표적인 예는 크리스탈이므로 다른 물질들은 언급하지 않겠습니다.) 사실 둘을 구분하는 게 의미가 없는데(OSC안에 크리스탈이 들어가기 때문) 이 두 가지가 따로 언급되는 경우가 왕왕 있으니 잘 모르는 사람이 회로를 이해한다는 관점에서 설명해보도록 하겠습니다.

 

-. 먼저 발전기로서 이상적인 특성은 발진 주파수가 매우 정확하고, 주변 온도나 습도에 안정적으로 발진을 해야 합니다. 이런 면에서 가장 뛰어난 발진자가 크리스탈(x-tal)입니다. 소리냐면 수정(크리스탈)에 전기를 흘려주면 일정 주기의 주파수로 진동을 하는데 이걸 가져다가 클럭 신호로 쓰는 회로를 발진 회로라고 합니다. , 크리스탈(X-TAL)소자 단독으로는 클럭을 만들어 낼 수 없어 크리스탈소자 주변에 발진 회로를 구성해주어야 합니다.

 

-. 크리스탈 주변에 발진 회로를 구성해야 하는 번거로움을 해결한 게 OSC(Oscillator) 소자입니다., 이 소자 내부에 크리스탈과 발진 회로가 모두 들어있는 소자이죠. 때문에 OSC에 전원만 넣어주면 클럭 신호가 나옵니다.

사진출처 : 위키백과

 

참고) 인터럽트에 의한 타이밍 이슈 발생 (어려우시면 몰라도 됩니다.)

주변 제어기들과 같이 어떤 일을 하는 제어기의 경우 위처럼 인터럽트가 발생하면 서로 타이밍이 틀어지는 문제가 발생할 수 있습니다. 뭔 말인지 이해하기 쉽게 설명을 해보면(예입니다실차에선 이렇게 되지 않습니다.) 엉따(온열시트) 스위치를 눌러 엉따(온열시트)를 동작시켰습니다. 그런데 이때 좌회전을 위해서 좌측 깜빡이를 넣었다면? 좌측 깜빡이(인터럽트)가 들어오는 동안 전구를 켜줘야 되니까 전구가 켜져 있는 동안에는 엉따(온열시트)를 켜는 일은 못하게 되는 거죠.

(예제가 좀 이상하긴 한데… 타이밍 이슈 식으로 설명을 하기에는 너무 어려워질 거 같아서 좀 부족하지만 이 정도 예로 하겠습니다.)

이럼 이런 타이밍이 틀어지는 문제를 잡기 위해서는 어떻게 해야 할까요?? 방법이야 많겠지만 보통은 타이머를 구현해서 인터럽트가 발생하더라도 일정 주기(시간) 안에는 무조건 되돌아와서 타이밍이 틀어지지 않도록 하는 게 대부분입니다.


 

반응형

+ Recent posts