まとめ

Model Composer を使用した PID コントローラー デザイン - Versal ACAP 向け (XAPP1376)

Document ID
XAPP1376
Release Date
2022-03-09
Revision
1.0 日本語

MATLAB Simulink 開発環境を使用すると、DSP ベースの Versal ACAP デザインの設計、デバッグ、および解析に必要な作業を大幅に簡略化できます。このアプリケーション ノートでは、Versal DSP58 単精度浮動小数点ハード マクロをターゲットとし、VMC HLS ツールボックスおよびカスタム C++ ベースの Math Sequencer という 2 つの方法で PID コントローラーのシミュレーションと PL への実装を行いました。また、AI エンジンへの実装では、単一命令複数データ (SIMD) ベクター プロセッサを使用して最大 8 つの PID を同時に実行できることを示しました。次の表に、VMC HLS ツールボックスを使用して実装した 1 個の PID ループ、Math Sequencer を使用した実装、および 1 つの AI エンジンで同時に実行した 4 個の並列 PID ループのリソース比較を示します。

表 1. 単精度浮動小数点 PID 実装のリソース、レイテンシ、クロック周波数、およびサンプル レートの比較
  DSP LUT FF ブロック RAM AI エンジン レイテンシ (クロック) クロック (MHz) サンプル レート (MSPS)
VMC ネイティブ ブロック (1 チャネル) 5 565 505 0 0 69 472 6.8
Math Sequencer (1 チャネル) 4 513 962 0 0 83 684.3 7.7
AI エンジン (4 チャネル) 0 0 0 0 1   1GHz 4

VMC HLS ツールボックスを使用して実装した PID は、1 個につき 5 個の DSP、565 個の LUT、505 個の FF を使用しますが、これは Versal デバイスのゲート数としてはほぼ無視できる値です。利用可能なゲートがあり、1 または 2 個の PID を実装する場合は、専用のゲートを使用するのが最適なアプローチです。FOC (Field Oriented Control) アプリケーションなど、より複雑なアルゴリズムを実行する場合は、より多くの算術演算子を使用する専用のハードウェアがさらに必要となるため、コストとリソース使用量が増大します。

VMC HLS ツールボックスを使用して 8 個の PID ループを実装する場合、8 × (565 LUT + 505 FF + 5 DSP58) = (4520 LUT + 4040 FF + 40 DSP58)のリソースがすべて独立して 6.84 MSPS で動作します。ただし、6.84 MSPS はループ帯域幅が約 40 kHz のブラシレス DC モーターで必要とされるよりもはるかに高速です。つまり、PID のループ帯域幅が 40 kHz の場合、40 kHz ごとに 1 個のサンプルを処理します (40 KSPS)。VMC HLS ツールボックスを使用して実装した PID がブラシレス DC モーター コントローラーに必要な速度よりも 6.84 MSPS /40 KSPS = 171 倍高速な場合、乗算、加算、および減算演算子を経時的にリソース共有した方がコストを削減できます。Math Sequencer は、算術演算を時間軸で逐次的に処理することでコストを削減するよう明示的に設計されています。

Math Sequencer は、1 個の PID ループを 7.7 MSPS で実行します。Math Sequencer のレジスタ セットを拡張すれば、1 つの Math Sequencer で 8 個の PID を逐次処理できますが、その場合、チャネルあたりの達成可能なサンプル レートは 1 チャネルのスループットの約 12.5% まで線形に低下します。7.7 MSPS / 8 = 0.96 MSPS としても、これは 1 個の 40 KSPS ブラシレス DC モーター制御ループに必要な値の約 24 倍高速で、しかも専用ハードウェアを 8 倍に増やす必要がありません。Math Sequencer を使用すれば、FOC ループなどのより複雑なアルゴリズムも処理できます。プログラミングは複雑になりますが、それでも Math Sequencer にはいくつかの利点があります。Math Sequencer は安価なだけでなく、一度プログラムするだけでよく、マイクロコントローラーのライセンスも不要な上、サポート ツールの購入や使用法の習得も必要ありません。どのような算術アルゴリズムもカスタマイズが可能で、プロセッサ同様、デザインを変更しなくてもコントローラー フィールドを更新できます。

32 ビット RISC プロセッサとベクター プロセッサの両方を備える AI エンジンに関しては、ベクター プロセッサ SIMD がすべてのレーンで同じ算術演算子を使用して実行します。浮動小数点演算用に 8 つの並列レーンがあります。どのレーンでも同じ演算を実行し、各レーンにつき 4 つの乗算、3 つの減算、および 4 つの加算を実行し、1 つの AI エンジンで 8 個の独立した PID を処理します。平均的なブラシレス DC モーター制御ループが 40 KSPS で動作する場合、この PID ループは必要な速度の約 100 倍で動作します。40 KSPS では、処理すべきタスクがほとんどないため、AI エンジンは約 99% の時間アイドル状態となります。このため、1 つの AI エンジンで最大 8 個のモーターを同時に駆動する場合は、FOC (Field Oriented Control) などのより複雑なアルゴリズムの方が有利です。

次に、プロセス全体の着目点をまとめます。

  • VMC を使用すると、Simulink 固有のさまざまな機能とツールボックスを利用して、テストベンチの開発、検証、評価、およびデバッグを簡略化できます。
  • 論理シミュレーションを使用すると、サイクル近似のビット精度シミュレーションを使用するよりもデザインのデバッグと開発にかかる時間を大幅に短縮できます。
  • テストベンチとユーザー デザインはいずれも、Vitis HLS および Vitis を使用して作成、評価、エクスポートが可能です。