TI, 신뢰성 높은 통신 인프라 장비를 위한 초저 지터 클록 제너레이터 제품군 출시

TI (대표이사 켄트 전)는 핀 컨트롤 옵션을 통한 유연한 제어가 가능한 100 펨토초(fs)의 초 지터를 제공하는 새로운 클락 제너레이터 제품군을 출시한다고 밝혔다. 이 새로운 클록 제너레이터는 기존의 레퍼런스 클록 솔루션보다 뛰어난 지터 성능을 제공하여 시스템 개발자가 시스템 타이밍 마진과 BER(bit error rate)을 최적화함으로써 데이터 전송 오류를 줄일 수 있다. 이러한 장점을 통해 신뢰성이 뛰어난 통신, 네트워킹, 서버 및 컴퓨팅, 고성능 산업용 장비 설계가 가능하다. 또한 LMK033x8 클록 제너레이터는 보다 용이한 시제품 개발 및 평가 작업을 위해 다양한 기능들을 제공함으로써 설계 작업 시간을 단축할 수 있다. (보다 자세한 내용은 www.ti.com/lmk033xx-pr-kr 참고)

 

LMK033x8 제품군의 주요 기능 및 장점
- 유연한 지터 공급을 통한 초저 지터 성능 달성: 8개의 출력이 가능한 고성능 PLLatinum™ 플랙셔널-N(fractional-N)형 PLL(phase-locked loop)을 2개까지 제공하여 멀티 통합 대역폭(1KHz~5MHz 및 12KHz~20MHz)에 걸쳐서 100fs RMS(root mean square)의 초저 지터 성능을 달성한다. 이처럼 지터가 매우 낮은 점을 활용함으로써, 개발자들은 시스템 BER을 향상시키고 통신 인프라 장비의 신뢰성을 높일 수 있다.


- 유연하고 간편한 구성: 경쟁 제품이 OTP(one-time programmable) 메모리를 제공하는 반면에, LMK033x8은 고유한 핀모드 제어를 통하여 개발자들은 사전에 프로그램된 주파수 스타트업 플랜 71가지 중에서 간편하게 선택할 수 있으며, 또한 EEPROM(electrically erasable programmable read-only memory)을 통합하여 보다 쉽게 맞춤화가 가능하며, I2C 인터페이스를 제공하므로 시스템 개발자가 디바이스 구성을 완벽하게 제어할 수 있다.


- 설계 시간 단축: 글리치가 발생하지 않는 글리치리스 파인/코스 (Glitchless fine/coarse) 주파수 마지닝 기능을 제공하여 개발자들은 시제품에 대한 설계 검증과 프로세스 검증(DVT/PVT) 시 스트레스 및 승인 테스트를 간소화할 수 있다.
- 전원 공급 잡음에 대한 내구성: LDO(low-dropout regulator)를 통합하여 복잡한 필터 설계 없이 전원 공급 잡음에 대한 내구성을 제공한다.

설계 시간을 단축시키는 툴 및 지원
TI는 평가 모듈(EVM)을 제공하므로 설계자들은 이들 디바이스를 쉽고 빠르게 평가할 수 있다. M은 현재 공급 중이며, LMK03318EVM은 2015년 4분기부터 TI store 및 공인 대리점에서 299달러에 구입이 가능하다. TI의 WEBENCH® 클록 아키텍처 툴은 LMK033x8 제품군과 여타 TI 클록 및 타이밍 디바이스를 이용한 설계 작업을 간소화한다. 이 툴은 포괄적인 디바이스 데이터베이스를 바탕으로 시스템 요구사항에 적합한 단일 또는 멀티 디바이스 클록 트리 솔루션을 제안한다. 설계자들은 이 툴을 사용하여 PLL 필터 설계, 위상 잡음 시뮬레이션, 원하는 성능 및 가격대의 클록 트리 설계 최적화 작업이 가능하다.또한 TI E2E™ 커뮤니티의 클록 및 타이밍 포럼에서는 솔루션을 검색하고, 동료 엔지니어 및 TI 전문가들로부터 도움말을 얻고, 지식 공유 및 문제를 해결할 수 있다.

 

패키지, 공급
LMK033x8 클록 제너레이터는 7mm x 7mm QFN(quad-flat no-lead) 패키지로 제공된다. 이들 클록 제너레이터는 TI의 클록 및 타이밍 포트폴리오에 새롭게 추가되는 신제품이다. 이 포트폴리오는 고성능 및 유연성을 제공하는 LMK03806과 CDCM6208 클록 제너레이터가 포함하고 있다. 또한 LMK00301 범용 차동 버퍼 및 LMK00338 PCI Express Gen 3 HCSL(high-speed current steering logic) 버퍼와 같은 초저 가산지터 팬아웃 버퍼 제품들을 포함한 방대한 타이밍 제품들을 제공하여 LMK03328 및 LMK03318과 함께 사용할 수 있다. 


 

임베디드 기초 강좌 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

 

 

임베디드 기초 강좌 5 - clock


임베디드 기초 강좌 5 - clock

 

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


 

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

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

 일반적인 TTL등의 descrete IC를 이용하는 전자 기기에서는 클럭이 필요하지 않은 경우도 

 많이 있습니다만 임베디드 MPU를 제어하는데는 정해진 순서대로 프로그램이 

 수행되어야 하는데 이러한 프로그램이 정확한 시간에 수행되기 위해서 

 클럭은 필수적인 요소가 됩니다.

 

 

 

단순한 키트류의 부품또는 CPLD나 FPGA를 제외하고 프로그램이 수행되는 모든 전자기기에는

 클럭이 존재합니다. 

 

 

 

일반적으로 똑같은 MPU를 사용하는경우에 클럭이 빠르면 명령어의 수행이 

 더 빠르게 이루어 지게 됩니다. 즉 6Mhz로 동작하는 회로에서 12Mhz로 동작하도록 

 클럭을 변경하게되면 모든 작업들이 2배로 빨리 실행되게 됩니다.

 (그렇지만 MPU의 정해진 한계클럭이 존재하기 때문에 

 무한정 클럭을 올릴수는 없고 또한 클럭이 올라감과 더불어 소비전력도 비례하여 

 늘어나기 때문에 모바일 기기에서는 될수있으면 똑같은 작업을 하더라도 적은 클럭으로 

 작업을 수행하는 것이 유리합니다.) 

 

 

클럭의 소스로 쓰이는(클럭을 발생시킬수 있는) 부품에는 몇가지종류 또는 회로가 존재합니다.

 (다음회에는 클럭의 원천이 되는 몇 종류의 부품 또는 회로에 대해서 알아 보겠습니다)

 아두이노같이 이미 부품이 실장된 전자 회로의 경우 다음의 모양처럼 생긴 부품들을 본적이 

 있을 것입니다.  

 



 

(그림1. 세라믹 레조네이터 와 수정 크리스탈)

 

 

 

 

아두이노 uno등에서는 2종류의 클럭이 사용되고 있습니다. 

 (하나는 USB 통신용, 하나는 메인 칩용입니다.)

  



 

그림에서의 길고 흰모양의 부품이 Quartz crystal 이라고 하는것으로 비교적 정밀한

 주파수의 클럭을 얻을수 있는 부품인 반면에 ATMEGA chip 바로 위쪽의 작은 부품은 

 ceramic resonator 라 불리는 부품으로 Quartz crystal(수정발진자) 보다는 정밀도가 

 떨어지지만 RC, LC 발진회로보다는 비교적 정밀도가 높기 때문에 

 중등도 타이밍회로, 또는 정확한 타이밍이 요구되지 않는 전자 회로에서 많이 이용되는 

 부품입니다.

 

MPU에서 클럭은 명령을 수행할 때의 타이밍의 기준이 됩니다.

 MPU내부에서 명령을 가져오고 해석하여 최종적인 명령이 수행될때 각각 한클럭씩 소요가 되나

 최근의 MPU들은 명령 인식과 해석및 실행단계에 파이프라인이라는 처리과정을 거쳐서 

 - 각 파이프라인이 각각 독립적으로 작동하여- 파이프라인이 한클럭에 한꺼번에 실행됩니다.

 

 

  

 클럭   

   클럭   

           클럭   

     클럭  

    클럭

 명령을 가져옴

 명령의 해석 

 명령의 수행

 

 

 

 명령을 가져옴

 명령의 해석

 명령의 수행 

 

 

 

 명령을 가져옴

 명령의 해석

 명령의 수행

 

 

      <특정 순간>

 

 

 

 

위와 같은 과정이 무한히 반복됩니다.

 위처럼 3번째의 세로줄을 살펴보면 명령가져오고 해석과 수행이 한번에 이루어져서 

 거의 모든 명령이 한클럭에 실행이 되도록 하고 있습니다. 

 (단 MPU내에는 인터럽터 처리등의 회로가 부가되기 때문에 엄밀히는 위보다 더 많은 

 단계의 파이프라인 처리부분이 존재합니다. 

 

마찬가지로 코드의 분기명령어는 분기후 파이프라인이 재 설정되므로 이런 경우에는 명령이 

 한 클럭으로 완료되지 않습니다.)

 

 

아두이노에서 쓰이는 AVR 계열의 MPU는 레지스터 제어 명령이 1클럭에 수행이 되며 

 분기명령및 기타 메모리관련 명령은 2클럭에 수행됩니다.

 마이크로칩사의 PIC 계열의 경우에는 분기명령을 제외한 모든 명령이 4클럭에 수행이 되며 

 분기명령만 8클럭에 수행이 됩니다. 

 

(타이밍을 맞추는데는 AVR보다 PIC이 좀더 수월합니다. 하지만 PIC계열은 AVR보다 4배나 빠른 

 클럭을 사용해야 합니다.)

 

(물론 C 언어로 프로그래밍을 하는경우에는 각각 컴파일된 코드의 길이가 다르므로 

 정확한 타이밍이 요구되는 경우에는 AVR이던, PIC이던 직접 어셈블리로 

 코드를 작성하여 타이밍을 맞추어야 합니다.)

 

 MPU를 이용해서 일정한 주파수의 소리를 발생시킨다거나, 아니면 UART 시리얼 등으로 

 타 주변기기와의 통신을 하는경우에는 정확한 클럭이 필요하게 되는데, 이때 MPU는 

 클럭에서 발생된 기준클럭을 두배 혹은 세배, 아니면 n 배를 해서 기준클럭의 

 배수가 되는 더 느린 클럭을 만들어서 각종 내부 제어회로에 이용하게 됩니다.

  

MPU내부에서 클럭이 사용되는 경우는 일반적으로 다음과 같습니다.

 

UART, PWM, 카운터, 타이머

 이중 카운터 타이머의 경우에는 정해진 숫자의 값을 카운트 다운 또는 카운트 업 하여 

 정해진 숫자에 도달하면 인터럽트를 발생시켜 필요한 동작을 수행합니다.

 이렇게 하면 모든 IO 핀을 매번 모니터링 하거나 일일히 

 명령의 instruction cycle을 계산하지 않고도 정확한 시간에 정해진 작업을 수행할 수 있습니다.

 

즉 예를 들자면 아두이노등에서의 sleep명령처럼 아무일도 하지 않고 노는 시간에 다른 일을 

 할 수 있는것 입니다.

 

타이머는 대개 내부의 기준 클럭이 일정한 시간에 발생하는 클럭 펄스에 의해서 동작하며

카운터의 경우 외부의 펄스변화를 인식하여 각 펄스가 정해진 갯수가 되는 경우에 인터럽트가

발생합니다.

마찬가지로 UART의 경우에는 전송되는 데이터 값을 어느정도 시간동안 유지해야 하는지를 

결정하는데 클럭이 사용되며

PWM의 경우에는 펄스폭의 길이를 결정하는데 클럭이 이용됩니다. 

 

이때 기준 클럭보다 엄청나게 긴 시간동안의 카운팅이 일어나야 하는데 

프리스케일러라는 내부 회로를 두어서 클럭을 2배 4배 또는 심지어 256 배 정도 까지의 긴 

 

시간동안을 한 단위로 하여 타이밍을 맞추는 데 사용하고 있습니다.

 

설명을 위해서 다음과 같은 프로그램을 봅시다.

 

 

// the setup function runs once when you press reset or power the board

void setup() {

  // initialize digital pin 13 as an output.

  pinMode(13, OUTPUT);

}

 

// the loop function runs over and over again forever

void loop() {

  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)

  delay(1000);              // wait for a second

  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW

  delay(1000);              // wait for a second

}


 

 

위의 예제는 아두이노의 블링크 예제 입니다. 

 

LED를 점등하고 1초를 기다리고, 또 소등하고 1초를 기다리는 프로그램입니다.

 위 프로그램은 기다리는 동안 아두이노는 아무일도 못하고 단지 기다리기만 할 뿐입니다.

 (이러한 루프를 idle loop라고 부릅니다.)

 그렇지만 인터럽트를 이용하면 

 

 

 

// avr-libc library includes

#include

#include

#define LEDPIN 13

 

void setup()

{

pinMode(LEDPIN, OUTPUT);

// initialize Timer1

cli();         // disable global interrupts

TCCR1A = 0;    // set entire TCCR1A register to 0

TCCR1B = 0;    // set entire TCCR1B register to 0 

               // (as we do not know the initial  values) 

 

// enable Timer1 overflow interrupt:

TIMSK1 | = (1 << TOIE1); //Atmega8 has no TIMSK1 but a TIMSK register

 

// Set CS10 bit so timer runs at clock speed: (no prescaling)

TCCR1B |= (1 << CS10); // Sets bit CS10 in TCCR1B

// This is achieved by shifting binary 1 (0b00000001)

// to the left by CS10 bits. This is then bitwise

// OR-ed into the current value of TCCR1B, which effectively set

// this one bit high. Similar: TCCR1B |= _BV(CS10);

 

// enable global interrupts:

sei();

 

ISR(TIMER1_OVF_vect)

{

 

digitalWrite(LEDPIN, !digitalRead(LEDPIN));

// or use: PORTB ^= _BV(PB5);// PB5 =pin 19 is digitalpin 13

}


 

 

 

이렇게 작성할 수 있고, 뭔가 조금 복잡해 보이기는 해도 

 노는 시간동안 아두이노는 다른 유익한 일을 할 수가 있습니다.

 

 

임베디드 프로그래밍도 최적화를 잘 하면 더 상위의 MPU를 쓰지 않고도 원하는 작업이 가능합니다.

 즉 임베디드 하드웨어를 잘 이해하면 이해할 수록 효율적인 프로그래밍이 가능하다는 것입니다.

 

이야기가 길어져서 

 클럭 설명드리다가 인터럽트, 타이머까지 간단히 설명을 드리게 되었습니다.

 모든 제어회로의 기준 시간이 된다는 사실을 말씀드린것 이구요..

 

 

암튼 ..

 

결론적으로 말씀드리면 임베디드 기기에서는 클럭을 선정할때 전원의 소모, 프로그램의 수행시간, 

 그리고 심지어는 UART회로, PWM회로 타이머, 카운터의 거의 모든 회로가 영향을 받기 때문에

 기준클럭을 선정해야할 때 목적에 맞는 최적의 클럭을 선정하도록 해야 합니다.

 

  

예전에는 임베디드 프로그래밍을 할때는 UART통신을 하기 위해서 클럭이 바뀔때 마다 

 통신 제어 레지스터에 일일히 계산을 해서 계산된 값을 입력해 줘야하는 불편함이 있었습니다만

 요즘은 대개 정해진 클럭을 사용하는 상용화 제품들이 많고 (아두이노의 경우에 기준클럭은 16Mhz 

 입니다.) 또한 각 칩마다 클럭에 따라 각각의 계수들을 계산해 주는 도우미 어플리케이션이 

 많이 있어서 

 

(예를 들자면 PIC - http://www.nicksoft.info/el/calc/?ac=spbrg 

 AVR - http://wormfood.net/avrbaudcalc.php

 등의 사이트)

 

현재는 예전처럼 클럭 제어 레지스터를 직접 다루어야 하는 일은 많지 않아졌습니다.

  

이번에는 클럭을 바꿀때 프로그램도 바뀌어야 한다는 것만 알고 가시면 될것 같습니다.

  

도움이 되셨는지요 ??

  

많은 도움이 되셨기를 바라며 이번회의 강좌를 마치도록 하겠습니다.

  

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


 

 

참고 사이트

 

 

http://www.nicksoft.info/el/calc/?ac=spbrg 

 

http://wormfood.net/avrbaudcalc.php

 

https://www.arduino.cc/en/Tutorial/Blink

 

https://arduinodiy.wordpress.com/2012/02/28/timer-interrupts/

 

 

 

참고 부품

 

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

 

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

실리콘랩스, 최저 지터 네트워크 싱크로나이저 클록 출시

인터넷 인프라 애플리케이션용 고성능 타이밍 솔루션 분야의 선도기업인 실리콘랩스(Silicon Labs, 지사장 백운달)는 업계 최고 성능과 비용 효과를 모두 누릴 수 있는 패킷 네트워크 싱크로나이저 클록(제품명: Si5348)을 개발했다고 밝혔다. Si5348 클록 IC는 업계 최고의 지터 성능과 업계 최소의 풋프린트, 최저 전력 특성을 결합한 고집적 표준 준용 솔루션이다. 하드웨어 설계자들은 Si5348 클록을 활용해 SyncE(Synchronous Ethernet), IEEE 1588v2 및 유무선 통신 인프라용 범용 주파수 변환, 광대역 네트워크(G.fast DSL 및 PON) 및 데이터 센터 애플리케이션을 위한 “클록트리온어칩(clock-tree-on-a-chip)” 솔루션을 구현할 수 있다.

 

SyncE와 IEEE 1588은 패킷 네트워크에서 동기화를 제공할 수 있는 방법으로 최근 많은 인기를 얻기 시작했다. 이러한 기술들이 더욱 확산되면서 네트워크 장비 설계자들은 기존 하드웨어 아키텍처와 쉽게 통합할 수 있는 보다 유연하고, 비용 효율적인 타이밍 솔루션을 필요로 하게 되었다. 기존의 일반적인 네트워크 싱크로나이저 클록은 레거시 스트라텀 3 (Stratum 3) 클록 IC에서 많은 부분을 차용한 유연하지 못한 아키텍처에 의존하고 있다. 더구나 레거시 스트라텀 3 클록 IC는 크기와 전력 또는 성능에 최적화된 기술은 아니다.

 

Si5348 클록은 기존 싱크로나이저 제품들에 비해 크기는 50% 작고, 전력은 35% 낮으며, 지터는 80% 낮은 것이 특징이다. 이러한 장점 덕분에 하드웨어 설계자들은 시스템 레벨 성능에 영향을 주지 않고도 간단하게 패킷 네트워크 동기화 기술을 적용할 수 있다. Si5348 아키텍처는 IEEE 1588, SyncE 및 스트라텀3 클록킹 요건에 완벽하게 부합하는 타이밍 솔루션에 업계 최고 수준의 지터 성능을 부가하기 위하여 실리콘랩스의 검증된 4세대 DSPLL® 기술을 이용하고 있기 때문에, Si5348 클록은 다양한 타이밍 카드 및 라인 카드 클록 아키텍처에 사용될 수 있다. 이 클록 IC는 외부 호스트 프로세서에서 동작하는 IEEE 1588 소프트웨어와 쉽게 연동할 수 있을 뿐만 아니라 시스템 통합도 더 단순하게 할 수 있도록 설계되었다.

 

실리콘랩스의 타이밍 제품 담당 제임스 윌슨(James Wilson) 마케팅 이사는 “네트워크는 써킷 스위치 방식에서 효율성, 유연성 및 경제적인 측면에서 유리한 패킷 스위치 방식으로 전환되고 있다. 아울러 SyncE 및 IEEE 1588은 더욱 널리 보급되고 있는 상황이어서 장비 제조업체들은 패킷 네트워크 동기화를 설계에 추가할 때 드는 비용과 복잡함을 최소화할 수 있는 솔루션을 찾고 있다”며, “실리콘랩스의 Si5348 패킷 네트워크 싱크로나이저 클록 신제품은 업계 최고의 지터 성능, 주파수 유연성, 전력 효율성 및 풋프린트를 제공함으로써 하드웨어 개발자들이 클록트리온어칩 솔루션으로 설계를 최적화 할 수 있도록 해준다”고 말했다.

 

패킷 타이밍 애플리케이션에서 높은 안정성의 오실레이터는 주파수, 시간, 위상 정확도와 관련한 네트워크의 전반적인 성능을 정의하는 데 있어서 핵심 역할을 한다. 네트워크 토폴로지는 종종 네트워크에서 각각의 노드에 요구되는 TCXO(Temperature-controlled Crystal Oscillator)나 OCXO(Oven-controlled Crystal Oscillator)의 유형을 결정하곤 한다. Si5348 클록은 범용 레퍼런스 입력 포트를 지원하기 때문에 어떠한 주파수의 TCXO/OCXO와도 함께 사용할 수 있다.

 

Si5348 제품 개발의 일환으로, 실리콘랩스는 광범위한 SyncE 및 IEEE 1588 애플리케이션에서 사용할 수 있는 통합 솔루션을 제공하기 위해 라콘(Rakon)과 파트너십을 체결했다. 라콘의 울라스 쿠마르(Ullas Kumar) 애플리케이션 마케팅 매니저는 “라콘은 SyncE와 IEEE 1588 애플리케이션을 위한 TCXO 및 OCXO 포트폴리오를 업계에서 가장 폭넓게 제공하는 기업”이라며, “실리콘랩스와의 제휴를 통해, 주파수, 안정성, 에이징 및 비용과 관련하여 애플리케이션 레벨에서 손쉽게 최적화함과 동시에 ITU-T 표준의 MTIE 및 TDEV 요건을 만족하는 타이밍 솔루션을 고객에게 제공할 수 있게 됐다”고 밝혔다.