主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

浮動小数点モデルから固定小数点モデルへの変換

この例では,以下の方法について説明します。

  • 浮動小数点システムを同等の固定小数点表現に変換する。

    固定小数点ツールによりシステム内の固定小数点データ型を指定するタスクが自動化されます。この例では,モデル オブジェクトの範囲データを、信号とパラメーター用に明示的に指定する設計の最小値と最大値、またはシミュレーション中に発生するログ最小値と最大値から収集します。これらの値に基づいて、ツールでは精度を最大化し範囲をカバーする固定小数点データ型を推奨します。ツールを使用すると、推奨されたデータ型を確認してから、モデル内のオブジェクトに選択的に適用することができます。

  • 変換でサポートされないブロックをルックアップテーブル近似で置き換えます。

    変換の準備段階中に,固定小数点ツールは,固定小数点変換をサポートしないブロックを,数据类型转换ブロックで囲まれたサブシステム内に配置して分離します。ルックアップテーブルオプティマイザーを使用して、サポートされないブロックをルックアップ テーブル近似で置き換えることができます。

モデルの設定

モデルを開き,固定小数点変換向けに設定します。

open_system (“ex_fixed_point_workflow”

モデルは来源,固定小数点に変換する控制器子系统,およびサブシステム出力を可視化する范围で構成されています。この方法でモデルを構成すると,システムに与える固定小数点データ型の影響を判定する場合に役立ちます。この方法を使用する場合は,サブシステムが対象のシステムであるため,サブシステムのみを変換します。源または范围を固定小数点に変換する必要はありません。

このように設定すると,入力を変更し複数のスティミュラスのシミュレーションデータを収集できます。異なる入力範囲を使用してサブシステムの動作を調べ,固定小数点データ型をスケーリングすると,シミュレーション範囲全体に適応しながら最高精度を与えられます。

変換前と変換後とで動作を比較するには,設計対象のシステムの出力で信号のログを有効にします。

ph = get_param (“ex_fixed_point_workflow /控制器子系统”“PortHandles”);set_param (ph.Outport (1),“数据采集”“上”) set_param (ph.Outport (2),“数据采集”“上”

変換するシステムの準備

モデルを固定小数点に変換するには,固定小数点ツールを使用します。

  1. ex_fixed_point_workflowモデルの[アプリ]ギャラリーで,(固定小数点ツール]を選択します。

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

  3. [設計対象のシステム(SUD)]で,固定小数点に変換するサブシステムを選択します。この例では,(控制器子系统)を選択します。

  4. [範囲の収集モード]で,範囲の収集方法として[シミュレーション範囲]を選択します。

  5. [シミュレーション入力)金宝app仿真软件。SimulationInputオブジェクトを指定すると,その動作範囲全体にわたって設計を実行できます。この例では,[シミュレーション入力)(既定のモデル入力を使用)に設定します。

  6. システムの許容誤差を指定するには,テーブルの[信号許容誤差]で,モデル内の信号のログが有効になっている任意の信号について,許容誤差を指定します。詳細については,信号の許容誤差の指定を参照してください。

    ログ記録した信号の相対誤差([相対許容誤差])を15%に設定します。

  7. ツールストリップで[準備]をクリックします。固定小数点ツールは設計対象のシステムについて変換プロセスとの互換性をチェックし、モデルで見つかった問題をレポートします。可能な場合は、固定小数点ツールは互換性のない設定を自動的に変更します。詳細については、固定小数点ツールを使用した変換するシステムの準備を参照してください。

    設計対象のサブシステムには经验值ブロックが含まれており,これは固定小数点データ型をサポートしていません。固定小数点ツールはこのブロックを数据类型转换ブロックで囲み,サブシステム内に配置します。サブシステムの残りの部分を固定小数点に変換するとき,このサブシステムを,関数经验值のルックアップテーブル近似で置き換えることができます。

範囲の収集

既定では,固定小数点ツールは,モデルに設定されている現在のデータ型オーバーライドを使用します。この例では,範囲収集実行時に,モデル内のデータ型を精度にオーバーライドします。

  1. [範囲の収集)ボタンの矢印を展開して[倍精度]を選択します。

  2. [範囲の収集)をクリックしてモデルをシミュレーションします。

固定小数点ツールはモデル内のデータ型を双でオーバーライドし,シミュレーション中に生じるモデル内の各オブジェクトの最小値と最大値を収集します。固定小数点ツールはBaselineRunというタイトルの実行にこの範囲情報を保存します。収集された範囲はスプレッドシートの(SimMin)列と(SimMax)列,または[結果の詳細]ペインで確認できます。

[シミュレーションデータの可視化)ペインには,シミュレーション結果の別のビューも用意されています。固定小数点ツールの[探索]タブを選択して,スプレッドシートおよび可視化のデータの並べ替えやフィルターを行います。

データ型の変換

固定小数点ツールを使用し,実行BaselineRunに保存されている,倍精度のシミュレーション結果に基づいて適切に構成されたブロックに対する固定小数点データ型を推奨します。

  1. ツールストリップの[変換]セクションで,[データ型の推奨]ボタンをクリックします。

    固定小数点ツールは,(固定小数点ツールによる変更に対して出力データ型の設定をロックする]パラメーターが選択されていないすべての固定小数点ブロックのスケーリングを解析します。

    固定小数点ツールは既定の推奨設定を使用して,語長が16ビットで小数部の長さが最良精度のデータ型を推奨し,スプレッドシートで結果を更新します。

    ツールストリップの[変換]セクションで[設定]ボタンをクリックし,型を推奨する前に推奨設定を編集できます。

  2. ツールでは,スプレッドシートの(ProposedDT)列に推奨データ型が表示されます。

    既定の設定では,推奨されるデータ型がオブジェクトの現在のデータ型と異なる各結果について[確定]チェックボックスが選択されます。データ型を適用すると,ツールによってそれらの推奨データ型が設計対象のシステムに適用されます。

  3. 結果から問題が見つかった場合は解決し,各結果に対して推奨されたデータ型を受け入れるようにしてください。[シミュレーションデータの可視化)ペインは,結果にオーバーフローまたはアンダーフローが含まれることを赤または黄色の三角形でそれぞれ示します。アンダーフローは数値的問題の原因となる可能性がありますが,無視しても安全な場合もあります。

    固定小数点ツールは,推奨されたデータ型が別の型と競合する結果の場合,赤のアイコンで示します。この例では,競合のある結果はありません。詳細は、結果を調査して競合を解決を参照してください。

  4. 結果を調べ,問題がないことを確認したことで,推奨データ型をモデルに適用する準備ができました。[データ型を適用)をクリックし,推奨されたデータ型をモデルに書き込みます。

    固定小数点ツールにより,設計対象のシステム内のブロックに推奨データ型が適用されます。

新しい設定の確認

次に,新しい固定小数点の設定を使用してモデルを再度シミュレートします。シミュレーションデータインスペクターのプロット機能を使用して,浮動小数点BaselineRunの実行結果を固定小数点の結果と比較します。

  1. [組み込み型によるシミュレーション]をクリックします。固定小数点ツールは新しい固定小数点データ型を使用してモデルのシミュレーションを実行し、実行情報をEmbeddedRunというタイトルの新しい実行に保存します。

    その後,固定小数点ツールには,固定小数点データのログを作成したブロックに関する情報が表示されます。実行の(CompiledDT)列には,控制器子系统の各ブロックで新しい固定小数点データ型が使用されることが示されます。

  2. [シミュレーションデータの可視化)ペインのヒストグラムを確認することで,オーバーフローまたは飽和がないことを検証します。オーバーフローと飽和には赤い三角形が付いています。

  3. ワークフローブラウザーには,許容誤差を指定したすべての信号がパスしたことが示されます。

  4. [結果の比較]をクリックしてシミュレーションデータインスペクターを開きます。シミュレーションデータインスペクターで,ログ記録された信号の1つを選択して,固定小数点シミュレーションの動作を表示します。

サポートされていないブロックのルックアップテーブル近似による置換

ワークフローの変換するシステムの準備の手順で,固定小数点ツールは,変換でサポートされていない经验值ブロックを数据类型转换ブロックで囲まれたサブシステム内に配置しました。この手順で,このサブシステムをルックアップテーブル近似で置き換えます。

  1. 固定小数点ツールが変換のため分離したすべてのサブシステムのリストを取得するには,コマンドラインで次のように入力します。

    解耦= DataTypeWorkflow.findDecoupledSubsystems (“ex_fixed_point_workflow”
    解耦BlockPath = 1×2表ID  __ ____________________________________________________ 1 {' ex_fixed_point_workflow /控制器子系统/ Exp '}

    関数DataTypeWorkflow.findDecoupledSubsystemsは,サポートされていないブロックを分離するために固定小数点ツールによって作成されたサブシステムすべてのブロックパスを含むテーブルを返します。

  2. ルックアップテーブルオプティマイザーを開きます。[アプリ]ギャラリーで[ルックアップテーブルオプティマイザー]を選択します。

  3. ルックアップテーブルオプティマイザーの[オブジェクティブ]ページで,(金宝app仿真软件ブロックまたはサブシステム]を選択します。(次へ]をクリックします。

  4. [ブロック情報]に,固定小数点ツールによって作成されたサブシステムへのパスをコマンドラインからコピーしペーストします。

  5. [モデルから現在の値を収集)ボタンをクリックすると,モデルのブロック線図が更新され,ルックアップテーブルオプティマイザーが最適化のプロセスに必要な情報を自動的に収集できます。(次へ]をクリックします。

  6. 最適化で使用する制約を指定します。この例では,既定値を使用します。ルックアップテーブルを作成するには,[最適化]をクリックします。(次へ]をクリックします。

  7. (元の関数を置き換える]をクリックします。ルックアップテーブルオプティマイザーは,数学函数经验值ブロックを,ルックアップテーブルの近似を含む新しいバリアントサブシステムに置き換えます。

ルックアップテーブル近似によるシステムの動作の検証

設計対象のシステムが完全に変換されたところで,このシステムが,変換前に指定した許容誤差を依然として満たしていることを検証します。

  1. 固定小数点ツールのツールストリップの[検証]セクションで,[組み込み型によるシミュレーション]をクリックします。

    固定小数点ツールは,ルックアップテーブル近似を含むようになったモデルのシミュレーションを行い,結果をEmbeddedRun_2として保存します。

  2. [ワークフローブラウザー]には,指定された許容誤差をもつ信号が,ルックアップテーブル近似を使用しているモデルでパスしていることが表示されます。

関連するトピック