Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

固定小数点ツールを使用した固定小数点モデルの再スケーリング

以下の例では、固定小数点ツールを使用してフィードバック コントローラー モデル fxpdemo_feedback に関連する固定小数点データ型のスケーリングを絞り込む方法を示します。固定小数点ツールでは、固定小数点データ型を使用するためにモデルを変換する複数のワークフローを使用できます。

固定小数点ツールの範囲の収集ワークフローを使用すれば、データ型の変換前または変換後のモデルの数値的な動作を確認できます。

固定小数点ツールの固定小数点の反復的変換ワークフローは、シミュレーション時に最小-最大範囲のデータを収集するという一般的なタスクを自動化します。このワークフローは、ブロックの固定小数点データ型を自動的に選択する際に有用です。Simulink® の任意の固定小数点対応ブロックは、このツールで推奨される固定小数点データ型を受け入れるように設定できます。入力端子などの主要ブロックのデータ型を手動で指定し、ブロックごとにモデルでの自動スケーリングを選択的に無効にできます。これにより、固定小数点ツールに提供される処理情報が増え、自動的に選択された固定小数点スケーリングが、手動で選択した主要なスケーリングに適合するようになります。

この例では、以下の手法を使用します。

  • 範囲の収集 - 範囲収集ワークフローを使用してモデルの数値的な動作を確認します。固定小数点のワード サイズとスケーリングで妥当な推定値を使用して初期シミュレーションを実行します。モデル内のデータ型を倍精度の数値でオーバーライドし、シミュレーション結果を比較します。

  • 固定小数点の反復的変換 - 倍精度シミュレーション範囲データを使用するための小数部の長さを推奨します。固定小数点ツールを使用すると、スケーリングの推奨を選択的に受け入れて適用してから、適用されたデータ型でモデルをシミュレートして結果の品質を検証できます。

フィードバック コントローラー モデルを開く

fxpdemo_feedback モデルには、Controller サブシステムで既に指定されている固定小数点データ型の初期推定をもつデジタル コントローラーが含まれています。この例では、プラント出力の既知の許容誤差を指定し、Controller サブシステムの新しい固定小数点データ型を推奨してから、推奨されたデータ型をモデルに適用します。

open_system('fxpdemo_feedback')

このモデルは次のブロックとサブシステムで構成されています。

  • Reference - この Signal Generator ブロックは連続時間基準信号を生成します。これは矩形波を出力するように設定されています。

  • Sum - この Add ブロックはプラント出力を基準信号から抽出します。

  • ZOH - Zero-Order Hold ブロックは連続信号をサンプリングして保持します。このブロックは 0.01 秒ごとに信号を量子化しているように設定されています。

  • Analog to Digital Interface - アナログからデジタル (A/D) インターフェイスは double を固定小数点データ型に変換する Data Type Conversion ブロックで構成されています。これはアナログ入力信号の振幅をデジタル化するハードウェアを表します。実際には、その特性は修正されます。

  • Controller - デジタル コントローラーはハードウェア ターゲットで実行されているソフトウェアを表すサブシステムです。

  • Digital to Analog Interface - デジタルからアナログ (D/A) インターフェイスは固定小数点データ型を double に変換する Data Type Conversion ブロックで構成されています。これはデジタル化された信号をアナログ信号に変換するハードウェアを表します。実際には、その特性は修正されます。

  • Analog Plant - アナログ プラントは伝達関数によって設定され、デジタル コントローラーによって制御されます。実際には、その特性は修正されます。

  • Scope - モデルにはプラント出力信号を表示する Scope ブロックが含まれています。

シミュレーションの設定

この種類の固定小数点フィードバック コントローラー シミュレーションを設定するには、以下の手順に従います。

  1. すべての設計コンポーネントを識別します。実際には、修正された特性を備えた設計コンポーネント (ハードウェア) と変更可能な特性を備えた設計コンポーネント (ソフトウェア) があります。このフィードバック設計では、主なハードウェア コンポーネントは A/D ハードウェア、D/A ハードウェア、およびアナログ プラントです。主なソフトウェア コンポーネントはデジタル コントローラーです。

  2. プラントとコントローラーの理論モデルを開発します。このチュートリアルのフィードバック設計では、プラントは伝達関数によって特徴付けられます。このチュートリアルのデジタル コントローラー モデルは "z" 領域伝達関数によって記述され、直接型の実現によって実装されます。

  3. プラントとコントローラーの動作を評価します。ボード線図を使用してプラントとコントローラーの動作を評価します。これは、すべての数値、演算、および状態が倍精度であるため、理想的な評価です。

  4. システムのシミュレーションを実行します。Simulink と Fixed-Point Designer™ ソフトウェアを使用して、フィードバック コントローラー設計をシミュレートします。シミュレーション環境ではすべてのコンポーネント (ソフトウェア "および" ハードウェア) を、特性が固定されていないものとして処理することができます。

理想的なフィードバック設計

モデルの開ループ (コントローラーとプラント) およびプラント専用ボード線図を、以下の図に示します。開ループのボード線図は連続時間、倍精度係数、ストレージの状態、および数学演算の理想的な世界で説明したデジタル コントローラーから得られます。ボード線図は preload_feedback スクリプトによって生成されるワークスペース変数を使用して作成されました。

デジタル コントローラーの実現

このモデルでは、以下の図に示した固定小数点の直接型の実現を使用してデジタル コントローラーを実装します。このハードウェアでは、16 ビット プロセッサをターゲットにします。変数と係数は、特に数量が ROM またはグローバル RAM に格納されている場合は、一般に 16 ビットで表します。32 ビット数を使用できるのは、CPU レジスタまたはスタック内に一時的に存在する一時変数に限られます。

デジタル コントローラーの実現は次のブロックで構成されます。

  • Up Cast - この Data Type Conversion ブロックは A/D ハードウェアをデジタル コントローラーに接続します。このブロックでは、A/D ハードウェアの出力のワード サイズが 16 ビット数 (基本データ型) の長さになるようにゼロを付加します。

  • "Numerator Terms""Denominator Terms" - これらの各 Discrete FIR Filter ブロックは CPU ターゲットで実行される重み付き総和を表します。計算のワード サイズと精度には、アキュムレータのワード サイズと精度が反映されます。Numerator Terms は FIR 分子係数を使用して最新の入力を乗算し累積します。Denominator Terms は FIR 分母係数を使用して最新の遅延出力を乗算し累積します。係数は基本データ型を使用して ROM に格納されます。最新の入力は基本データ型を使用してグローバル RAM に格納されます。

  • Combine Terms - この Add ブロックは CPU 内のアキュムレータを表します。このワード サイズと精度は RAM の 2 倍 (ダブル ビット) です。

  • Down Cast - この Data Type Conversion ブロックは CPU から数字を取り出し RAM に格納することを表します。ワード サイズと精度は基本データ型に戻される場合にアキュムレータの半分まで削減されます。

  • Prev Out - この Unit Delay ブロックはメモリ内のフィードバック信号を 1 つのサンプル期間ごとに遅延させます。信号は基本データ型を使用してグローバル RAM に格納されます。

直接型の実現

コントローラーにより次の方程式が直接実装されます。

ここで、

  • u(k – 1) は前のタイム ステップからの入力を表します。

  • y(k) は現在の出力を表し、y(k – 1) は前のタイム ステップからの出力を表します。

  • bi は FIR 分子係数を表します。

  • ai は FIR 分母係数を表します。

y(k) 内の最初の加算は、アキュムレータの最新の入力と分子係数の乗算と累積を表します。y(k) 内の 2 番目の加算は、アキュムレータの最新の出力と分母係数の乗算と累積を表します。FIR 係数、入力および出力はすべて 16 ビット数 (基本データ型) で表されるため、これらの数字で乗算を行う場合は 32 ビットの出力 (アキュムレータ データ型) が生成されます。

固定小数点ツールを開く

Simulink® の [アプリ] タブの [コード生成] の下で、[固定小数点ツール] アイコンをクリックします。

モデルの数値的動作の確認

各ブロックをスケーリングする場合の初期推奨は、モデルの各ブロック マスクで既に指定されています。"固定小数点ツール""範囲の収集" ワークフローを使用して、モデルの動作を理想的な倍精度浮動小数点バージョンと比較します。

  1. 固定小数点ツールで、[新規]、[範囲の収集] を選択します。

  2. [設計対象のシステム (SUD)] で、解析するサブシステムを選択します。この例ではコントローラーを選択します。

  3. [範囲の収集モード] で、[シミュレーション範囲] を選択します。

  4. [シミュレーション入力] で、[既定のモデル入力を使用] を選択します。

  5. [範囲の収集] ボタンの矢印をクリックして [倍精度] を選択します。[範囲の収集] ボタンをクリックし、範囲の収集シミュレーションを開始します。ソフトウェアは倍精度データ型オーバーライド モードで fxpdemo_feedback モデルのシミュレーションを実行し、結果を BaselineRun に格納します。データ型オーバーライドでは、固定小数点データ型をグローバルにオーバーライドできるため、量子化の影響を受けません。実行の結果は [結果] スプレッドシートに表示されます。BaselineRun のコンパイルされたデータ型 ([CompiledDT]) 列には、モデルのブロックによってシミュレーション中に double データ型が使用されたことが示されます。

  6. 次に、モデルで指定された固定小数点データ型を使用してシステムのシミュレーションを実行します。[設定] ボタンの矢印をクリックして [指定したデータ型] を選択します。[組み込み型によるシミュレーション] ボタンをクリックします。ソフトウェアは現在指定されている固定小数点データ型を使用してモデルのシミュレーションを実行し、範囲情報を EmbeddedRun に格納します。収集された範囲はスプレッドシートの [シミュレーションの最小値] 列と [シミュレーションの最大値] 列で確認できます。

  7. 固定小数点ツールで Up Cast ブロックの含まれる行が強調表示され、この結果に問題があることが示されます。スプレッドシートで Up Cast 行を選択します。[結果の詳細] ペインには、ブロックが 23 回飽和したことが示され、これはスケーリングの推測が不正確であることを示しています)。固定小数点ツールの [探索] タブを使用すると、結果をさらに探索してフィルターを適用できます。

  8. [結果の比較] をクリックして、シミュレーション データ インスペクターで結果を比較します。

  9. シミュレーション データ インスペクターで、比較する信号として PlantOutput を選択します。シミュレーション データ インスペクターは BaslineRun および EmbeddedRun のプラント出力に関連する信号をプロットします。EmbeddedRun のプラント出力信号のプロットはスケーリングでの初期推奨を反映します。ボード線図設計は、理想的な BaselineRun で表される、閉ループ システムに適合する線形応答を生成するように求められます。しかし、EmbeddedRun の応答は非線形です。重大な量子化の影響により、非線形特性が生じます。固定小数点設計では、量子化の影響を許容レベルにまで下げるスケーリングを見つけることが重要な部分になります。

シミュレーション範囲データを使用した小数部の長さの推奨

自動データ型指定を使用すると、シミュレーションの全範囲をスパン中に出力データ型の最高精度を得ることができます。固定小数点ツールの固定小数点の反復的変換ワークフローで、シミュレーションの全範囲をスパン中に出力データ型の最高精度を確保できます。この過程はオートスケーリングとして知られています。この例では、設計範囲情報が提供されないため、固定小数点ツールでのデータ型の推奨にシミュレーション範囲データを使用します。シミュレーションの最大値と最小値に設計で意図された全操作範囲が含まれる場合は、固定小数点ツールによって有意な自動データ型指定の結果を得ることができます。

固定小数点に変換するためのモデルの設定

次に、固定小数点変換ワークフローを設定します。なお、固定小数点ツールでワークフローを切り替えると、設定と、ワークフローがアクティブな間に収集されたすべてのデータがクリアされます。モデルは現在の状態のままです。

  1. 固定小数点の反復的変換ワークフローを開始します。固定小数点ツールで、[新規]、[固定小数点の反復的変換] を選択します。

  2. 変換するサブシステムを選択します。[設計対象のシステム (SUD)] で、Controller サブシステムを選択します。

  3. 使用する範囲収集方法を選択します。[範囲の収集モード] で、[シミュレーション範囲] を選択します。

  4. [シミュレーション入力] を指定します。この例では、既定のモデル入力をシミュレーションに使用します。

  5. ログ記録される信号の信号許容誤差を指定します。Plant Output 信号の [絶対許容誤差]0.1 に設定します。

固定小数点に変換するモデルの準備

モデルを固定小数点変換用に準備するには、[準備] をクリックします。固定小数点ツールにより、モデルのバックアップ バージョンが作成され、モデルと変換プロセスとの互換性がチェックされます。準備のチェックの詳細については、固定小数点ツールを使用した変換するシステムの準備を参照してください。

範囲の収集

範囲を収集するには、[範囲の収集] ボタンの矢印をクリックして [倍精度] を選択します。[範囲の収集] をクリックして範囲収集シミュレーションを開始します。

範囲の収集モードとして [倍精度] を選択した場合、ツールではデータ型オーバーライドを有効にして fxpdemo_feedback モデルがシミュレートされます。データ型オーバーライドでは、モデル内の固定小数点データ型がグローバルにオーバーライドされるため、量子化の影響を受けません。これにより、モデルの動作についての理想的な浮動小数点のベースラインを確立できます。

範囲収集の結果は BaselineRun に格納されます。[結果] スプレッドシートに、モデルで現在指定されているデータ型 ([SpecifiedDT])、シミュレーションの最小値、シミュレーションの最大値など、範囲収集シミュレーションで収集された統計の概要が表示されます。コンパイルされたデータ型の列 ([CompiledDT]) には、Controller サブシステムのすべてのオブジェクトについて double と表示されます。これは、範囲収集シミュレーションでデータ型オーバーライドが適用されたことを示します。

いずれかの結果をクリックすると、[結果の詳細] ペインに追加の詳細が表示されます。[シミュレーション データの可視化] ペインには、モデル内の各オブジェクトによって使用されているビットのヒストグラムの概要が表示されます。[結果] スプレッドシートに表示される情報はカスタマイズが可能です。また、[探索] タブを使用すると、それらの結果を追加の基準に基づいて並べ替えたりフィルターしたりできます。詳細については、固定小数点ツールでのビューの制御を参照してください。

固定小数点データ型の推奨

データ型の推奨に使用する設定を構成するには、[設定] ボタンの矢印を展開します。[シミュレーションの最小値/最大値に対する安全余裕 (%)] パラメーターを 20 に設定します。その他すべてのパラメーターについては既定の設定を使用します。

[シミュレーションの最小値/最大値に対する安全余裕 (%)] パラメーター値はシミュレーションの生データ値を乗算します。このパラメーターを 1 より大きい値に設定すると、固定小数点データ型を使用しているときにオーバーフローが発生する可能性が低くなります。量子化の非線形効果により、固定小数点シミュレーションでは理想的な double ベースのシミュレーションとは異なる結果が生じます。固定小数点シミュレーションの信号は double シミュレーションの信号よりも大きい範囲または小さい範囲をカバーできます。範囲が大きくなると、オーバーフローや飽和が発生する可能性があります。安全余裕によってこの可能性は低くなりますが、シミュレーション精度の低下を招く可能性もあります。

収集された範囲と指定したデータ型推奨設定に基づいてデータ型を推奨するには、[データ型を推奨] をクリックします。使用可能なすべての範囲データを使用して、ツールでデータ型推奨が計算されます。これには、設計の最小値と最大値、シミュレーションの最小値と最大値、派生した最小値と最大値が含まれます。設計対象システムのオブジェクトのうち、[固定小数点ツールによる変更に対して出力データ型の設定をロックする] パラメーターがオフになっているすべてのオブジェクトについてデータ型が推奨されます。

[結果] スプレッドシートが更新され、推奨されたデータ型が [ProposedDT] 列に表示されます。固定小数点ツールを使用すると、データ型推奨をモデル内のオブジェクトに選択的に適用できます。スプレッドシートで [確定] チェック ボックスを使用して、モデルに適用する推奨されたデータ型を指定します。既定の設定では、アプリは現在指定されているデータ型とは異なるすべての推奨データ型を受け入れます。この例では、既定の設定を使用します。

推奨された固定小数点データ型の適用と検証

推奨されたデータ型をモデルに書き込むには、[データ型を適用] をクリックします。ツールで [SpecifiedDT] 列が更新され、データ型がモデルに適用されたことが示されます。

適用された固定小数点データ型を使用してモデルをシミュレートします。[組み込み型によるシミュレーション] ボタンの矢印を展開して [指定したデータ型] を選択します。その後、[組み込み型によるシミュレーション] をクリックします。

固定小数点ツールで、新しい固定小数点データ型を使用してモデルがシミュレートされ、設計対象システムのすべてのオブジェクトについて、最小値、最大値、およびオーバーフローのデータが記録されます。この情報は EmbeddedRun という新しい実行名で格納されます。EmbeddedRun の横のアイコンにステータスがパスとして表示され、設計対象システムのすべての信号が指定された許容誤差を満たすことが示されます。[シミュレーション データの可視化] ペインが更新され、新しい EmbeddedRun のデータが表示されます。

BaselineRun に格納された理想の結果を新たに適用された固定小数点データ型と比較するには、[SDI で実行して比較] ドロップダウン メニューから EmbeddedRun を選択します。その後、[結果の比較] をクリックして [シミュレーション データ インスペクター] を開きます。シミュレーション データ インスペクターで、比較する信号として PlantOutput を選択します。

EmbeddedRun のプラント出力信号のプロットは、指定した許容誤差帯域に収まっています。固定小数点実行によって表現されるプラント出力信号は定常状態に達しますが、A/D 設計が最適でないために小さいリミット サイクルが存在します。

変換されたシステムの動作が要件を満たさない場合や追加のデータ型の選択について効果を調べる場合は、新しい推奨設定の適用後に新しいデータ型を推奨できます。システムの固定小数点の動作が許容される設定が見つかるまで繰り返します。

変換プロセス後に、モデルを変換プロセスの開始時の状態に戻す場合は、[元のモデルを復元] をクリックします。変換の準備段階後にモデルに加えられた変更はすべて削除されます。

参考

| |