16ビットマイクロコントローラが備える性能と低消費電力性の有効活用
DigiKeyの北米担当編集者の提供
2019-07-24
長い電池寿命は、ユーザーが民生用機器に満足するために重要な要素です。電池駆動のIoT(モノのインターネット)エンドポイントでは、電池寿命を延ばすことによりメンテナンスコストの削減や信頼性の向上につながります。これらのデバイスに使用されるマイクロコントローラはかなりの電力を消費する場合があるため、設計者は適切なアーキテクチャを選択して適用することで、これらのアプリケーションのニーズを満たす必要があります。多くの場合、最適な選択肢となるのは16ビットマイクロコントローラです。
8ビットマイクロコントローラは高機能化される一方、処理能力とアドレッシング可能メモリの面でその性能に本質的な制限があることに変わりありません。このため、8ビットは高性能アプリケーションには適していません。では32ビットコアに基づくシステムはどうかと言えば、アプリケーションにとって高機能すぎることが多く、システムが必要以上に電力を消費する場合は特にオーバースペックです。
そのような場合のソリューションは、8ビットコアと32ビットコアのちょうど中間に位置する16ビットマイクロコントローラにあります。16ビットマイクロコントローラは、シンプルで単一電源の8ビットマイクロコントローラの低消費電力性を有しながら、32ビットコアが持つ性能とメモリの優位性の一部を備えています。アプリケーションがそれほどマルチスレッド重視でなく、メモリ要件がそれほど高くなければ、16ビットマイクロコントローラは適切なレベルの性能を発揮しながら、電力も大幅に節約できます。
この記事では、16ビットマイクロコントローラのアーキテクチャと、そのアーキテクチャにより16ビットマイクロコントローラが多くの電池駆動式の民生用、IoTエンドポイントアプリケーションにとっていかに最適な選択肢になるかについて説明します。さらに、Microchip TechnologyとTexas Instrumentsが提供する16ビットマイクロコントローラの例を紹介し、16ビット設計に着手する方法を示します。
マイクロコントローラの選択
プロジェクトの要件を規定したら、設計プロセスの最初のステップには、アプリケーションに適したマイクロコントローラを選ぶことがあります。主流の選択肢は、8、16、32ビットマイクロコントローラの3種類です。
8ビットマイクロコントローラは、単に「設計者が選ぶ主力デバイス」と言う以上に非常に広く利用されています。低コスト、低消費電力の8ビットマイクロコントローラにとって小さすぎる処理はありません。主流を成すマイクロコントローラの中で最も低消費電力で、中にはスタンバイ電流が100nA(ナノアンペア)に満たないタイプも存在します。
使用するのも容易です。通常、8ビットマイクロコントローラはアキュムレータベースですが、最新アーキテクチャの中にはレジスタセットもあります。プログラミングモデルはシンプルで限られており、アキュムレータか、または1つのステータスレジスタ、スタックポインタ、1つ以上のインデックスレジスタを含む小さなレジスタセットです。ほとんどの場合、スタックはハードウェア内にあり、プログラムカウンタ(PC)はファームウェアからはアクセスできません。
8ビットアーキテクチャは普及している反面、ネットワーキングと通信を行おうとすると限界に突き当たります。ほぼすべての通信スタックとネットワーキングプロトコルは16ビットまたは32ビットのいずれかなので、8ビットアーキテクチャ以外を選ぶ必要が生じます。さらに、ハイエンドの8ビットマイクロコントローラであっても、ページングなしの16ビットアドレッシングに限られる傾向があり、ファームウェアはサイズと複雑さの面で制限があります。
他方、32ビットマイクロコントローラはあらゆる性能レンジのアプリケーションでよく使われるようになっています。そのアーキテクチャはレジスタベースで、ネットワーキングと通信を容易にサポートします。通常、アドレッシングは32ビットで、浮動小数点演算とハイエンドの代数演算、およびギガヘルツ(GHz)レンジのクロックレートをサポートします。その32ビットコアにはより複雑なプログラミングモデルがあり、複数のステータスレジスタ、ファームウェアから見えるプログラムカウンタ、高度な割り込み管理、複数層のファームウェア実行権限を含む場合があります。
では16ビットマイクロコントローラはどうかというと、すべてレジスタベースでアーキテクチャは8ビットと同程度にシンプルです。その傾向として、優れた低消費電力性能、32ビットアーキテクチャに比べて大幅に低い消費電流、8ビットコアに匹敵する低消費電力などの特性を備えています。アプリケーションがハイエンドの演算を必要とする場合でも、16ビットマイクロコントローラの中には、同じ内部クロック速度で32ビットと同じ計算性能を発揮する数値演算コプロセッサを備えた製品もあります。
また16ビットマイクロコントローラのネットワーキングをサポートする通信スタックも多くあります。Ethernet、CAN、USB、Zigbeeは、アプリケーションコードがこれらの処理に十分な性能を備えていれば16ビットでも32ビットマイクロコントローラと同様に高速な実行が可能なプロトコルスタックの例です。
16ビットマイクロコントローラによる大容量フラッシュメモリアレイのアドレッシング
32ビットアーキテクチャと16ビットアーキテクチャの最も重要な違いの1つは、メモリアドレッシングの範囲です。32ビットマイクロコントローラは32ビットアドレスバスを備え、最大4GBのメモリにアクセス可能です。従来の16ビットマイクロコントローラの16ビットのアドレッシングでは、64KBにしかアクセスできませんでした。今では、多くの新たな16ビットアーキテクチャには最大24ビットの拡張アドレッシングがあり、かなり大きな16MBのアドレス空間を利用できるようになっています。
拡張アドレッシング手法を採用した例として、Microchip Technologyが提供する低消費電力のPIC24Fマイクロコントローラファミリがあります。このファミリのPIC24FJ1024GAは32MHzの16ビットマイクロコントローラで、1MBのフラッシュと32KBのSRAMを内蔵しています。多くの8ビットマイクロコントローラと同様、シンプルなプログラミングモデルを使用しています(図1)。
図1:Microchipが提供するPIC24Fのプログラミングモデルは、ハイエンドの8ビットマイクロコントローラに類似しています。アーキテクチャはレジスタベースで、16の汎用16ビットレジスタ、スタックポインタ、PC、5つのサポートレジスタを備えています。(画像提供:Microchip Technology)
PIC24には23ビットのプログラムカウンタがあり、最大8MBのフラッシュプログラムメモリにアクセスできます。ワーキングレジスタ(WREG)という16ビットレジスタが16個あり、W0~W15の名前が付けられています。レジスタW0~W13は汎用レジスタ(GP)で、ファームウェアの制御下でデータを格納できます。W15は専用のスタックポインタ(SP)です。SPは、関数とサブルーチンの呼び出し、プログラミングの例外、呼び出しからの復帰によって自動的に増減され、さらにW0~13と同様にファームウェアにより変更される場合もあります。
W14は、アセンブリ命令のLINKおよびUNLINKによりスタックフレームポインタ(FP)として機能します。スタックポインタ制限レジスタ(SPLIM)は独立したレジスタで、SPとともに使用されスタックオーバーフローを防ぎます。
PIC24は、アドレス空間とデータ空間を別個に持つハーバードアーキテクチャを採用しています。データテーブルページアドレス(TBLPAG)レジスタとプログラム空間可視ページアドレス(PSVPAG)レジスタは、アドレス空間とデータ空間の間でデータにアクセスして転送するための特別な命令とともに使用されます。これは32ビットアーキテクチャの一般的な機能ですが、8ビットコアではほとんど使われません。
16ビット繰り返しループカウンタ(RCOUNT)レジスタは、REPEATアセンブリ命令のループカウンタを保持します。
16ビットCPUコア制御(CORCON)レジスタは、PIC24コアの内部動作モードの設定に使用します。
最後に、16ビットステータスレジスタは、最後に実行されたアセンブリ命令により生じたステータスなど、PIC24コアの状態に関する動作ステータスビットを保持します。
Microchip Technologyによる性能評価では、PIC24FJ1024GA606Tの処理性能は32MHzで16MIPS(百万命令/秒)ですが、これは16ビットコアでは優れた性能と言えます。そのコアは32ビットマイクロコントローラに見られる多くの機能を備えており、たとえば小数演算もサポートする17ビット x 17ビットのハードウェア乗算器、32ビット x 16ビットのハードウェア除算器があります。これは、センサデータの計算を実行する必要があるIoTエンドポイントに有用です。このアーキテクチャは、性能を低下させずにデータメモリからの読み書きを同時に行うこともできます。
PIC24FJ1024GA606Tは、USB On-the-Go(OTG)などの幅広い標準周辺モジュールを搭載していますが、電池駆動アプリケーションでの消費電力はきわめて低くなります。必要な電源電圧はわずか2.0~3.6Vで、フルスピードの32MHz時の消費電流が最大7.7mAですが、32ビットコアでこれを実現するのは困難です。ファームウェアからコアと周辺モジュールのクロックを細かく制御できます。低消費電力モードのアセンブリ命令が2種類あります。IDLE命令は、PIC24コアを停止させつつ、周辺モジュールの動作は続行させます。SLEEP命令は、オプションのウォッチドッグと外部割り込み検出を除いて、すべてのデバイスの動作を停止させます。周辺モジュールの構成に応じて、アイドル電流はわずか2.8mA(最大)、最大スリープ電流は10~45µA(マイクロアンペア)です。最低消費電力モードであるスリープモードではランダムアクセスメモリ(RAM)の内容を維持しますが、このモードでPIC24Fが消費する電力は190nAという低さです。
さらに高性能が求められる場合に対して、Microchip TechnologyはdsPIC®ファミリのハイエンド16ビットマイクロコントローラを提供しています。その一例として16ビットのdsPIC33EP512GP506Tがあります。512KBフラッシュを備えており、Microchipが評価する性能は70MIPSです。dsPICのコアレジスタはPIC24とほぼ同じですが、2つの40ビットアキュムレータや32ビット乗算のサポートを含む、デジタル信号処理(DSP)命令をサポートするレジスタが追加されています。システムに組み込み済みのPIC24をアップグレードする場合、多くのPIC24マイクロコントローラにはピン互換のdsPICアップグレードが用意されており、同じプリント基板を使ったままで性能向上が可能です。
当然ながら、性能向上した分だけ電力も余分に必要になります。このdsPIC33は3.0~3.6Vの電源が必要で、70MIPSで動作する際には最大60mAを消費します。
パフォーマンスを向上させながら電力を低減
Texas InstrumentsのMSP430FR599xマイクロコントローラファミリは、同社のFRAM(強誘電体ランダムアクセスメモリ)プログラムメモリを使用し、フラッシュを使用したマイクロコントローラよりも低消費電力で、より高い読み取り/書き込み性能を発揮します。このファミリの製品である16ビットマイクロコントローラMSP430FR5994IPNRは、16MHzのクロックと256KBのFRAMを備えています。
そのマイクロコントローラコアであるMSP430FRは性能が強化されており、64ビット幅のキャッシュライン4本をともなう双方向関連キャッシュを備えることでFRAMの性能を向上させています。32ビットのハードウェア乗算器は、計算負荷の高い処理の性能を高める役割を果たします。また、メインのMSP430コアから独立して動作する低エネルギーアクセラレータ(LEA)コプロセッサも搭載しています。LEAは、256ポイントの複素高速フーリエ変換(FFT)、有限インパルス応答(FIR)フィルタ、およびマトリックス乗算を実行でき、TIによるとマトリックス乗算はArm® Cortex®-M0+の最大40倍速とされています。LEAは、センサフュージョンの動作を高めて、画像を向上させ、超音波センサデータを処理します。これらすべてのアプリケーションでは、超低消費電力の16ビットマイクロコントローラではなく32ビットコアの採用から検討するのが通常です。
MSP430Rのプログラミングモデルは非常にシンプルです(図2)。16個の16ビットレジスタ、R0~R15があり、R0はプログラムカウンタ、R1はスタックポインタ、R2はステータスレジスタ、R3は定数発生器です(即値オペランドに使用)。R4~R15は汎用レジスタです。残りの構成レジスタは、大半の32ビットコアと同様、メモリにマップされています。
図2:MSP430マイクロコントローラのレジスタセットは、他のレジスタベースの16ビットコアと構成が似ています。残りの構成レジスタはメモリにマップされています。(画像提供:Texas Instruments)
この性能は、消費電力の増加なしに実現されています。リアルタイムクロック(RTC)が動作しているスタンバイモードでTIのMSP430FR5994が消費するのは、わずか350nAです。シャットダウンモードでは、さらに少なく45nAです。これは現在知られているどの32ビットマイクロコントローラより低く、大半の8ビットマイクロコントローラよりも低いレベルです。
MSP430FR5994IPNRは、1.8~3.6Vで動作できます。キャッシュヒットなしでFRAMからファームウェアを実行する場合、MSP430FRは3mAしか要しません。キャッシュからコードを実行する場合の電流消費はわずか790µAです。LEAとの組み合わせにより、16ビットマイクロコントローラで非常に高い処理性能がきわめて低い消費電力で発揮されます。
MSP430FR5994ファミリ用の低消費電力アプリケーションは、TIのMSP-EXP430FR5994 LaunchPad™を使用して簡単に開発できます。このLaunchPadには、MSP-EXP430FR5994マイクロコントローラ用ファームウェアのコード記述とデバッグに着手するために必要な要素がすべて含まれています(図3)。
図3:TIのMSP-EXP430FR5994 LaunchPadは、MSP430FR5994 16ビットFRAMマイクロコントローラ用ファームウェアのコード作成とデバッギングに着手するのに必要な要素をすべて備えています(画像提供:Texas Instruments)。
LaunchPadには、2つの押しボタン、2つのLED、およびmicroSDカード用のスロットがあります。MSP430FR5994マイクロコントローラの低消費電力機能を実証するため、LaunchPadの電源として使える大容量0.22Fのスーパーキャパシタも搭載しています。このスーパーキャパシタは、LaunchPadを外部電源に差し込み、ジャンパJ8を「Charge(充電)」に設定することで充電されます。スーパーキャパシタを完全に充電する所要時間は2~3分です。3分経過したら、ジャンパJ8を「Use(使用)」に移動し外部電源を切り離します。アプリケーションによっては、MSP430は何分間も動作します。
LaunchPadは、MSP430とアプリケーションの消費電流の測定にも使用できます。J101絶縁ブロックには、3V電源ジャンパの3V3など7つのジャンパがあります。2ピンの3V3ジャンパは外すことができ、アプリケーションの電流はその2つのピンで測定できます。
LaunchPadはTexas InstrumentsのEnergyTrace™テクノロジにも対応しており、同社のEnergyTraceグラフィカルユーザーインターフェース(GUI)を使用してコンピュータに接続できます。これにより、MSP430マイクロコントローラとアプリケーションからのリアルタイム消費電力の数値を観察し、アプリケーションの消費電力を微調整できます。
たとえば、リアルタイムでの電流の監視およびロギングにより、MSP430マイクロコントローラの電流消費スパイクが見つかることがあります。電流スパイクは電池を劣化させ、その寿命を縮める原因になります。電流スパイクは、内蔵周辺モジュールの設定ミス、外部の誘導性負荷または容量性負荷、またはあらゆるものを同時にオンにしようとするファームウェアが原因で発生します。電流の監視とロギングにより、スパイクを抑制するためにファームウェアのどこを調整すればよいかがわかります。
結論
低消費電力で中程度の性能が求められる多くの電池駆動式組み込みアプリケーションには、32ビットコアを採用せず、用途に適した16ビットマイクロコントローラを選択することが可能です。この記事で述べたように、16ビットマイクロコントローラは32ビットマイクロコントローラに比べて大幅に低消費電力でありながら、多くのアプリケーションに必要な性能を実現できます。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。


