임베디드 기초 강좌 5 부록 - 여러종류의 clock source

임베디드 기초 강좌 5 부록 - 여러종류의 clock source

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

 

안녕하세요. 고명호 입니다 

 

 

글의 내용은 http://blog.naver.com/jimypage 에서도 확인하실수 있습니다.

 

 

지난번에는 임베디드 MPU를 다루는데 있어서 심장부가 되는 클럭에 대해서 알아보았습니다.

 

이번에는 임베디드 기기에서 클럭 소스로 사용될 수 있는 회로나 부품은 어떤것이 

 

있는지 알아보고 각각의 장단점을 살펴 보도록 하겠습니다.

 

될수있으면 고 정밀도의 고성능 부품을 사용하면 좋겠으나 각각 비용과 효율성 측면이 있으므로

 

여러가지를 다 알고 있다면 선택에 도움이 되리라 생각해서 글을 써 보았습니다.

 

 

 

 

클럭소스는 임베디드 보드에서의 프로그램이 일정한 시간으로 수행되는데 

 

필요한 클럭을 제공하는 발진 회로를 의미합니다.

 

CPU, MPU가 등장하면서 프로그램을 순차적으로 수행하는데 클럭은 필수적인 요소가 되었지만

 

임베디드 프로그래밍 또는 컴퓨터의 사용전에도 발진회로는 많은곳에서 쓰였습니다.

 

그중 대표적인것이 라디오 전파의 송 수신용도였습니다. 반송파를 만드는데 발진회로가 필요하기 

 

때문이었습니다.

 

 

 

 

최초의 발진소자는 수동소자의 성질에 의해서 발명이 되었습니다.

 

저항, 커패시터, 인덕터등의 수동소자들중 저항을 제외한 두 소자는 

 

각각 전압의 변화에 대해서 저항이 커지는 성질과 저항이 작아지는 성질을 가지고 

 

있습니다. 이러한 커패시터와 인덕터를 병렬로 배치한 후 전원이 차단되면 커패시터에서 

 

충전된 전하는 인덕터를 거치면서 자기장을 형성하여 유도 기전력을 만들고 

 

커패시터의 방전이 이루어진 경우 유도 기전력은 다시 커패시터를 충전시키는 현상을 

 

반복함으로써 발진을 하게 됩니다.

 

https://en.wikipedia.org/wiki/LC_circuit

 

 

 



 

 

이러한 현상을 이용하여 몇몇 발진기들이 발명되었는데 수동소자의 경우 에너지의 소모를 

 

보충할 방법이 없기 때문에 중간에 능동소자인 트랜지스터를 추가하여 계속적으로 발진하는

 

발진기를 만들 수 있었습니다. 

 

콜피츠 발진기, 클랩 발진기, 하틀리 발진기 등이 이러한 종류의 발진기에 속합니다.

 

 

 

 

 

 

 

 

http://www.wizmac.com/2015/lecture/board01_view.htm?No=4&Sub_No=8

 

(위의 사이트에서 그림을 가져왔습니다)

 

 

또한 멀티 바이브레이터 회로를 이용하여 발진을 시킬수도 있습니다.  이것은

 

두개의 트랜지스터가 각각 성질이 다르다는 점에 착안하여 각각의 트랜지스터가 

 

점멸을 반복하여 발진을 하게 됩니다.

 

 

 

 

 

 

 

http://efxkits.com/blog/multivibrators-types-and-thier-working/

 

 

그렇지만 수동소자를 사용하는 위의 발진기들의 경우에는 수동소자의 성질이나 온도등의 

 

변화에 민감해서 그 정밀도가 매우 떨어지는 단점이 있었습니다.

 

초기의 발진기는 라디오등의 방송에 사용되었는데 라디오 방송의 반송파의 주파수가 

 

정확하지 않아서 반송파의 정확한 발진 주기를 만드는 것이 큰 문제가 되었습니다.

 

그래서 이것을 튜닝해 주는것이 큰 문제였다고 합니다.

 

 

현대의 발진기가 발명된것은 1880년 압전현상의 발견으로 거슬러 올라갑니다. 

 

 

 

 

 

 

(압전 현상 - 출처 위키피디아)

 

 

 

 

압전 현상이란 물질에 물리적인 에너지가 가해지면 분극이 일어나는 현상으로 

 

물질에 전기에너지가 가해지면 물리적인 변형이 가해지며 이것이 되돌아가는 과정에서 공진

 

현상을 일으킬 수 있는데 수정(crystal)이 대표적인 물질입니다. 

 

https://en.wikipedia.org/wiki/Crystal_oscillator

 

수정 발진자의 경우 위에서 설명한 LC 공진기나 멀티바이브레이터 등과는 달리 온도나 주위환경과는 

 

무관하게 고유한 진동을 일으키며 이 진동의 진동수는 전적으로 수정편의 두께나 결정방향에 

 

의존합니다.  따라서 정밀한 클럭소스로 사용할수 있습니다.

 

 

 

 

 

시계에 사용되는 수정 발진자 

 

 

 

 

 

 

 

시골집이나 옛날 드라마에서 나오는 '괘종시계'는 태엽에 감긴 에너지를 진자의 움직임으로 

 

바꾸어 이것을 이용해서 시간을 표시하는 시계입니다. 

 

 

단지 진자의 기계적인 움직임으로 시간을 측정하는 장치였기 때문에 오차가 많다는 것은 

 

당연한 것이었습니다. 

 

 

그렇지만 수정 발진자가 상용화 되면서 이러한 괘종시계보다 정밀도가 우수한 '쿼츠 시계'가 

 

널리 사용되게 되었습니다. 

 

 

'쿼츠 시계'란 수정발진자를 이용해서 정확한 시간을 표시한 아날로그 시계를 의미합니다.

 

 

 
 

 

이러한 수정 발진기의 상업적인 이용은 1910년 후반부터 이루어 졌습니다.

 

최초의 수정발진자는 천연 수정을 얇게 잘라내어서 사용하였으나 

 

정확한 주파수를 생성하기 위해서 인공적으로 순수한 수정을 결정화 하는 기술이 발명되어서

 

오늘날의 수정 발진기는 전부 인공적인 수정으로 만들어 지고 있습니다.

 

 

 

 

 

 

 

(수정 발진자 그림)

 

 

따라서 주위환경의 변화에 무관하게 대단히 고 정밀도의 클럭을 얻을 수 있게 된것입니다.

 

그렇지만 수정 발진자에도 단점이 있는데 수정편을 무한정 얇게 만들수는 없으므로 

 

현재의 기술로는 50Mhz 정도까지가 발진 한계로 인식되고 있습니다.

 

수정발진자가 진짜 수정이 맞을까요?? 

 

뜯어보면..  

 

 

 

진짜로 수정 판이 들어 있네요.. ㅎㅎ

 

 

 

 

 

 

(수정발진자의 내부)

 

 

 

 

압전현상을 이용하는 또다른 발진기로는 세라믹 발진기 (ceramic resonator)가 있습니다.

 

세라믹의 경우에도 압전현상으로 발진을 일으키지만 수정 발진기보다는 좀 덜 정확합니다.

 

그러나 가격이 저렴하다는 장점이 있습니다.

 

 

 

 

 

 

(세라믹 레조네이터)

 

 

발진기의 발진을 일으키기 위해서는 계속적인 전기 자극이 필요합니다. 이러한 전기 자극을 

 

주기 위해서는 수정발진자 주위에 회로가 필요한데 이러한 회로를 하나로 패키지화하여 

 

모아 놓은것을 오실레이터라고 합니니다. 

 

 

 

(오실레이터 그림)

 

 

 

오실레이터는 주변 회로가 간단해지고, 정확하다는 장점이 있어 전자회로의 클럭소스로 

 

많이 쓰입니다.

 

 

 

우리가 임베디드에 사용하는 클럭의 경우에도 위의 여러가지 발진 회로를 사용할 수 있습니다.

 

대개는 수정 발진자를 사용하나 그밖에도 목적에 맞는 다양한 구성으로 클럭을 

 

생성할 수 있도록 하고 있습니다.

 

단지 클럭 입력핀의 양단에 각각 수정발진자나 기타 클럭원과 연결만 하면 

 

MPU 안에 내장되어 있는 나머지 부품과 함께 발진을 하기 때문에   

 

간단하게 클럭을 구성할 수 있습니다. 

 

 

 

AVR의 클럭 설정부분을 참고하면, 몇가지 종류의 클럭소스를 선택 할 수 있습니다.

 

(단 각각의 클럭 소스나 주파수에 따라서 사용되는 수동 소자가 다르기 때문에 

 

MPU의 퓨즈 비트에는 어떤 클럭소스가 사용되었는지 설정하는 비트가 존재 합니다.

 

주의 !! 퓨즈비트의 값을 잘못 설정하면 MPU는 작동을 하지 않습니다.)


클럭소스의 결정은 클럭이 발생하기 이전에 결정되어야 하는 것이기 때문에 

 

MPU 내부의 프로그램으로는 이것을 설정할 수 없고, 퓨즈비트라는 설정용 비트에 그 

 

종류가 설정되어 클럭의 소스로 사용됩니다.

 

http://www.electroschematics.com/9481/avr-clock-source-fuse-bits/

 

 

 

 

 

 

(AVR MPU의 다양한 클럭소스)


 

마찬가지로 AVR 이외의 다른종류의 임베디드 MPU의 경우에도 위에서 설명한 발진기들을 

 

포함한 다양한 클럭소스로부터 클럭을 생성해 낼수 있습니다. 

 

MPU 내부에 클럭 발진에 사용되는 회로를 

 

내장하고 있기 때문에 굳이 비싼 오실레이터를 쓰지 않고도 수정발진자만으로도 정밀한  

 

클럭을 생성할 수 있습니다.

 

(예전의 CPU들이나 MPU의 경우에 클럭 입력핀이 하나밖에 없는 경우가 있는데 이러한 

 

경우에는 수정발진자에 발진 회로를 구성하고 이 출력을 클럭 입력에 입력 해야 했습니다.

 

즉 부가회로가 더 필요했습니다.)


 

 

또한 최근의 MPU나 FPGA의 경우 RC 수동소자로 구성된 발진 회로가 이미 내장되어 있어서 

 

외부 클럭이 없이도 초기의 값을 읽어들이거나 프로그램을 실행할 수 있습니다. 이러한 경우에는 

 

MPU는 외부모듈이 하나도 없더라도 원하는 동작을 수행할 수 있습니다. 

 

- internal rc oscillator

 

ex) ATTiny 시리즈 혹은 PIC시리즈중 일부

 

 

 

MPU의 클럭은 상한선은 있으나 하한선은 거의 없기 때문에 

 

목적에 따라 필요한 클럭소스나 주파수를 선택할 수 있습니다.

 

대개는 레퍼런스에서 사용된 클럭 주파수를 사용하나 전원관리가 중요한 경우 

 

클럭을 좀더 낮추어 사용하기도 합니다.

 

 

 

 

클럭에대해서 어느정도 감이 잡히셨는지요?

 

이번에는 MPU의 클럭원으로 사용되어지는 다양한 발진회로에 대해서 알아 보았습니다.

 

읽어 주셔서 감사합니다.

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

 

관련 제품

 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P000360693

 

http://www.icbanq.com/P000362952/S

 

http://www.icbanq.com/P000541714

 

 

 

 

 

참고 사이트

 

https://www.sparkfun.com/tutorials/95

 

https://www.maximintegrated.com/en/app-notes/index.mvp/id/2154