統合機能を使用した、MCUの性能と消費電力のバランスの確立
DigiKeyの北米担当編集者の提供
2017-05-10
低消費電力の動作モードを備えたMCUは、しばらく前から開発者の間で使用されてきました。これらのMCUは、ペリフェラルだけでなくコア自体も停止することで、システムに必要な電力を削減します。しかし、一部のアプリケーションでは、重要な機能要件を満たすために、該当部分のシステムへの電力供給を維持する必要があるため、電力使用をもっと直接的に制御する必要が生じています。
以前は、高精度な電力制御機能を構築するため、スタンドアロンのパワーマネージメントデバイスを使用していました。それに対して、Analog DevicesのADuCM3029 MCUは、センサデータ収集、ウェアラブルなどのモノのインターネット(IoT)アプリケーション向け設計で、消費電力を最小化しながら最大の性能を簡単に引き出せる統合ソリューションを提供します。
パワーマネージメントを重視したMCU
低消費電力の設計向けに、省電力オプションが設計に組み込まれた高度なMCUが幅広く提供されています。消費電力が非常に重要なアプリケーションを対象にするデバイスには、通常、性能を犠牲にすることで消費電力を抑える周波数調整などの機能が搭載されています。
一般的な低消費電力モードでは、稼働中の回路がMCUのウェイクアップに必要な最小限の回路になるまで、MCUサブシステムを次々と停止することで段階的に消費電力を削減します。パワーマネージメントをさらに改良した超低消費電力MCUには、特別な動作モードが追加されており、デバイスのコアとペリフェラルへの電力供給が個別に管理されます。これらのMCUでも、特別なモードによってペリフェラルがグループで停止されたり、開発者が電力割り当てをほぼ制御できない自動メカニズムが使用されたりすることがあります。
MCUのパワーマネージメントでは、一般に、幅広い低消費電力動作モードが提供されますが、低消費電力モードへ移行すると機能性が大幅に低下します。多くのケースで、アプリケーションは、限られた時間内であれば機能低下に耐えられます。しかし、消費電力を厳密に制御しない限り、動作を維持できないケースもあります。Analog DevicesのADuCM3029プロセッサは、超低消費電力アプリケーションが持つ、より複雑なパワーマネージメント要件に対応するため、特別に設計されています。
ARM® Cortex®-M3コアベースのADuCM3029は、256KBのエラー訂正コード(ECC)フラッシュと、マルチパリティのピット保護を備えた64KBの構成可能なSRAMを搭載しています。ADuCM3027は128KBのフラッシュを搭載していますが、それ以外の機能はADuCM3029と同じです。
内蔵ハードウェア暗号化アクセラレータに加えて、このデバイスは、8チャンネル12ビットのA/Dコンバータ(ADC)と、SPI、I2C、UART、GPIO、同期シリアルポート(SPORT)、25チャンネルのDMAコントローラを含むデジタルペリフェラルを多数搭載しています。幅広い機能を備えながら、通常のアクティブモードでの消費電力は30μA/MHz未満です。設計者はADuCM3029を使用することで、機能性と消費電力のバランスをさらに細かく調整することができます。
消費電力と性能のチューニング
ほとんどの先進MCUと同様に、ADuCM3029は、低活動中の消費電力を低減するように設計されたパワーモードを複数備えています。ハイバネートモードでは、プロセッサコアと大部分のペリフェラルを停止して、デバイス消費電力を一般的に750nA未満に抑えますが、プログラムで選択したSRAM領域への電力供給は維持します。アプリケーションの非活動期間中、デバイスのシャットダウンモードで必要な電力はわずか60nAです。
しかし、プロセッサが活動していなくても、一定のペリフェラルの活動は必要になることはよくあります。この課題に対処するため、ADuCM3029は、フレキシブルスリープ(Flexi)モードという追加モードを提供しています。Flexiモードで消費される電力は300μAまで低下しますが、アクティブモードとハイバネートモードの中間の機能性が提供されます。Flexiモードにあるとき、デバイスコアはスリープモードのままですが、開発者が指定した個別のペリフェラルはアクティブになります(表1)。

表1:Analog DevicesのADuCM3029 MCUのパワーモードでは、特定のオンチップブロックへの電力供給が自動的に有効(緑)または無効(赤)になりますが、一部のペリフェラル(オレンジ)への電力供給は開発者が制御できます。また、ハイバネートモード中も保持されるSRAMのサイズを設定できます。(表提供:Analog Devices)
MCUをFlexiモードにするには、デバイスのPMG_PWRMODレジスタのMODEビットを0に設定し、WFI(割り込み待機)命令を実行するだけです。MCUのCLKG_CLK_CTL5レジスタ内で各ペリフェラルに対応するビットに0を書き込むと、プロセッサコアをスリープ状態にしたままで特定のペリフェラルの動作を有効にできます。このモードでは、デバイスは命令を実行できませんが、ペリフェラルとメモリ間でのDMA転送などのアクティビティは実行できます。
センサアプリケーションでは、プロセッサの使用前にセンサを一定期間サンプリングする必要がありますが、Flexiモードではペリフェラルの動作を継続できるので、これらのアプリケーションでの一般的な問題に対して、電力効率に優れたソリューションが提供されます。このケースでは、内蔵ADCのオートサイクルモードを使用して、選択したチャンネルで変換を実行し、DMAコントローラが自動的にSRAMにサンプルを転送するように設定します。プログラマが指定した回数の変換とDMA転送が終わると、DMAコントローラは割り込みを発行し、サンプリングされたデータを処理するためにコアをウエイクアップします(図1)。

図1:Flexiモードでは、Analog DeviceのADuCM3029のコアプロセッサがスリープ状態のままで、一部のペリフェラルの動作を継続できるので、複数チャンネルでのADCサンプルのDMA転送などの処理が完了した後でプロセスをウェイクアップすることができます。(画像提供:Analog Devices)
キャッシュとクロック
機能と性能のバランスに対して、Flexiモードとその他の低消費電力モードでは、大幅に消費電力を削減できる強力なメカニズムを提供します。バッテリ駆動システムなどの多くのアプリケーションでは、設計者が消費電力を細かく制御する必要があります。ADuCM3029では、従来型の手法とまったく新しい手法の利点を組み合わせることで、さらに消費電力を削減できます。
従来からある一般的な手法の中でも、命令キャッシュの使用は、オフチップメモリまたは消費電力の大きいフラッシュなどのオンチップメモリへのアクセスを軽減します。ADuCM3029ベースのシステムでは、最大4KBのSRAMをキャッシュとして割り当てることができます。実際の具体的な省電力はキャッシュヒット率によって異なりますが、Analog Devicesによると、標準的なベンチマークアプリケーションでのキャッシュ使用により、大幅な消費電力の削減が確認されています(表2)。
|
表2:Analog DeviceのADuCM3029で一部のSRAMをキャッシュとして使用すると、消費電力の高いフラッシュアクセスではなく、低消費電力のSRAMアクセスに近い消費電力レベルで、標準的なベンチマークアプリケーションを実行できます。(表提供:Analog Devices)
消費電力を削減するために長年使われてきたもう1つの手法に、周波数調整があります。プロセッサのクロックレートを下げると、命令実行には時間がかかりますが、消費電力は低く抑えられます(図2)。ADuCM3029ではその他多数の手法とは異なり、開発者が動的に、プロセッサとペリフェラルのクロック周波数を別々に変更することができます。この表で、デバイスはフェーズロックループと、26MHzの内部発振器または外部水晶振動子に駆動されるクロック分周器を使用して、プロセッサ、メモリ、インターフェースを含むオンチップリソース向けにクロックを生成しています。また、32kHzの内部発振器または外部水晶振動子が、デバイスのリアルタイムクロック(RTC)とウォッチドッグタイマを駆動しています。開発者は、デバイス上の個々のクロックレジスタを実行中に変更してクロック周波数を変更することで、アプリケーション要件の変化や省電力の機会に対応できます。

図2:Analog DeviceのADuCM3029で数個のレジスタを設定するだけで、MCUのクロック周波数を実行中に調整し、該当する消費電力の削減を達成できます。(画像提供:Analog Devices)
パワーパスの機能強化
ADuCM3029は、従来型の省電力手法をさらにサポートしているだけでなく、専門化したデバイスハードウェア機能に基づくこれまでにない手法も提供しています。ADuCM3029のパワーパスに組み込まれたオンチップ降圧コンバータは、デバイスの電源電圧範囲VBAT(1.74 V~3.6 V)と内部デジタルドメイン動作電圧(1.2V)の相違を補います。
通常の動作では、内蔵の低ドロップアウト(LDO)レギュレータはこの内部電圧からソースします。標準的なLDOで、LDOの電源電圧と負荷電圧の相違が大きい場合、デフォルトのパワーパスが余分なエネルギーを逃すので、電力が無駄になります。このMCUでは、設計者が数個の外部コンデンサを使用して、高い電源電圧でのこの損失を減らすことができます(図3)。ソフトウェア側では、開発者が降圧制御レジスタ(PMG_CTL1)に書き込むだけで、降圧コンバータをイネーブルにできます。

図3:数行のコードと外部コンデンサを使用するだけで、Analog DevicesのADuCM3029のオンチップ降圧コンバータをイネーブルにし、デバイスのLDOレギュレータに印加される電圧レベルを下げることができます。(画像提供:Analog Devices)
コンデンサベースの高効率チャージポンプトポロジに基づいて、このコンバータはLDOに供給される電圧レベルを下げます。その結果、MCUは、VBATの高い電圧レベルで、消費電力を大幅に削減します(図4)。電圧レベルが約2.3Vより低い場合、降圧コンバータはバイパスモードに移行し、VBATに追随します。

図4:電源(VBAT)電圧レベルが約3Vを上回ると、ADuCM3029のオンチップ降圧コンバータによってMCUの消費電力が低下し、アクティブモードとFlexiモードで相対的に50%の削減が実現します。(画像提供:Analog Devices)
消費電力を最適化したサンプリング
キャッシング、周波数調整、オンチップDC/DC変換といった機能は、システムレベルの省電力に有効です。アプリケーションレベルでは、Flexiモードなどの機能が、センササンプリングなどのペリフェラル動作での消費電力を削減するために役立ちます。しかし、一部のアプリケーションにとって、これらの手法では不十分なことが判明しています。たとえば、バッテリ駆動のIoTデバイスは、非常に低い収集レートでセンサをサンプリングしたり、外部プロセスを定期的に監視したりすることが少なくありません。
低頻度で周期的に活動するアプリケーションでは、開発者は一般に、MCUのRTCを使用して、一定のタイムベースを維持したり、厳密な既定時間にMCUをウェイクアップするためのカウントダウンタイマを駆動したりします。このため、高度なMCUには通常、非常に低い消費電力モードでもRTC機能を維持するパワーモードが搭載されています。ADuCM3029では、RTC0とRTC1の2つの独立したRTCを使用できるので、消費電力と性能のバランスを取るための選択肢がさらに増えます。
表1に示したとおり、アクティブ、Flexi、ハイバネートの各モードでは、両方のRTCが動作しますが、最も消費電力の低いシャットダウンモードで動作可能なのはRTC0のみです。シャットダウン以外のモードでは、2つのクロックが明確に異なるので、より複雑なタイミングアプリケーションを柔軟に実装できます。たとえば、RTC0は1Hzで数秒単位の時間をカウントするので、ウェイクアップ時間は数秒単位でしか指定できません。RTC1は広いレンジでプリスケールが可能で、最小30.7μsのウェイクアップ時間を実現します。それぞれのクロックの消費電力も異なります。RTC0には主電源(VBAT)から電力供給しますが、RTC1には内部の1.2Vパワードメインから供給します。そのため、任意で降圧コンバータを使用すると、RTC1の実効消費電力をさらに削減できます。おそらく、さらに重要なのは、RTC1がAnalog DeviceのSensorStrobeメカニズムに対応していることです。SensorStrobeは、ADuCM3029に組み込まれた独自の低消費電力サンプリング機能です。
SensorStrobeは特別なRTC1アラームで、MCUのRTC1_SS1ピンで出力パルスを生成します。ADuCM3029のSensorStrobe出力を、Analog DevicesのADXL363などの外部のマルチセンサデバイスに接続すると、わずか数個の部品で非常に消費電力の低いサンプリングソリューションを構築できます(図5)。

図5:ADuCM3029のSensorStrobeメカニズムは、安定した同期アラームを外部デバイスに提供するので、Analog DevicesのADXL363などの統合センサと組み合わると、シンプルなデータ収集システムを実装できます。(画像提供:Analog Devices)
Analog Devicesは、ADuCM3029 EZ-KIT開発キットのADZS-UCM3029EZLITEの一部として、図5に示したサブシステムを提供しています。この方法では、ハードウェア構成がシンプルなだけでなく、わずか数行のコードで、関連するデバイスレジスタを設定して、SensorStrobeメカニズムを開始できます(リスト1)。
#define PRD_VAL 255
void SensorStrobe_Cfg()
{
// SensorStrobe Pin Mux
*pREG_GPIO2_CFG |= (0x3 << BITP_GPIO_CFG_PIN11);
// Reset the RTC counter
while(*pREG_RTC1_SR1 & 0x0180); //wait until sync
*pREG_RTC1_SR0 = 0xFF;
*pREG_RTC1_CR0 = 0;
while(!(*pREG_RTC1_SR0 & 0x0080 )); //wait for sync
// SensorStrobe configuration
// Initial trigger and auto reload value = 255 RTC counts
// RTC runs at 32KHz ideally, 1 RTC count = 30.7us
while(*pREG_RTC1_SR5 != 0);
*pREG_RTC1_SS1ARL = PRD_VAL;
// SensorStrobe to be triggered after 255 RTC counts
*pREG_RTC1_CR4SS = (1 << 9); //Enable Autoreload
*pREG_RTC1_SS1 = PRD_VAL; // Initial Compare Value
// Enable SensorStrobe
*pREG_RTC1_CR3SS = 1;
while(*pREG_RTC1_SR4 != 0x77FF);
// Initialize the counter value to zero
while(*pREG_RTC1_SR1 & 0x0600);
*pREG_RTC1_CNT0 = 0;
*pREG_RTC1_CNT1 = 0;
while(!(*pREG_RTC1_SR0 & 0x0400));
// Enable (start) the counter
while(*pREG_RTC1_SR1 & 0x0180); //wait until sync
*pREG_RTC1_SR0 = 0xFF;
*pREG_RTC1_CR0 = 1;
while(!(*pREG_RTC1_SR0 & 0x0080)); //wait for sync
return;
}
リスト1:わずか数個のデバイスレジスタを設定するだけで、Analog DevicesのADuCM3029 MCUのSensorStrobe機能を利用できます。(画像提供:Analog Devices)
SensorStrobeの動作中、ADuCM3029をハイバネートモードにすることで、長時間のサンプリングプロセス中のMCU消費電力を最小限に抑えることができます。MCUがハイバネートモードのままでも、RTC1は、SensorStrobeのセットアップ中に設定したレジスタ値に指定された値に応じてカウントします。SensorStrobeのカウント条件が満たされると、SensorStrobe信号がADXL363の割り込み入力ピンに印加され、デバイスをウェイクアップします。次に、ADXL363がデータサンプリングルーチンを実行します。これが完了すると、ADXL363はMCUの割り込みピンに信号を送出することで、MCUをハイバネートモードからウェイクアップさせて、サンプリングされたデータの処理を開始します。
以前は、このような長時間のサンプリング設計の実装に、決まって外部のRTCやタイマ、または単純に発振器が使用されていました。この場合、設計が複雑になるだけでなく、外部クロックソースを使用することで、サンプリングされたデータとMCU独自のタイムベース間で時間が同期されなくなります。そのため、以前の手法では、データをリサンプリングして、MCUのタイムスタンプに合わせる必要がありました。しかし、SensorStrobeモードでRTC1を使用することで、サンプルのタイムスタンプを、ADuCM3029ベースのシステムに同期した状態を維持できます。
ADuCM3029に統合されたパワーマネージメント機能に対応する個別のメカニズムは多数存在しますが、このデバイスの内蔵機能を利用すると、消費電力と性能のバランスがさらに高いソリューションを簡単に実装できます。
まとめ
低消費電力システムへの要求により、引き続き、さらに小型かつ電力効率の高い設計で最大の性能を達成するという開発者の能力が試されています。この問題をさらに複雑にするのは、アプリケーションごとに、機能性と消費電力の間に求められるバランスが異なる点です。
Analog DevicesのADuCM3029 MCUに統合されたパワーマネージメント機能は柔軟に使用できるので、開発者がより簡単にこのバランスを見つけることができます。開発者はこのデバイスを使用することで、個々のアプリケーションで要求される、高性能と低消費電力の独自の組み合わせを実現できます。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。


