Simscape HDL ワークフロー アドバイザーのヒントおよびガイドライン
Simscape HDL ワークフロー アドバイザーを使用して、HDL 実装モデルを生成できます。実装モデルの HDL コードを生成し、生成コードを FPGA プラットフォームに展開できます。アドバイザーを開くには、関数 sschdladvisor
を実行します。以下に例を示します。
openExample('plantdeployment/OpenTheSimscapeHDLWorkflowAdvisorExample','supportingFile','sschdlexBoostConverterExample') sschdladvisor('sschdlexBoostConverterExample')
Simscape HDL ワークフロー アドバイザーには、Simscape™ モデルを HDL 実装モデルに変換するさまざまなタスクが含まれています。Simscape HDL ワークフロー アドバイザーでさまざまなタスクを実行する際に、特定のヒントやガイドラインに従うことができます。これらのヒントは特定のタスクの UI ウィンドウに表示されます。たとえば、方程式を状態空間パラメーターに離散化するタスクの場合、UI にはサンプル時間を変更する方法を提案するヒントが含まれます。このセクションには、Simscape HDL ワークフロー アドバイザー UI の各ヒントに関する詳細が含まれます。
代数変数と微分変数を使用したリソース消費の推定
[モデルの互換性のチェック] タスクを実行すると、タスクはモデル内にある各 Simscape ネットワークの微分変数と代数変数の数をレポートします。たとえば、次の図は、昇圧コンバーターのモデル例 sschdlexBoostConverterExample
に 2 つの微分変数と 2 つの代数変数があることを示しています。
openExample('plantdeployment/OpenTheSimscapeHDLWorkflowAdvisorExample','supportingFile','sschdlexBoostConverterExample') sschdladvisor('sschdlexBoostConverterExample')
[モデルの互換性のチェック] タスクまでのワークフローを実行します。
代数変数と微分変数の数を表示することにより、FPGA デバイスで設計がリソースを消費する方法を特定できます。Nd
が微分変数の数で、Na
が代数変数の数である場合、ターゲット ハードウェアのリソースの使用率は、関係 Nd*(Nd+Na)
に応じて変化します。微分変数は、ターゲット FPGA デバイスで乗算器リソースの 2 次の量を消費します。代数変数は、乗算器リソースの線形の量を消費します。この情報を使用して、FPGA デバイスで Simscape の設計が消費する乗算器リソースの数と、状態空間表現への変換準備ができているかどうかを特定できます。
離散方程式を抽出するためのシミュレーション終了時間の設定
シミュレーション終了時間の変更
[離散方程式の抽出] タスクを実行すると、Simscape HDL ワークフロー アドバイザーはシミュレーション終了時間をレポートします。シミュレーション終了時間は、アドバイザーが Simscape モデルでシミュレーションを実行するのに必要な時間に相当します。終了時間は、アドバイザーでこのタスクの実行に長時間がかかるような、著しく大きい値にしてはなりません。モデルに必要なモードの数に到達するのに十分な終了時間を使用します。終了時間を変更するには、Simscape モデルに移動し、[終了時間] を指定します。
シミュレーション終了時間およびモードの数
[離散方程式の抽出] タスクで微分代数方程式を抽出すると、Simscape HDL ワークフロー アドバイザーは Simscape ブロックの非線形範囲をカバーするようにモデルをシミュレートします。このタスクは Simscape モデルの切り替え要素の数に応じて長い時間がかかる場合があります。
線形スイッチド モデルの場合、設計の各切り替え要素には 2 つのモードがあります。n
個の切り替え要素をもつ線形スイッチド モデルには、動作可能なモードが 2^n
個あります。切り替え要素が大量にある Simscape モデルの場合、モードの数は非常に大きくなる可能性があります。たとえば、Vienna 整流器に 21
個の切り替え要素があり、動作可能なモードは、2^21
個になります。Simscape HDL ワークフロー アドバイザーはこのような大きなモデルのシミュレーションに長い時間がかかる場合があり、多数のモードをカバーします。また、このような設計用に生成する HDL 実装モデルは大量のリソースを消費する可能性があり、ターゲット FPGA デバイスに適合しない場合もあります。
ほとんどの場合、モデルのシミュレーション中に、アドバイザーがすべての 2^n
モードに到達する必要はありません。たとえば、次のブリッジ整流器モデルについて考えます。このモデルを開くには、次を入力します。
openExample('plantdeployment/BridgeRectifierModelExample','supportingFile','sschdlexBridgeRectifierExample')
Simscape_system
Subsystem 内に、ブリッジ構成で並べられた 4 つのダイオードが表示されます。
各ダイオードに 2 つの状態があるため、Simscape の設計は 2^4 = 16
個の可能な状態をもつことができます。これに対して、ブリッジ整流器には 3 つのモードしかありません。モードは、以下のとおりです。
ダイオード
D1
とD2
はON
、D3
とD4
はOFF
ダイオード
D1
とD2
はOFF
、D3
とD4
はON
ダイオード
D1
、D2
、D3
、D4
はOFF
この例は、Simscape アルゴリズムおよび設計への入力に基づいて、到達するモードの数をカバーする最小値にシミュレーション終了時間を設定できることを示しています。
離散方程式を抽出するためのサンプル時間の変更
サンプル時間の変更
[離散方程式の抽出] タスクを実行すると、Simscape HDL ワークフロー アドバイザーは離散サンプル時間をレポートします。離散サンプル時間は、アドバイザーが微分代数方程式を状態空間パラメーターに離散化するのに使用するサンプル時間に相当します。サンプル時間を変更するには、Simscape モデルで Solver Configuration ブロックの [ブロック パラメーター] ダイアログ ボックスを開き、[サンプル時間] を指定します。
サンプル時間および方程式の離散化
[離散方程式の抽出] タスクで、Simscape HDL ワークフロー アドバイザーは微分代数方程式を状態空間パラメーターに離散化します。Simscape モデルをシミュレートすることにより、微分代数方程式を抽出します。このタスクはモデルの Solver Configuration (Simscape) ブロックに指定したサンプル時間からサンプル時間情報を取得します。次に、アドバイザーは、このサンプル時間情報に基づいて方程式を状態空間パラメーターに離散化します。
ソルバーの反復回数の使用
ソルバーの反復回数とは
Solver Configuration ブロックで、[固定コストでの実行時整合性の反復を使用] チェック ボックスを選択すると、[非線形の反復] テキスト ボックスにソルバーの反復回数のカスタム値を指定できます。ソルバーの反復回数は、各モードで状態空間モデルが実行される回数を表します。Simscape HDL ワークフロー アドバイザーでは、状態空間モデルの実行に必要な反復数が自動的に生成されます。
物理システムで各モードに対して、線形スイッチド システム ワークフローは状態空間表現に到達します。ソルバー メソッドは反復法であり、複数の計算を実行して次のタイム ステップの正しいモードを判断します。一定数の反復が行われた後、次のタイム ステップからの出力値は前のタイム ステップからの値と同じになります。出力値におけるこの整合性は、ソルバーの反復回数が正しいことを示しています。
既定では、[ソルバーの反復回数] は、線形モデルに対して 1
です。線形スイッチド モデルでは、[ソルバーの反復回数] は、Simscape がモデルのシミュレーション中に使用するモード反復の数によって異なります。モデルが収束し、リアルタイム展開のしきい値を超えないため、この選択された値は最適です。
固定コストでの実行時整合性の反復を使用
Solver Configuration ブロックで、[固定コストでの実行時整合性の反復を使用] チェック ボックスは既定の設定でオフになります。このチェック ボックスをオンにすると、Solver Configuration ブロックの [非線形の反復] 設定で [ソルバーの反復回数] を指定できます。
[固定コストでの実行時整合性の反復を使用] 設定の詳細については、Solver Configuration (Simscape) を参照してください。リアルタイム シミュレーションのソルバー (Simscape)も参照してください。
ソルバーの反復回数の変更
既定では、このタスクでソルバーの反復回数を変更できます。ソルバーの反復回数を増やすと、生成された HDL 実装モデルの数値精度が向上します。サンプリング周波数を高くするには、ソルバーの反復回数を減らします。数値精度とサンプリング周波数のトレードオフを行うソルバーの反復回数の値を選択します。
Solver Configuration ブロックで、[固定コストでの実行時整合性の反復を使用] チェック ボックスを選択すると、[非線形の反復] パラメーターのテキスト ボックスでソルバーの反復回数を変更できます。次に、[実装モデルを生成] タスクを再実行します。
数値精度とサンプリング周波数のトレードオフ
HDL 実装モデルの数値結果が元の Simscape モデルと一致するかどうかを検証するには、[実装モデルの検証ロジックの生成] を選択します。HDL 実装モデルの数値結果が一致しない場合、ソルバーの反復回数を増やすことができます。詳細については、ソルバーの反復回数を増やすを参照してください。
ソルバーの反復回数を変更すると、サンプリング周波数は向上しますが数値精度は低下します。ソルバーの反復回数を増やすと HDL 実装モデルのサンプル時間が長くなり、サンプリング周波数が低くなる可能性があります。ソルバーの反復回数を減らすを参照してください。
データ型の精度と数値精度
[データ型の精度] 設定を使用して、生成された実装モデルの HDL Subsystem
内のアルゴリズムが行列計算の実行時に single
浮動小数点データ型、double
浮動小数点データ型、または fixed-point
データ型のいずれのデータ型を使用するかを指定します。
データ型の精度 | 説明 |
---|---|
Double | double 浮動小数点データ型精度を使用すると、生成されたモデルの数値精度と達成可能な最大ターゲット周波数が向上します。ただし、面積の消費量とパイプライン レイテンシも増大します。 |
Single | これはデータ型精度の既定の設定です。 |
Single coefficient, double computation | このモードは、浮動小数点データ型の精度の Single モードと Double モード間のトレードオフを提供します。メモリ使用量を節約するために、係数が single に保存されます。次に、精度を向上するために行列計算が double で実行されます。 |
Fixed-point | データ型の精度のこのモードは状態空間行列のダイナミック レンジを決定し、指定された語長を使用して適切な小数部の長さと完全精度の整数丸めモードを計算します。これにより、オーバーサンプリング係数が減少することで、リソース利用量が削減され、FPGA サンプリング周波数が改善されます。
|
浮動小数点精度の設定とトレードオフの詳細については、大きい浮動小数点精度の使用を参照してください。
状態空間のパラメーターを RAM にマッピング
[状態空間のパラメーターを RAM にマッピング] 設定を使用すると、状態空間のパラメーターを RAM やルックアップ テーブル (LUT) などのハードウェア リソースにマッピングできます。
状態空間のパラメーターを RAM にマッピング | 説明 |
---|---|
Auto (既定の設定) | モードの数が設定されたしきい値 (200) を超えたときに、状態空間のパラメーターを RAM にマッピングします。それ以外の場合は、LUT にマッピングします。 |
On | 状態空間のパラメーターを RAM にマッピングします。 |
Off | 状態空間のパラメーターを LUT にマッピングします。 |
最適な共有係数でサポートされている FPGA デバイス ファミリ
Simscape HDL ワークフロー アドバイザーでは、表にリストされている以下の FPGA デバイス ファミリおよびパーツに対して共有係数の最適な値がサポートされています。
デバイス ファミリ | パーツ | |
---|---|---|
Xilinx®Vivado® | Kintex®-7 | xc7k325t xc7k410t |
Kintex U | xcku115-flvb1760-1-c xcku085-flvb1760-1-c | |
Artix®-7 | xc7a200t xc7a50t | |
Zynq®UltraScale+™ | xczu11eg-ffvc1760-2-e xczu17eg-ffvc1760-2-e xczu19eg-ffvc1760-2-e | |
Altera® | MAX® 10 | 10M50DAF484C6GES |