16비트 마이크로 컨트롤러의 성능 및 저전력 활용
DigiKey 북미 편집자 제공
2019-07-24
소비자 장치에 대한 사용자의 만족도를 향상하는 데는 긴 배터리 수명이 중요합니다. 배터리 구동식 사물 인터넷(IoT) 종단점의 경우 배터리 수명이 늘어나면 유지 보수 비용이 절감되고 신뢰도가 높아집니다. 이러한 장치에 사용되는 마이크로 컨트롤러의 경우 전력 소비가 클 수 있으므로 설계자는 응용 분야의 요구 사항을 준수하는 적절한 아키텍처를 선택하여 적용해야 합니다. 대부분의 경우 16비트 마이크로 컨트롤러를 선택하는 것이 가장 좋습니다.
8비트 마이크로 컨트롤러도 점점 더 강력해지고 있지만 본질적으로 처리 성능과 어드레서블 메모리의 측면에서 제한이 있습니다. 따라서 고성능 응용 분야에서 8비트는 제외됩니다. 반면, 32비트 코어 기반 시스템은 특히 필요 이상으로 많은 전력을 소비할 경우 이 응용 분야에 적용하기에 과할 수 있습니다.
해결책으로는 8비트 코어와 32비트 코어의 중간인 16비트 마이크로 컨트롤러를 선택하는 것이 좋습니다. 16비트 마이크로 컨트롤러는 32비트 코어의 일부 성능 및 메모리 이점을 제공하면서 간단한 단일 공급 8비트 마이크로 컨트롤러의 저전력을 제공합니다. 강력한 다중 스레드 응용 분야가 아니고 메모리 요구 사항이 지나치게 높지 않다면 16비트 마이크로 컨트롤러로 많은 전력을 절약하면서 적절한 수준의 성능을 제공할 수 있습니다.
이 기사에서는 16비트 마이크로 컨트롤러의 아키텍처에 대해 설명하고 16비트 마이크로 컨트롤러가 많은 배터리 구동식 소비자 및 IoT 종단점 응용 분야에 가장 적합한 선택지인 이유를 살펴봅니다. 그런 다음 Microchip Technology 및 Texas Instruments의 몇 가지 16비트 마이크로 컨트롤러를 예를 들어 소개하고 16비트 설계를 시작하는 방법을 보여줍니다.
마이크로 컨트롤러 선택
응용 분야에 적절한 마이크로 컨트롤러를 선택하는 것은 프로젝트 요구 사항을 정의한 후 설계 공정의 첫 번째 단계 중 하나입니다. 8비트, 16비트 및 32비트 마이크로 컨트롤러의 세 가지 메인스트림 선택 옵션이 있습니다.
8비트 마이크로 컨트롤러가 얼마나 널리 사용되고 있는지에 대해서는 간과되고 있습니다. 설계자들이 가장 많이 사용하고 있는 것이 바로 8비트 마이크로 컨트롤러입니다. 너무 작아서 저비용 저전력 8비트 마이크로 컨트롤러에 적합하지 않은 작업은 없습니다. 초저전력 메인스트림 마이크로 컨트롤러 제품군이 있으며 그중 일부는 100nA 미만의 대기 전류를 지원합니다.
또한 사용하기 쉽습니다. 8비트 마이크로 컨트롤러는 일반적으로 누산기를 기반으로 하며, 일부 최신 아키텍처에는 레지스터 세트가 있습니다. 프로그래밍 모델은 간단하고 제한적입니다. 즉, 단일 상태 레지스터, 스택 포인터 및 하나 이상의 인덱스 레지스터로 구성된 소형 레지스터 세트 또는 누산기를 사용합니다. 대부분 스택이 하드웨어에 내장되어 있고 펌웨어에서 프로그램 카운터(PC)에 액세스할 수 없습니다.
일반적으로 사용됨에도 불구하고 네트워킹 및 통신에 적용하는 경우 8비트 아키텍처는 한계가 있습니다. 거의 모든 통신 스택 및 네트워킹 프로토콜은 16비트 또는 32비트이므로 8비트 아키텍처에서 벗어나야 합니다. 또한 고급 8비트 마이크로 컨트롤러조차 펌웨어 크기와 복잡도를 제한하여 페이징이 없다면 16비트 주소 지정으로 제한되는 경향이 있습니다.
가장 우수한 32비트 마이크로 컨트롤러는 모든 성능 범위의 응용 분야에서 널리 사용되고 있으며, 네트워킹과 통신을 쉽게 지원하는 레지스터 기반 아키텍처입니다. 32비트 마이크로 컨트롤러는 32비트 주소 지정 체계를 사용하고, 부동 소수점 수학, 고급 대수 연산 및 GHz 범위 클록 속도를 지원할 수 있습니다. 32비트 코어는 여러 상태 레지스터, 펌웨어에 노출된 PC, 정교한 인터럽트 관리, 두 개 이상의 펌웨어 실행 권한 계층을 포함하는 더 복잡한 프로그래밍 모델을 사용합니다.
그에 관한 한 16비트 마이크로 컨트롤러는 전적으로 레지스트 기반이며 아키텍처가 8비트만큼 간단합니다. 특히, 전류 소모가 32비트 아키텍처보다 매우 낮고 전력 소비가 8비트 코어와 비슷할 정도로 우수한 저전력 성능을 제공합니다. 응용 분야에 고급 수학 기능이 필요한 경우 일부 16비트 마이크로 컨트롤러는 동일한 내부 클록 속도에서 32비트와 동일한 수학 성능을 제공하는 수학 코프로세서를 자랑합니다.
또한 네트워킹 16비트 마이크로 컨트롤러를 지원하는 많은 통신 스택이 있습니다. 응용 코드가 스택을 처리할 수 있는 충분한 성능을 지원할 경우 16비트에서 32비트 마이크로 컨트롤러만큼 빠르게 실행할 수 있는 프로토콜 스택의 예로 이더넷, CAN, USB, Zigbee 등이 있습니다.
16비트 마이크로 컨트롤러로 대용량 플래시 메모리 어레이 주소 지정
32비트 아키텍처와 16비트 아키텍처의 가장 중요한 차이점 중 하나는 메모리 주소 지정 범위입니다. 32비트 마이크로 컨트롤러는 최대 4Gbyte 메모리에 액세스할 수 있는 32비트 주소 버스를 사용하고, 기존 16비트 마이크로 컨트롤러는 64Kbyte만 액세스할 수 있는 16비트 주소 지정 체계를 사용합니다. 하지만 많은 최신 16비트 아키텍처는 이제 최대 24비트 확장 주소 지정 체계를 지원하여 상당한 크기의 16Mbyte 주소 공간을 허용합니다.
확장 주소 지정 방법의 좋은 예로는 Microchip Technology의 저전력 PIC24F 마이크로 컨트롤러 제품군이 있습니다. 이러한 마이크로 컨트롤러로는 1Mbyte 기판 실장 플래시 및 32Kbyte 기판 실장 SRAM을 탑재한 32MHz 16비트 마이크로 컨트롤러인 PIC24FJ1024GA가 있습니다. 이 마이크로 컨트롤러는 많은 8비트 마이크로 컨트롤러와 비슷한 간단한 프로그래밍 모델을 사용합니다(그림 1).
그림 1: Microchip PIC24F 프로그래밍 모델은 고급 8비트 마이크로 컨트롤러와 비슷하며, 16개의 범용 16비트 레지스터, 스택 포인터, PC 및 5개 지원 레지스터로 구성된 레지스터 기반 아키텍처입니다. (이미지 출처: Microchip Technology)
PIC24에는 최대 8Mbyte 플래시 프로그램 메모리에 액세스할 수 있는 23비트 프로그램 카운터가 있습니다. 또한 작업 레지스터(WREG)라는 16개의 16비트 레지스터(W0 ~ W15)가 있습니다. W0 ~ W13 레지스터는 펌웨어의 제어 하에 데이터를 저장하는 데 사용될 수 있는 범용 레지스터(GP)입니다. W15는 전용 스택 포인터(SP)입니다. SP는 함수 및 하위 루틴 호출, 프로그래밍 예외, 호출 반환 등에 의해 자동으로 증감되며, 펌웨어를 통해 수정할 수도 있습니다(예: W0에서 W13으로).
W14는 LINK 및 UNLINK 조립 지침을 포함하는 스택 프레임 포인터(FP) 역할을 합니다. SPLIM(Stack Pointer Limit Register)은 독립 레지스터이며 SP와 함께 사용되어 스택 오버플로를 차단합니다.
PIC24는 별도 주소와 데이터 공간을 가진 하버드 아키텍처를 사용합니다. TBLPAG(Data Table Page Address) 레지스터 및 PSVPAG(Program Space Visibility Page Address) 레지스터는 특별 지침에 따라 주소와 데이터 공간 사이에서 데이터를 액세스 및 전송하는 데 사용됩니다. 이 기능은 32비트 아키텍처에는 일반적이지만 8비트 코어에는 드문 기능입니다.
16비트 RCOUNT(Repeat Loop Counter) 레지스터에는 REPEAT 조립 지침을 위한 루프 카운터가 포함되어 있습니다.
16비트 CORCON(CPU Core Control) 레지스터는 PIC24 코어의 내부 작동 모드를 구성하는 데 사용됩니다.
마지막으로 16비트 상태 레지스터는 실행된 마지막 조립 지침으로 인해 발생한 상태를 비롯하여 PIC24 코어의 상태에 관한 작동 상태 비트를 포함합니다.
Microchip Technology는 PIC24FJ1024GA606T의 성능을 32MHz에서 16MIPS로 평가합니다. 이는 16비트 코어에서 인상적인 성능입니다. 이 코어에는 분수를 지원하는 17비트 x 17비트 하드웨어 배율기, 32비트 x 16비트 하드웨어 분배기 등 32비트 마이크로 컨트롤러에서 제공하는 기능이 많습니다. 따라서 센서 데이터를 기반으로 계산을 수행해야 하는 IoT 종단점에 유용합니다. 또한 이 아키텍처는 성능 저하 없이 데이터 메모리에서 동시에 읽고 쓸 수 있습니다.
PIC24FJ1024GA606T에는 USB OTG(On-the-Go)를 비롯하여 광범위한 표준 주변 장치가 있지만 배터리 구동식 응용 분야에서 전력 소비가 매우 낮습니다. 필요한 공급 전압은 2.0V ~ 3.6V에 불과하고, 최고 속도에서 이 마이크로 컨트롤러는 32MHz에서 최대 7.7mA를 소비합니다. 이는 32비트 코어에서 실현되기 어렵습니다. 펌웨어에서 코어 및 주변 장치 클록을 세부적으로 제어합니다. 두 가지 저전력 모드 조립 지침이 있습니다. IDLE 지침은 PIC24 코어를 중지하고 주변 장치를 실행하도록 허용합니다. SLEEP 지침은 선택적 감시 및 외부 인터럽트 감지를 제외한 모든 장치 작동을 중지합니다. 유휴 전류는 2.8mA(최대)에 불과하고 최대 절전 전류는 주변 장치의 구성에 따라 10µA ~ 45µA 사이입니다. 최저 전력 모드(RAM 콘텐츠가 유지되는 절전 모드)에서 PIC24F는 190nA를 소비할 수 있습니다.
성능 향상을 위해 Microchip Technology는 dsPIC® 제품군의 일부로 고급 16비트 마이크로 컨트롤러를 제공합니다. 예를 들어 512Kbyte 플래시와 70MIPS Microchip 정격 성능을 지원하는 16비트 dsPIC33EP512GP506T가 있습니다. dsPIC는 PIC24와 거의 동일한 코어 레지스터를 포함하면서 두 40비트 누산자 및 32비트 곱셈 지원을 비롯한 디지털 신호 처리(DSP) 명령을 지원하는 추가 레지스트를 제공합니다. 시스템 내에서 PIC24를 업그레이드할 경우 많은 PIC24 마이크로 컨트롤러에서 핀 호환 dsPIC 업그레이드를 지원하여 동일한 PC 기판으로 향상된 성능을 제공합니다.
물론 성능이 향상되면 더 많은 전력이 필요합니다. dsPIC33는 3.0V ~ 3.6V를 공급해야 하며 70MIPS로 실행할 경우 최대 60mA를 소비합니다.
전력 감소, 성능 향상
Texas Instruments의 MSP430FR599x 마이크로 컨트롤러 제품군은 회사의 강유전체 FRAM(Ferroelectric Random Access Memory) 프로그램 메모리를 사용하여 플래시 마이크로 컨트롤러보다 낮은 전력에서 더 우수한 읽기/쓰기 성능 수치를 실현합니다. MSP430FR5994IPNR 16비트 마이크로 컨트롤러가 이 제품군에 속하며 16MHz 클록과 256Kbyte FRAM을 제공합니다.
이 MSP430FR 마이크로 컨트롤러 코어는 FRAM 성능 향상을 위한 64비트 라인 크기의 캐시 줄 4개를 포함하는 양방향 연결 캐시를 비롯하여 몇 가지 향상된 성능을 제공합니다. 32비트 하드웨어 배율기는 수학 집약적인 연산 성능이 향상되었습니다. 또한 기본 MSP430 코어와 독립적으로 작동하는 저에너지 가속기(LEA) 코프로세서가 있습니다. LEA는 TI에 따라 256포인트 복잡도의 고속 프리에 변환(FFT), 유한 임펄스 응답(FIR) 필터 및 행렬 곱셈을 수행할 수 있으며 Arm® Cortex®-M0+보다 최대 40배 더 빠릅니다. LEA에서는 센서 융합 작업, 이미지 및 초음파 센서 데이터 처리 성능이 향상되었습니다. 일반적으로 이는 모두 개발자가 초저전력 16비트 마이크로 컨트롤러가 아닌 32비트 코어를 우선적으로 고려하는 응용 분야입니다.
MSP430R의 프로그래밍 모델은 매우 간단합니다(그림 2). R0 ~ R15의 16비트 레지스터 16개가 있습니다. R0은 프로그램 카운터, R1은 스택 포인터, R2는 상태 레지스터, R3은 즉시 피연산자에 사용되는 상수 생성기입니다. R4 ~ R15는 범용 레지스터입니다. 나머지 구성 레지스터는 대부분의 32비트 코어와 마찬가지로 메모리에 매핑됩니다.
그림 2: MSP430 마이크로 컨트롤러 레지스터 세트의 구성은 다른 레지스터 기반 16비트 코어와 비슷합니다. 나머지 구성 레지스터는 메모리에 매핑됩니다. (이미지 출처: Texas Instruments)
전력을 추가로 소비하지 않고 성능을 실현합니다. 실시간 시계(RTC)를 실행하는 대기 모드에서 TI MSP430FR5994는 350nA만 소비합니다. 전원차단 모드에서는 단 45nA만 소비합니다. 이는 현재 알려진 32비트 마이크로 컨트롤러보다 낮고 대부분의 8비트 마이크로 컨트롤러보다도 낮습니다.
MSP430FR5994IPNR은 1.8V ~ 3.6V에서 작동할 수 있습니다. MSP430FR에서는 캐시 적중 없이 FRAM에서 펌웨어를 실행하여 3mA만 필요합니다. 캐시에서 코드를 실행 중인 경우 전류 소모는 790µA에 불과합니다. LEA와 결합하여 16비트 마이크로 컨트롤러에서는 매우 낮은 소비 전력에 우수한 처리 성능을 제공합니다.
TI MSP-EXP430FR5994 LaunchPad™를 사용하여 MSP430FR5994 제품군용 저전력 응용 분야를 쉽게 개발할 수 있습니다. 이 LaunchPad에는 MSP-EXP430FR5994 마이크로 컨트롤러를 위한 펌웨어 작성 및 디버깅을 시작하는 데 필요한 모든 것이 포함되어 있습니다(그림 3).
그림 3: TI MSP-EXP430FR5994 LaunchPad에는 MSP430FR5994 16비트 FRAM 마이크로 컨트롤러를 위한 펌웨어 코딩 및 디버깅을 시작하는 데 필요한 모든 것이 있습니다(이미지 출처: Texas Instruments).
LaunchPad에는 푸시 버튼 2개, LED 2개, microSD 카드 슬롯 1개가 있습니다. MSP430FR5994 마이크로 컨트롤러의 저전력 기능을 입증하기 위해 LaunchPad에는 LaunchPad를 구동할 수 있는 대형 0.22F 슈퍼 커패시터가 있습니다. LaunchPad를 외부 전력에 연결하고 점퍼 J8을 “충전”으로 설정하여 슈퍼 커패시터를 충전합니다. 슈퍼 커패시터를 완전히 충적하는 데 2 ~ 3분 정도 걸립니다. 3분이 경과하고 나면 점퍼 J8이 “사용” 설정으로 이동되고 외부 전력이 제거됩니다. 응용 분야에 따라 MSP430은 몇 분 동안 실행될 수 있습니다.
또한 LaunchPad를 사용하여 MSP430 및 응용 분야의 전류 소모를 측정할 수 있습니다. J101 분리 블록에는 3V 전력 공급 점퍼 3V3을 비롯하여 7개의 점퍼가 있습니다. 3V3 2핀 점퍼를 제거하고 두 핀을 통해 응용 제품 전류를 측정할 수 있습니다.
또한 LaunchPad는 TI의 EnergyTrace™ 기술을 지원하고 Texas Instruments의 EnergyTrace 그래픽 사용자 인터페이스(GUI)를 사용하여 컴퓨터에 연결할 수 있습니다. 그러면 개발자가 MSP430 마이크로 컨트롤러 및 응용 제품에서 실시간 전력 소비 수치를 관찰하여 전력 소비에 맞게 응용 제품을 세부적으로 조정할 수 있습니다.
예를 들어 실시간 전류 모니터링 및 로깅을 통해 시간에 따른 MSP430 마이크로 컨트롤러의 전류 소모 스파이크를 확인할 수 있습니다. 전류 스파이크가 발생하면 배터리 성능이 저하되고 수명이 감소할 수 있습니다. 잘못 구성된 온칩 주변 소자, 외부 유도 또는 정전 용량 부하, 모든 것을 동시에 켜려는 펌웨어의 시도 등으로 인해 전류 스파이크가 발생할 수 있습니다. 개발자는 전류 모니터링 및 로깅을 통해 스파이크를 제어하기 위해 펌웨어를 조정할 영역을 확인할 수 있습니다.
결론
많은 저전력 중간 성능 배터리 구동식 내장형 응용 분야의 경우 개발자는 32비트 코어를 선택하는 대신 적절한 16비트 마이크로 컨트롤러를 선택할 수 있습니다. 그림과 같이 대부분의 응용 분야에서는 16비트가 필요한 성능을 실현하면서 32비트 마이크로 컨트롤러보다 훨씬 낮은 전력을 소비할 수 있습니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.


