組み込みマイコンでのデジタルフィルタリング習得:LPC55S69 PowerQuadデュアルバイコードIIRエンジン
時系列データのフィルタリングにおける最も一般的な手法を探求し、LPC55S69のPowerQuadデュアルバイコードIIRエンジンが如何にDSPタスクを加速するかを検証
時間経過とともに収集されたデータを扱う際、最初のステップはしばしばデジタルフィルタの適用です。さまざまなフィルタリング戦略を理解することは、信号品質を向上させるだけでなく、CPUを他の重要なタスクに解放します—組み込みマイクロコントローラにとって必須の考慮事項です。
本記事では、最も広く使用される時間領域フィルタリング手法を網羅し、LPC55S69 MCUのPowerQuadユニットにおけるデュアルバイコードIIRエンジンを深掘りします。これは多様なフィルタリングシナリオで活用できる強力なDSPビルディングブロックです。
連続サンプリングデータのための一般的なフィルタ
時間領域取得システムでは、サンプルが固定された既知のレートで到着します。時間領域フィルタはこれらのサンプルを処理し、さらなる処理やデジタル-アナログ変換器(DAC)への送信に適した新しい信号を生成します。あらゆるフィルタの核心は、正弦波への応答—周波数全体での振幅と位相の変化です。周波数スペクトル全体での総合的な振る舞いは、フィルタの周波数応答として知られます。
有限インパルス応答(FIR)フィルタは標準的なアプローチです。最新データと過去のサンプル履歴を組み合わせて各出力サンプルを生成します。

図1. 入力履歴を用いたサンプルごとのフィルタ処理
シンプルな実装では、過去のサンプルを配列に格納し、以下の式を適用します:
x[n] // 最新の入力
x[n-1], x[n-2] // 2つ前の入力サンプル
y[n] // 次の出力サンプル
y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2]
この単純な乗算累積演算は、定数係数と定義された履歴長を用いてフィルタの周波数応答を形成。係数を調整することで、ローパス、ハイパス、バンドパスデバイスとして機能させられます。
概念的にはシンプルですが、FIRフィルタは精密な制御のために多くの過去サンプルを必要とすることが多く、履歴が増えると従来CPUでは計算コストが高くなります—特に履歴が増大する場合。
必要な履歴を削減するため、多くの設計はフィードバックを取り入れ、無限インパルス応答(IIR)フィルタの基礎を形成します:
// 先の命名規則に従う
y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]
上記はバイコードフィルタの例で、一般的なIIRビルディングブロックであり、カスケード接続で高次応答が可能。FIRフィルタより少ない係数で済みますが、不安定性と発振を避けるため係数選択には注意が必要です。
標準フィルタ設計のための最適係数を生成するツールは多数存在。これらの「クックブック」は高品質フィルタへの迅速な道を提供します。

図2. 係数を自動生成する多くのツールの一つ
PowerQuad IIRバイコードエンジンの使用
LPC55S69のPowerQuadユニットは、IIRバイコードフィルタ実行用の専用ハードウェアを提供。このコプロセッサにフィルタリングワークロードをオフロードすることで、Cortex-M33コアをアプリケーションロジックに集中させられます。
フィルタアルゴリズム自体はシンプルですが、多くのCPUサイクルを消費し得ます。PowerQuadのハードウェアは、フィルタリングや他の複雑な数学演算に特化して最適化されています。AHBバスとArm Cortex-M33コプロセッサインターフェース経由でシステムに接続されます。
開発者は通常、無料のEclipseベースMCUXpresso IDEとLPC55S69 SDKを使用し、これには複数のPowerQuadサンプルアプリケーションが含まれます。

図3. PowerQuadデジタルフィルタサンプルの選択
「powerquad_filter」サンプルは多様なフィルタ設定を実演。コアロジックはpowerquad_filter.cにあり、基本的なフィルタセットアップを紹介しています。
記事ではDirect Form I実装を紹介しましたが、PowerQuadは内部で演算をDirect Form II構造に並べ替えます。この配置により、入力と出力の両履歴を格納する必要がなくなり、代わりに単一の中間状態ベクトルv[n]を維持します。
AHBレジスタのいくつかが、PowerQuadのIIRフィルタ操作設定に必要な状態と係数を保持。SDKサンプルでは、状態はPQ_BiquadRestoreInternalStateで初期化されます。
初期化後、フィルタはfsl_powerquad_filter.c内のPQ_VectorBiquadDf2F32を使用してデータブロックを処理:
/* 関数は入力サンプルを8の倍数で処理 */

図4. ベクトル化IIRフィルタ実装
このルーチンは、メインCPUからPowerQuadコプロセッサへMCR命令経由でデータを転送。PowerQuadが乗算加算演算を実行し、フィルタリング結果を別のMCR転送でCPUに返却。このオフロードにより、Cortex-M33コアで同アルゴリズムを実行する場合と比較してCPU負荷が劇的に削減されます。
デジタルフィルタリングのためのデュアルバイコードIIRエンジン
LPC55S69のPowerQuadユニットには2つの独立したバイコードエンジンが内蔵され、並列またはカスケードフィルタリング操作を可能にします。AHBバス上の設定レジスタでIIR機能をセットアップし、データ交換はコプロセッサインターフェース経由で行われます。
MCUXpresso SDKは堅実な出発点を提供しますが、提供コードは生のパフォーマンスより明確さを優先。開発者はCPUとPowerQuad間のデータ転送を最小化することで更なる最適化が可能です。
NXPはIIRバイコードフィルタ設計・可視化ツールを提供し、フィルタ係数の生成と可視化を支援。NXPコミュニティページでもLPC55S69のPowerQuadユニットとその機能に関する詳細なドキュメントを提供しています。
インダストリー記事は、業界パートナーがAll About Circuitsの読者に有用なニュース、メッセージ、技術を共有するコンテンツ形式であり、編集コンテンツでは適さない形で提供されます。すべてのインダストリー記事は厳格な編集ガイドラインの対象であり、読者に有用なニュース、技術的専門知識、ストーリーを提供することを意図しています。インダストリー記事で表明されている見解や意見はパートナーのものであり、必ずしもAll About Circuitsやそのライターのものではありません。
埋め込み
- リアルタイムデータインサイトでデジタル製造チームを変革する
- GE Digital、データと分析で製造業のオペレーショナルエクセレンスを実現する方法を公開
- デジタル変革を加速:リアルタイムMESデータが工場効率を向上
- フィードバックを持つデジタルロジック:決定論的ゲートからマルチバイブレータへ
- デジタルメモリが重要な理由
- IC技術とマイクロコントローラ:現代組み込みシステムの基盤
- 産業オートメーションを加速:RS-485フィールドバスの速度、到達距離、EMCを最適化
- OT/ITシームレス統合─ 最新産業用ソフトウェアでスマートセンサデータをエンタープライズへ直結
- 「信頼性のインターネット」におけるデータ活用:効果的管理のための戦略
- デジタルトランスフォーメーションの加速:Cisco & IBMのエッジツークラウドIoTプラットフォーム
- 予知保全:インダストリー4.0を活用した無停止生産の実現