AI/IoT向け機能も試せる最新マイコンMCX

旧フリースケール・セミコンダクタと合併したNXPセミコンダクターズからリリースされた新しいマイコン製品がMCXと名付けられたマイコン・ファミリです.MCXはNXPセミコンダクターズやフリースケール・セミコンダクタの従来品種の後継品種として位置付けられていますが,それと同時に近年急速に拡大しているエッジ・コンピューティングを狙った製品群となっています.
エッジ部分,すなわちネットワークに接続される末端部分に接続される機器と聞くとPCやLinuxボード・コンピュータなどをイメージされる方も多いかと思いますが,現在では,産業用の機器はもちろんのこと,エアコンやロボット掃除機などの家電製品,自動車などさまざまなものがネットワークに接続されるようになってきています.また,このような流れの中でエッジ部分で機械学習を利用した推論処理まで行うエッジAIと呼ばれるものの利用も拡大しています.
ネットワークに接続される場合,利便性とともにさまざまなサイバー攻撃に対する保護が必要になってきます注1.また,エッジAIでは機械学習に対応した高い処理性能が求められます.
MCXファミリではEdgeLockと名付けられたさまざまなセキュリティ機能搭載したり端末側での機械学習・推論処理のアクセラレーションを担うNXPセミコンダクターズ独自のNPU(Neural Processing Unit)を内蔵したものを用意するなど,エッジ・コンピューティングやエッジAIへの対応を意識した製品となっています.
今回はMCXマイコンの概要を,次回は開発環境のMCU Xpressoを紹介していくことにします.
オランダに本社を置くNXPセミコンダクターズ(以降NXP)は,フリースケール・セミコンダクタ(元をたどるとモトローラ)と2015年12月に合併しました.
NXPは以前よりArmのCortexをコアとしたマイコンとしてLPCシリーズを展開していました.8ビット・マイコンのお株を奪うような8ピンのDIPパッケージのLPC810からCortex-M33を搭載しながら1ドルを切るLPC5500など,汎用マイコンで幅広い展開をしています.また,NXPは周辺ICに強みがあり,たとえばCANやLINといった車載機器の通信ネットワークで使われるトランシーバICではトップシェアを持っています.
一方フリースケール・セミコンダクタは周辺ICよりもマイコンやプロセッサに強みがあり,Arm社のコアを使ったマイコンとしてもKinetisファミリを製品化していました.フリースケール・セミコンダクタでは+5V動作や高い耐環境性能や信頼性を要求される産業機器や自動車向けなどのいわゆる特定用途向け(Application Specific)とされる領域で強みのある製品を多くとり揃えています.両者の製品は一部オーバーラップする領域もありますが,大まかに見れば互いに補完しあう関係にあると言えるでしょう.
現在,NXPのマイコンやプロセッサのファミリは,図1のように大きく3つのカテゴリに分類されます.
・CPUコアとフラッシュメモリやRAMを内蔵したマイクロ・コントローラ(マイコン)製品のMCX,LPC,Kinetis
・高性能な単体CPUであるプロセッサ製品のLayerscape,iMX8M
・マイクロ・コントローラとプロセッサの間を埋めるクロスオーバMCUのiMX RT
今回紹介するMCXは図の左下にある,フラッシュメモリやRAMを内蔵したマイクロコントローラと呼ばれる領域の製品です.

家電などの住宅機器,工場の設備,自動車など,多くの機器がネットワークの端末機器として動作するようになってきています.MCXファミリは,IIoT(インダストリアルIoT)エッジ・アプリケーションとも呼ばれるこれらで使われるエッジ・コンピューティングを視野に入れながら,従来のLPCやKinetisファミリのマイコンの後継として開発されました.
MCXファミリは従来8ビット・マイコンのS08ファミリなどがカバーしてきたローエンドから,高いセキュリティ機能やNPU(Neural Processing Unit)と呼ばれる機械学習(ML)に対応したアクセラレータなどを内蔵し,いわゆるエッジAIにも対応するハイエンドまで幅広い範囲をカバーします.
開発環境も一新され,統一されました.従来,NXPではLPC Xpresso,フリースケール・セミコンダクタではKinetis Design Studio(KDS)などが利用されてきましたが,これらの後継として新しくMCU Xpressoと呼ばれる統合開発環境(IDE)が用意されました(図2).
MCU XpressoはMCXファミリはもちろんのこと,LPCやKinetisといった従来製品もサポートしています.マイコンのシリーズを横断した共通の開発環境によって,各ファミリ間でのソフトウェア資産の再利用なども容易に行うことができるようになっています.
MCU XpressoはWindows,macOS,Linux(Ubuntu)のそれぞれに対応した単体アプリケーションのほか,VSCodeのプラグイン版も用意されています(図3).VSCodeはプラグインによって拡張していくことが可能で,さまざまなマイコンの開発環境として利用できる汎用コードエディタです.このプラグインの1つとしてMCU XpressoがNXPから公式に提供されています.
既にVSCodeを利用されている方には,プラグイン版のMCU Xpressoは良い選択肢になるかもしれません.


開発・評価用の基板としてフリースケール・セミコンダクタのFRDM(フリーダム)ボードが復活し,MCXファミリ向けのものもリリースされました.冒頭の写真1はMCXマイコン用のFRDMボードの一例(写真はFRDM-MCXN947)です.FRDMボードは各マイコン別に用意されていますが,基板サイズや基本的なコネクタの位置などは共通化されています.
FRDM-MCXN947はUSB接続で動作するデバッガ回路を内蔵し,Arduino互換ヘッダやFRDMボード共通の拡張ヘッダなどの拡張コネクタなどを備えています.
また,これらを利用したモータ・コントローラ・ボードや三軸加速度センサ・ボード,タッチ・パネル付きLCDなどの拡張ボード,デバイス類も用意されています.
NXPのマイクロコントローラ製品を整理すると図4のようになります.楕円で囲まれたものがMCXファミリです.MCXファミリはMCX C,MCX N,MCX A,MCX L,MCX Wの5つの製品群があり,大まかに分けると次のような三つのカテゴリに分類されます.

・ローエンド向けのMCX C
MCX CはCortex-M0+を採用したメインストリームのローエンドにあたるLPC800ファミリの領域をカバーします.
・メイン・ストリームのMCX N/A/L
MCX N/A/LはCPUコアにCortex-M33を採用しています.LPC5500などが採用されていたようなメイン・ストリーム向けの製品群です.
・ワイヤレス通信をサポートするMCX W
MCX WはMatterやZigbee,Thread,BLE(Bluetooth Low Energy)などのワイヤレス通信に対応した製品で,K32W0(Cortex-M4)やK32W1(Cortex-M33)の領域をカバーします.
・特定アプリケーション向けは引き続きKinetisファミリがカバー
5V動作を対象にするような特定アプリケーション向け(Application Specific)の領域は現状では引き続きKinetisファミリがカバーしています.
MCXファミリのフラッシュ・メモリ容量と主な用途で分類したのが図5,MCXファミリのうちCortex-M33をコアとしたファミリの主な特徴を整理したのが表1です.


MCX CはCPUコアにCortex-M0+を採用したローエンド・マイコンです.拡張性とともに低消費電力を特徴とした製品ファミリです.ブートローダを内蔵しており,専用の書き込み機を使わずにフラッシュ・メモリの更新が行えるなど,LPC800の特徴も受け継いでいます.
ローエンドではありますが,UARTやSPI,I2Cといった組み込み用途でよく利用される通信インターフェースの他,USBを内蔵した製品も用意されています.また,CPUコアがスリープ状態でも自律動作するインテリジェントペリフェラルも内蔵しており,低消費電力化が図られています.
MCX AはMCXファミリの中で最もスタンダードな汎用マイコンです.CPUコアは最大96MHz動作のCortex-M33のシングル・コアで,フラッシュ・メモリ容量も64K~1Mバイトと幅広い製品を用意しています.
DMAやキャッシュ・メモリの内蔵による処理性能の向上を図るとともに,デッドバンド挿入も可能な三相PWM生成可能なタイマやハードウェア・ウインドウ,平均化機能なども備えた16ビットA-Dコンバータ(最大3.2Msps)など,低消費電力でインテリジェントなペリフェラルを幅広く備えています.
CRCチェック機能(1ビット・エラーは修復可能,2ビット・エラーは検出可能)やコード・ウォッチドッグおよびGlikey(グリッチ攻撃耐性を備えた鍵アクセス)によるセキュリティ監視機能,フラッシュの読み取り/書き込み/実行権限のMBC(メモリ・ブロック・チェッカ)による保護,デバイスごとの128ビットUniversal Unique Identifier(UUID)などの基本的なセキュリティ機能を備えています.
MCX Lは低消費電力を特徴とするMCXファミリです.バッテリ駆動のセンサやIIoT機器ではデータのリアルタイム処理や通信などが必要で,どうしても消費電力も大きくなりがちでしたが,MCX LはNXPの従来品と比べて消費電力を1/3に低減できています.
MCX Lでは40nmの超低消費電力(Ultra Low Power:ULP)プロセスを利用して適応型動的電圧制御(Adaptive Dynamic Voltage Control :ADVC)を採用して動作状態に応じて内部の動作電圧を変化させる仕組みを取り入れています.
また,CPUコアはメインとなるMCX Aと同じ最大96MHz動作のCortex-M33に加え,MCX Cにも採用されているCortex-M0+(最大10MHz動作)を内蔵したデュアルコアになっています.Cortex-M33がリアルタイム・ドメインとして動作し,Cortex-M0+は常時オン状態のULPセンス・ドメインとして動作します.
消費電力が大きいメイン・プロセッサのCortex-M33をスリープ状態にした状態で低消費電力なサブプロセッサのCortex-M0+を常時動作させておき,データの前処理を行わせておきます.
前処理をサブプロセッサが行い,処理が終わった時や何らかのアラートが発生した時などにメイン・プロセッサにデータや情報を通知してスリープ状態から復帰させて実際のデータ送信を行うことで,リアルタイム性と低消費電力を両立できるのです.
MCX Lは低消費電力がセールス・ポイントですが,4Kバイトの低消費電力命令キャッシュを内蔵して性能面の改善を図っています.また,ペリフェラル機能についても16ビットのA-Dコンバータや12ビットのD-Aコンバータ,OPアンプや高速コンパレータといったアナログ機能,直交位置エンコーダとしても使用可能なQTimer(クアッド・タイマ),低消費電力なSPI(LPSPI)やI2C(LPI2C),UART(LPUART)といった通信機能を内蔵するほか,セグメントLCDや8×8のキー・パッドに対応するHMI(Human Machine Interface)機能も用意しています.
MCX WはCPUコアに最大96MHz動作のCortex-M33を使用し,無線通信機能を内蔵したセキュアなワイヤレスマイコンです.
MCX WはMatter注2,Thread,Bluetooth Low Energy,ZigBeeなどの無線通信をサポートするマルチプロトコル無線通信サブシステムを搭載しています.無線サブシステムの最大送信出力は+10dBm(10mW)で送信データ・レートは最大2Mビット/s,変調方式は2レベルFSK,GFSK,MSK,GMSKに対応しています.
MCX Wはこの無線サブシステム専用にメインCPUとは独立したCPUコア(Cortex-M3)と,このCPUコア専用の256Kバイトのフラッシュ・メモリ,88KバイトのSRAMを内蔵しています.
無線サブシステム専用のCPUコアを内蔵したことにより,メインCPUの負荷を軽減し,アプリケーション用に使用できるメモリ容量を大きくとることができます.無線サブシステムのファームウェアは書き換え可能ですので,プロトコルのアップデートや新しい標準規格などにも対応できます.
また,MCX WはEdgeLockセキュア・エンクレーブ,コア・プロファイルと名付けられたセキュリティ・サブシステムを内蔵し,外部からの攻撃からデバイスを保護しています.
Edge Lockにはクラウドベース証明書の導入と管理のサポートや,AES-128/192/256やECC NIST P-192/224/256/384/521などの暗号化,JPAKEなどの鍵交換アルゴリズム,フラッシュ保護機能など,さまざまなセキュリティ機能が含まれています.
MCX Nは高性能と低消費電力の両立を図ったファミリで,MCXファミリのハイエンド製品と位置づけられます.CPUコアは最大150MHzで動作するCortex-M33を2つ搭載したデュアルコアになっています.Arm社が提供するセキュリティ機能であるTrustZoneにも対応しているほか,MCX Wと同様のEdgeLockセキュリティ機能も備えています.
MCX Nの大きな特徴はCPUコアと結びつけられた次のようなアクセラレータ機能を内蔵していることです.
・DSPアクセラレータ(PowerQUAD)
・SmartDMA注3
・NPU(ニューラル・プロセッシング・ユニット)eIQ Neutron N1-16
・PLC(電力線通信)コントローラ
特に目を引くのはNPUでしょう.AIの急速な発展・普及に伴って組み込み機器でも画像や音声,各種のセンサから得られたデータをエッジ側で機械学習(ML)を利用した推論処理に基づいてデータの判定や判断を行うアプリケーションが増えてきています.
MCXに搭載されたNPUはこのようなアプリケーションに向けた機械学習のアクセラレータで,CPUコアを使用した推論処理と比べて最大30倍の高速化が図られています.
MCXマイコン・ファミリのハイエンドに属するMCX N94xについてもう少し詳しく見ていきましょう.図6がMCX N94xの内部ブロックです.詳細な仕様は,データシートなどを参照してください.

https://www.nxp.jp/products/MCX-N94X-N54Xより抜粋
3チャネルのOPアンプやコンパレータのほか,分解能16ビット時に2Msps,12ビット時に3.15MspsのA-Dコンバータや,分解能12ビットで1MspsのD-Aコンバータ,14ビットで5MspsのD-Aコンバータなど,高分解能で高速なアナログ入出力機能を備えています.
MCX NとMCX AファミリのFlexPWMモジュールには,拡張パルス幅変調器(eFlexPWM)が内蔵されています.eFlexPWMはセンタ・アラインPWM,エッジ・アラインPWMのほか位相シフトPWMもサポートしています.
ブラシレス・モータ制御ではセンタ・アラインPWMを使用することでスムーズに回転させられます.また,エッジ・アラインPWMはデューティの計算が容易で,DCモータでよく利用されるHブリッジの制御に適しています.ロボット・アームなど,複数のモータが使われるようなシステムでは,位相シフトPWMを使用して電力供給を最適化することで,スムーズな動作を実現できます.
FlexPWMモジュールには故障保護機構と自動故障解決機構が内蔵されており,障害検出時に自動的にPWM出力を無効化し,障害が解消されると自動的に復帰して動作を再開できるようになっています.また,MCX NのEVTG(イベント・ジェネレータ)には2つのAOI(AND/OR/INVERT)と呼ばれる4入力の論理演算回路とフリップフロップが内蔵されており,さまざまな入力信号の組み合わせでイベントを生成したり,他のペリフェラルに対する信号を生成できます.
MCX NのCPUコアとアクセラレータ部分を抜き出してきたのが図7です.

▼プライマリ・プロセッサとセカンダリ・プロセッサ
MCX Nは最大150MHz動作のCortex-M33コアを2つ内蔵しています.このうちプライマリ・プロセッサと呼ばれる側にはArmのセキュリティ機能であるTrustZoneやMPU(メモリ・プロテクション・ユニット),FPU(浮動小数点演算ユニット),SIMD(Single Instruction Multiple Data),ETM(Embedded Trace Macrocell ),SAU(Secure Attribution Unit),コプロセッサ・インターフェースなどを内蔵します.
もう一方のCortex-M33コアであるセカンダリ・プロセッサはこれらを内蔵していません.
▼DSPアクセラレータ
プライマリ・プロセッサのSIMDもDSP演算をアクセラレーションする仕組みの1つですが,それとは別にMCX NにはPowerQuadと呼ばれるDSPアクセラレータがコプロセッサとして内蔵されています.PowerQuadは次のような演算の高速化に貢献します.
・超越関数(指数関数,対数関数,平方根,逆数など)
・三角関数
・IIRフィルタ
・行列演算
・FIRフィルタ
・CORDIC(Coordinat rotation e digital computer)
▼NPU(ニューラル・プロセッシング・ユニット)
NPUは特に機械学習を利用した推論動作を高速化するプロセッシング・ユニットです.
機械学習では大量の積和演算を繰り返し適用していくため,CPUによる逐次処理ではなかなか処理速度があげられません.これを高速化するのがNPU(Neural Processing Unit)です.MCX NにはNXPが新規に開発したNPUであるeIQNeutron N1-16が内蔵されています.
eIQNeutronの大まかな内部構造は,図8のようにニューラル・ネットワークを意識した多段パイプライン構造になっています.8ビット・データ同士のMAC(積和演算)を1サイクルで最大16個まで同時に処理することが可能で,CPUによる処理よりも最大30倍の処理速度を実現しています.
また,eIQNeutronは機械学習・推論処理のフレームワークであるTensorFlow Lite for Microcontrollerをサポートしています.

・組み込みマイコン入門講座
-- https://interface.cqpub.co.jp/mcu-hands-on/
・登録内容の変更,メール・マガジン配信中止はこちらからお願いします.
-- https://cc.cqpub.co.jp/system/auth/