はじめに

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

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

次の図と表に示すように、Versal AI コアの DSP58 は、以前の 16 nm デバイスよりも SPFP 演算の効率が向上しています ( 『Versal AI コア シリーズ データシート: DC 特性および AC スイッチ特性』 (DS957) 参照)。

図 1. DSP58 の単精度浮動小数点サポート
表 1. 浮動小数点関数の直接インスタンシエーション
シンボル 説明 スピード グレードおよび動作電圧 (VCCINT) 別の機能の性能 単位
0.88V (H) 0.80V (M) 0.70V (L)
-3 -2 -2 -1 -2 -1
浮動小数点演算
FMAX_FP 浮動小数点演算 805 805 750 700 532 476 MHz

従来の DSP48 ベース デバイスでは、整数ユニットおよび DSP48 と PL の組み合わせを使用して単精度、倍精度、またはカスタム精度の浮動小数点演算子 (FPO) を構築していました。新しい DSP58 は DSP48 との下位互換性を維持しつつ、ハード マクロ、SPFP (FP32) 乗算器、および加算器を追加しています。FP32 乗算器および加算器には、次のような特長があります。

  • カスケード接続をサポート
  • A、B、C、および D 入力 32 ビット SPFP
  • 加算器および乗算器の出力は 32 ビット
  • 両方の出力を同時に利用可能

SPFP 乗算器および加算器は IEEE-754 と OpenCL™ に準拠しており、次の特性を備えています。

  • 乗算加算、乗算減算、積和演算
  • 乗算
  • 加算
  • 減算
  • 最近接偶数への丸め
  • オーバーフロー、アンダーフロー、および無効フラグ
  • インスタンシエーションおよび FPO IP コア
  • PL サポート ロジックの追加なしに SPFP の実装効率が 16 nm DSP48 の 4 倍向上

また、AI エンジンの追加により、ソフトウェアは次の図のようなプログラマブルで確定的な専用の SPFP 処理データパスを利用できるようになります。ベクター プロセッサには、次の機能を備えた専用の浮動小数点データパスがあります。

  • 単精度
  • 1 サイクルで 8 回の積和演算
  • レーンごとの符号変換 (FPSGN)
図 2. AI エンジンの単精度浮動小数点サポート ユニット

DSP58 と AI エンジンの高性能演算エンジンは、組み合わせるにせよ個別に使用するにせよ、DSP 主体のデザインを強化します。ただし、Versal ACAP デザインは RTL や C/C++ を使用した PL および AI エンジン開発や、組み込み関数や AI エンジン API を使用した AI エンジン開発など、デザイン エントリの方法が多岐にわたるため、実装、デバッグ、および検証が難しいことがあります。VMC は、次のタスクを支援することによって AI コアを使用した DSP 開発を簡略化します。

  • ビルド済み Simulink ツールボックスや MATLAB® ソース コードを利用した DSP テストベンチ開発
  • Simulink の数多くの視覚的確認方法およびデバッグ方法を利用した DSP の検証と評価
  • 基準となるリファレンス モデルと開発中のアルゴリズムをノードごとにその場で比較
  • PL または AI エンジン用の C++、 LogiCORE™ IP、RTL、および AI エンジン用の組み込み関数または AI エンジン API を使用した混合言語モデル デザインの協調シミュレーションおよび開発
  • 機能デバッグによる開発サイクルの短縮と、AI エンジンのサイクル近似シミュレーション
  • C++ デザインとテストベンチを Vitis HLS プロジェクトとして評価およびエクスポートし、リソースとタイミングを最適化
  • AI エンジン デザイン用の自動 ADF (Adaptive Data Flow) グラフの作成
  • VCK190 をターゲットとした AI エンジン ハードウェア検証

VMC を使用した DSP 開発の方法を紹介するため、このアプリケーション ノートでは同じ SPFP PID アルゴリズムを 3 つの方法で実装した例を示します。このアプリケーション ノートで説明するモデルはすべて、Versal AI コア デザインの機能検証とデバッグに関して高速なビット精度の C++ モデルを使用しています。また、基準となる Simulink リファレンス モデルに対するノードごとの比較も示しています。