본문 바로가기
Embedded SW/[Infineon] TC275 Lite Project

인피니언 MCU Clock, 오실레이터 에 대한 이해 (TC275 보드에서 확인)

by 방구석 임베디드 2021. 11. 15.
반응형

안녕하세요.

오늘은 인피니언 MCU의 Clock을 설정해 보는 시간을 가져 보도록 하겠습니다.

 

참고로 이 글은 개발의 전체적인 내용을 연재하고 있는 글이 중에 하나입니다.

그래서, 앞에쓴 글을 보시면 더욱 도움이 되실것 같습니다.

아래 글을 링크 걸어둘께요. 필요하신 분은 한번 읽어 보세요.

(물론 이 글만 보셔도 크게 문제는 없습니다.)

 

1) 임베디드 SW, MCU에 대한 정리 (feat. 임베디드 SW 비전)

https://embeddedchallenge.tistory.com/210

2) MCU 개발 장비 구매 방법 정리 (인피니언 MCU TC275 Lite)

https://embeddedchallenge.tistory.com/211

3) 임베디드 SW 개발 환경 세팅 방법 정리 (소스코드 편집기, 컴파일러, 디버거 환경 설정 방법)

https://embeddedchallenge.tistory.com/212

4) 인피니언 IDE Tool 사용방법 정리 (프로젝트 생성 및 다운로드 수행)

https://embeddedchallenge.tistory.com/219

5) 인피니언 MCU LED Blinking (TC275 GPIO 설정)

https://embeddedchallenge.tistory.com/225

 

그러면 바로 Clock에 대한 내용을 이어나가 보도록 하겠습니다.

Clock은 MCU를 개발하는 과정에서 가장 기초적이며 중요한 부분 입니다.

Clock에 대한 정의는 아래와 같습니다.

 

1. Clock 이란 무엇을 의미하는가?

클럭은 논리상태 H(high,논리 1)와 L(low,논리 0)이 주기적으로 나타나는 방형파(square wave) 신호를 의미합니다.

이러한 클럭신호는 디지털 회로의 동기를 맞추기 위해 사용됩니다.

 

조금 쉽게 설명해 보도록 하겠습니다.

아래 사진은 오실레이터라는 소자입니다.

이 소자는 Clock을 만들어 줍니다.

아래는 오실레이터입니다. 

 

TC275 개발 보드에서 Clock을 찾아 보도록 하겠습니다.

개발 보드에서 아래 초록색 박스로 칠해진 것이 바로 오실레이터 입니다.

내용을 살펴보면 20MHz라고 적혀 있네요.

그러면 회로도를 살펴 보도록 하겠습니다.

회로도에서 오실레이터가 아래와 같이 연결이 되어서

XTAL1과 XTAL2에 연결이 되어 있는것을 확인 할 수 있습니다.

이 오실레이터는 위의 회로도와 같이 MCU와 연결이 되어져 있습니다.

그리고, 이 오실레이터는 MCU에게 Clock을 제공해 줍니다.

한번 오실레이터를 찍으면 아래와 같은 sine파가 나오는 것을 확인할수 있습니다.

주기가 20MHz입니다.

MCU는 이것을 이산화합니다.

즉, 이것을 1과 0으로 인식합니다.

다시말해서 일정 Level 이상이 되면 1로 인식을하고

일정 Level 이하가 되면 0으로 인식합니다.

(MCU는 아날로그값을 디지털값으로 변환하여 Low와 High로 인식)

따라서 위의 주파수는 20MHz이기 때문에

1초에 20000000 번의 Clock을 MCU는 받아드리게 됩니다.

조금더 깔끔하게 그림을 그리면 아래와 같이 됩니다.

 

이제 이 Clock을 가지고 무엇을 하는지가 중요합니다.

 

2. Clock을 가지고 MCU는 어떠한 일을 수행할까?

 

현재 보드에 붙어 있는 오실레이터는 1초에 20000000개의 클럭을 만들어서

보내고 있습니다. MCU는 이것을 가지고 무슨일을 할까요?

 

1) MCU안에는 CPU는 이 Clock에 동기를 맞추어 연산 동작을 수행합니다.

MCU안에는 CPU가 있습니다.

CPU는 Central Processing Unit의 약자입니다.

CPU는 프로그램을 돌립니다.

우리가 컴퓨터로 사진을 볼때, CPU가 사진의 Data를 읽고 연산을 수행해서,

컴퓨터 모니터에 적절한 픽셀에 값을 넣어서 사진이 보여지는 것입니다.

 

따라서, CPU 3가지 단계를 거쳐서 연산을 수행합니다. 

3가지 단계는 fetch, decode, excute 작업으로 나눌수 있습니다.

 

- fetch : 메모리에서 instruction을 가져옵니다. 

우리가 워드나, PPT를 깔면 프로그램이 깔리게 됩니다.

이러한 프로그램이 32바이트 또는 16바이트와 같이 instruction의 집합으로 이루어져 있습니다.

CPU는 하나의 instruction을 읽어 옵니다.

그것을 fetch라고 합니다.

 

- decode : 메모리부터 획득한 Instruction을 해석해서 어떠한 동작을 해야할지를 분석합니다. 

32바이르토 이루어진 instruction은 어떠한 내용이 담겨져 있습니다.

CPU가 어떠한 연산을 수행할지가 약속이 되어져 있는것이지요.

CPU가 이것을 해석하는 단계가 decode라고 할수 있습니다.

 

- excute : 해석된 Instruction을 실행합니다.

이제 CPU안에 있는 ALU(Arithmetic Logic Unit)라는 장치를 통해서 연산을 수행하고

결과값을 레지스터 또는 메모리에 저장합니다.

 

 

위의 화살표 표시에 맞추어 1) -> 2) -> 3) 동작이 수행되어 코드 한줄이 수행된다고 생각하시면 될것 같습니다.

(파이프라인 및 어셈코드 등 자세한 내용은 우선 생략.)

 

만일 아래와 같이 Clock speed가 빠라진다면  instruction을 가져오고 해석해서 동작하는 speed가 빨라질 것입니다.

 

따라서 MCU에서는 최대한의 cpu clock 속도를 확보하는 것이 성능과 직결됩니다.

 

2) MCU안에 존재하는 주변기기(peripheral)에게 Clock을 주어 주변기기가 동작을 수행할수 있게 합니다. 

MCU안에는 다양한 주변기기들이 들어있습니다.

예를 들어 Timer 모듈같은 경우에는

Clock을 전달받아 이것을 counting 하여, 우리가 원하는 시간(ex 1ms)에

다양한 event(ex 주기적인 interrupt)를 만들어 낼 수 있습니다.

결국 Clock은 MCU안의 Cpu와 주변기기를 동작시키는 밥줄이라고 할수 있겠습니다.

 

그런데 20MHz의 Clock 속도에 맞추어 CPU가 연산을 수행하기에는 부족할 때가 있습니다.

보통 32비트 고급MCU의 경우에는 200MHz~300MHz까지 CPU Clock을 사용하도록 설계가 되어져 있습니다.

 

그런데 지금 오실레이터에서 생성되는 Clock은 20MHz밖에 되지 않습니다.

어떻게 20MHz를 200MHz로 높여줄수 있을까요?

 

PLL(Phase-Locked Loop)이라는 모듈을 통해서 Clock의 주파수를 높여줄수 있습니다.

 

따라서 MCU를 사용할떄는 외부 오실레이터의 Clock을 그대로 사용하지 않고

CPU가 허용하는 최대 주파수 출력까지 높여서 사용합니다.

TC275의 CPU는 최대 200MHz의 Clock 주파수 까지 사용가능합니다.

따라서 20MHz를 200MHz로 주파수를 높여주는 것이 필요합니다.

다음장에서 어떻게 주파수를 높여주는 지 설계를 수행해 보도록 하겠습니다.

반응형

댓글