MCU Q&A ① 마이크로컨트롤러(MCU)는 우리 일상생활의 밥솥에서부터 최첨단 자동차까지 그 쓰임새가 다양한 핵심적인 부품이다. 그렇다면 우리는 MCU의 어디까지 알고 있는 것일까. 단지 자신이 쓰고자 하는 시스템에 걸맞는 기본적인 스펙만을 따져 제품을 선택하는가. 또는 EEPROM을 MCU에 어떻게 연결하는지, MCU와 DSP의 차이점은 무엇인지, MCU 주변장치를 선택하는 기준은 무엇인지 궁금하지 않는가. e4ds 뉴스는 오늘부터 4회에 걸쳐 MCU Q&A를 연재한다. 평소에 궁금했던 점이나 간과했던 정보들이 제품 선택에 도움이 됐으면 한다
<MCU Q&A ①.
마이크로컨트롤러(MCU)는 우리 일상생활의 밥솥에서부터 최첨단 자동차까지 그 쓰임새가 다양한 핵심적인 부품이다. 그렇다면 우리는 MCU의 어디까지 알고 있는 것일까. 단지 자신이 쓰고자 하는 시스템에 걸맞는 기본적인 스펙만을 따져 제품을 선택하는가. 또는 EEPROM을 MCU에 어떻게 연결하는지, MCU와 DSP의 차이점은 무엇인지, MCU 주변장치를 선택하는 기준은 무엇인지 궁금하지 않는가. e4ds 뉴스는 오늘부터 4회에 걸쳐 MCU Q&A를 연재한다. 평소에 궁금했던 점이나 간과했던 정보들이 제품 선택에 도움이 됐으면 한다.>
마사루 스가이(Masaru Sugai)
ST마이크로일렉트로닉스(www.st.com)
1회: MCU를 선택할 때 어떤 기준을 적용해야 하나요?
2회: EEPROM을 MCU에 어떻게 연결하나요?
3회: MCU와 DSP의 차이점은 무엇입니까?
4회: MCU 주변장치 부품 선택 가이드 전원
QUESTION:
MCU를 사용해야 하는데 어떤 기준으로 선택해야 하는지 잘 모르겠습니다. 카탈로그와 매뉴얼에서 확인해야 하는 정보는 무엇입니까?
ANSWER: 먼저, MCU를 선택할 때 규격을 확인해야 합니다. 그림 1은 ST마이크로일렉트로닉스(STMicroelectronics)에서 제작한 MCU인 STM32F103의 데이터시트 표지 페이지에 나와 있는 규격을 보여줍니다. 확인해야 하는 주요 기준은 다음과 같습니다.
(1) CPU 성능: 연산 속도(MHz), 연산 숫자 수(비트)
(2) 메모리 크기와 종류: ROM 크기와 종류(마스크, 플래시 EEPROM 또는 EPROM), RAM 크기
(3) 전기적 특성: 동작 전압, 전류 소비
(4) 내장 주변장치 기능: 타이머(예: 범용, 클록, PWM 출력), 통신 프로토콜(예: USART, SPI, I2C, USB), 특수 기능(예: LAN, 암호화 기법, LCD 제어/구동 및/또는 카메라 인터페이스), 아날로그 회로(예: AD 컨버터 또는 DA 컨버터)
(5) 패키지: 패키지 유형(예: QFP, BGA, QFN), 핀 수(예: 20, 32, 64, 100)
(6) 가격
이 목록에서 가장 중요한 기준은 MCU의 연산 성능이 사용자의 요구를 만족시키는지 말해주는 항목 (1)입니다. 항목 (1)에서 사용자가 필요로 하는 요구사항을 결정했다면, MCU 제품 시리즈를 결정하고, 선택한 시리즈에 대해 항목 (2)에서부터 (6)까지 확인하십시오. 항목(2)에서 사용자가 필요로 하는 요구사항은 프로그램 크기와 데이터 양에 따라 결정됩니다. 반면 항목(3)에 대한 사용자의 요구사항은 전원에 따라 결정됩니다. 항목 (4)에 대한 사용자의 선택은 제품을 어떻게 사용할 것인지에 따라 결정되며, 항목 (5)에 대한 선택은 제품 형식에 따라 달라집니다. 항목 (6)의 경우 개발할 제품의 비용에 기반해 종합적인 관점에서 결정할 필요가 있습니다. MCU의 가격은 모든 항목 (1) ~ (5)에 크게 의존하므로, 최고의 규격을 제공하는 최적의 가격을 찾을 필요가 있습니다.
CPU 성능
MCU의 성능은 CPU가 얼마나 많은 비트를 처리할 수 있는지(예: 8, 16, 32비트)와 연산 속도에 의해 결정됩니다. CPU 초기 개발 시기에서는4비트 CPU가 사용됐지만, 최근 대부분의 CPU는 8, 16 또는 32비트입니다. 비트 수는 CPU가 한 번에 처리할 수 있는 숫자 수를 나타냅니다. 숫자가 클수록 성능이 더 우수합니다.
그림 1. MCU 규격 (예: STM32F103)
참고 1:
일부 MCU는 16비트 CPU를 탑재하고 있지만 8비트 내부 버스를 사용하고 있습니다. 이런 경우 16비트에서 가능한 내부 처리 성능의 일부만 수행할 수 있습니다. 따라서 규격에 나와있는 모든 세부사항을 놓치지 않도록 하십시오.
CPU 성능은 통상 주파수(MHz)로 표시됩니다.
그림 1에 나와 있는 CPU 의 주파수는 72MHz입니다. MCU는 내부 클록과 동기되어 연산을 수행하기 때문에, 만약 두 개 이상의 MCU가 동일한 아키텍처를 공유한다면 더 높은 주파수(MHz)를 갖는 쪽이 더 높은 성능을 제공합니다.
참고 2:
일부 MCU는 내부 버스 속도와 다른 코어 속도를 갖고 있습니다. 달리 말하면, 고속 코어와 저속 버스를 갖는 경우가 있습니다. 이러한 경우 버스 액세스 동작이 연산 과정에 포함된다면 CPU 성능이 매우 낮은 속도로 저하될 수 있습니다.
또한 사용자가 고려하는 MCU가 서로 다른 아키텍처(내부 설계)를 갖고 있다면 MHz 값만으로는 성능을 비교할 수 없다는 점에 주의하십시오.
대표적인 두 가지 MCU 아키텍처는 RISC와 CISC?1이지만, 아키텍처와 관계 없이 최근의 MCU는 모두 최신 고속 프로세싱 기술을 사용하고 있어 쉽게 어떤 제품이 다른 제품에 비해 더 빠르다고 말할 수 없습니다.
DMIPS(Dhrystone Million Instructions Per Second) 및 CoreMark?2 는 MCU 성능을 나타내는 가장 많이 이용되는 지표입니다. 이들 벤치마크에서 MCU는 특정 프로세스를 실행하도록 한 다음 점수 형태로 성능이 평가됩니다. 이러한 점수가 개략적인 평가를 제공하는 데 유용하기는 하지만, 사용자의 프로그램 코드가 테스트 과정에서 사용되는 것과 상당히 다르다면 이러한 지표에 의존할 수 없습니다.
메모리 크기 및 종류
최근 MCU의 내부 ROM 에 가장 많이 사용되는 종류의 메모리는 플래시입니다. 사용 가능한 다른 종류의 메모리로는 마스크 Mask, EEPROM(Electrically Erasable Programmable Read-Only Memory) 및 EPROM(Erasable Programmable Read-Only Memory)이 있습니다. 사용자의 프로그램을 ROM에 저장한다면, 특정 유형의 ROM을 선택하기 전에 프로그램의 크기를 추정할 필요가 있습니다.
뿐만 아니라 연산이 수행될 때 처리 데이터가 임시로 RAM에 저장되기 때문에 프로그램에서 처리할 데이터 양도 추정해야 할 필요가 있습니다. 일반적으로 규모가 큰 프로그램은 많은 양의 데이터를 처리하므로, 통상 대용량 ROM과 대용량 RAM 을 결합해 사용합니다. 그림 1에 나와 있는 MCU는 32 ~ 128KB의 플래시 ROM 과 6 ~ 20KB의 RAM 을 탑재합니다.
그러나, 프로그램의 실제 크기와 처리할 데이터 양은 프로그램을 생성하기 전까지 명확히 알 수 없습니다. 따라서 먼저 제품 시리즈 중에서 메모리 크기가 가장 큰 MCU를 택해(그림 1에서 128KB ROM과 20KB RAM), 프로그램을 테스트한 다음 테스트 결과를 평가한 후 MCU를 최종적으로 결정하십시오.
전기적 특성(동작 전압과 전류 소비)
사용하게 될 전원의 유형이 전원 전압과 전류 소비를 결정합니다. 대부분의 사람에게 친숙한 전원 유형은 배터리입니다. 만약 2개의 배터리로 구성된 3V 전원을 사용한다면, 약 3V의 전원 전압을 갖는 MCU를 선택해야 합니다. 또한 가능한 배터리를 오래 쓰기 원하므로 낮은 전류의 MCU를 선택하십시오.
그림 2. 혈압계
저전압과 전류 용량을 갖는 버튼 배터리를 사용한다면, 낮은 동작 전압과 전류 소비를 갖는 MCU를 선택하십시오. 다른 대안으로, 상용 전원으로부터 DC 전원을 생성하거나 전압 레귤레이터 IC를 사용하는 등 다른 유형의 전원을 사용하고자 한다면, MCU를 사용자가 선택하는 전압과 전류 용량을 갖도록 설계할 수 있습니다. 이 방법은 전원에 기반해 MCU를 선택하거나 또는 선택하는 MCU에 기반해 전원을 설계할 수 있는 유연성을 제공합니다.
최근 무접점 전원이 개발되었습니다. 무접점 전원은 대부분 저전력 용량밖에 가지지 못하므로, 많은 전력을 소비하는 MCU에 충분한 전력을 공급할 수 없습니다. 따라서 이러한 특수한 전원을 사용하기 전에, 사용하고자 하는 MCU의 전력 소비를 확인할 필요가 있습니다.
내장 주변장치 기능
일례로 휴대용 혈압계를 설계하고자 할 때 MCU에 어떠한 주변장치 기능을 갖춰야 하는지 살펴보겠습니다.
그림 2는 혈압계에 대한 간단한 블록 다이어그램을 보여줍니다. 혈압 센서에 의해 생성된 아날로그 값은 ADC(아날로그-디지털 컨버터)를 이용해 디지털 데이터로 변환됩니다. ADC는 또한 배터리 레벨을 확인하는 데도 사용됩니다. 만약 측정이 완료될 때 알람 사운드가 발생되기 원한다면 PWM(펄스 폭 변조) 기능을 이용해 부저 사운드를 발생시킬 수 있습니다.
표 1: 주변장치 기능 및 애플리케이션 (1)
측정 값은 LCD 기능을 이용해 LCD(Liquid Crystal Display)에 화면에 표시됩니다. 이러한 결과는 SPI(Serial Peripheral Interface) 또는 I2C(Inter-Integrated Circuit)와 같은 표준 인터페이스를 사용하여 외부 메모리(EEPROM 등)에 기록됩니다. 동작 버튼에서 발생하는 입력은 범용 I/O 또는 인터럽트 기능을 통해 캡처됩니다. MCU는 모터나 솔레노이드 밸브를 직접 구동할 수 없기 때문에 외부 드라이버 트랜지스터를 연결해, 이를 대용량 전류 처리가 가능한 범용 I/O를 이용하여 제어해야 합니다. RS232C 또는 USB와 같은 통신 프로토콜은 측정을 외부 디바이스에 전달하는 데 사용할 수 있습니다.
USART(Universal Synchronous Asynchronous Receiver Transmitter)는 RA232C에 사용됩니다. USB 기능이 설치되어 있다면, USB도 당연히 사용할 수 있습니다. 또한 혈압 측정 시가 아니라도 언제든 보여주길 원한다면 RTC(Real Time Clock) 캘린더 기능이 내장된 MCU를 선택하십시오. MCU는 클록과 동기되어 동작하므로 발진기 회로는 필수적입니다. 또한 RTC를 위한 32.768kHz 발진기를 포함시키는 것도 잊지 마십시오.
표 2: 주변장치 기능 및 애플리케이션 (2)
이와 같은 고려사항에 기초하면 다음과 같은 주변장치 기능이 내장된 MCU를 선택할 필요가 있습니다. LCD 기능, RTC 및 발진기 회로, ADC, PWM, SPI(또는 I2C), 대용량 전류 범용 I/O, 그리고 USART입니다. 이와 같은 모든 기능이 필요하지 않을 수 있지만, 이러한 기능을 MCU에 설치하면 액세서리 부품들을 추가할 필요가 없으므로 더 경제적일 수 있습니다.
참조를 위해 표 1과 2에는 가장 일반적인 MCU 주변장치 기능과 애플리케이션이 나열돼 있습니다.
패키지
MCU를 위해 선택해야 하는 패키지는 전기 회로를 탑재할 디바이스에서 사용 가능한 공간에 따라 결정됩니다.
앞에서 살펴본 휴대용 혈압계는 손에 들고 다닐 수 있으므로 크기가 크지 않습니다. 이 경우 MCU에 사용되는 패키지는 충분히 작을 필요가 있습니다. 전기 부품을 위한 공간이 거의 없는 카메라 렌즈 시스템에 사용되는 MCU의 경우 심지어 더 작은 패키지가 필요합니다. 이러한 유형의 애플리케이션을 위한 MCU 패키지는 지극히 작아야 합니다. 한편, 산업용 장비나 대형 가전제품은 대형 패키지를 탑재하기에 충분한 공간이 있으므로 이와 같이 작은 MCU 패키지가 필요하지 않습니다.
가격
MCU의 가격은 이 글에서 설명한 규격에 따라 크게 달라집니다. 대용량 내부 메모리는 대용량 칩을 필요로 한다는 것을 의미하며, 따라서 비용이 증가합니다. 이 밖에 더 많은 내장 주변장치 기능을 필요로 할수록 비용이 증가합니다. 또한 가격은 구매하고자 하는 수량에 의해서도 좌우됩니다. 더 많은 MCU를 구매할수록 칩 1개당 가격은 내려가고, 더 적은 칩을 구매할수록 개당 가격은 올라갑니다. MCU 제조업체는 종종 높은 성능도 낮은 가격으로 전략적 MCU(대량 수량으로 판매하고자 하는 제품)를 제공하고 있습니다.
참조 (URL):
1: http://ednjapan.com/edn/articles/1404/07/news001.html
2: http://www.eembc.org/coremark/