主な機能

  • MATLAB、Simulink および Stateflow における固定小数点データ型の指定
  • 固定小数点および単精度アルゴリズムのビットトゥルー シミュレーション
  • データ型を検討して最適化するためのヒストグラムおよび関連ツール
  • 倍精度から固定小数点または単精度に変換するアプリ
  • シミュレーションの最小値・最大値の収集・計測
  • 設計全体の最小値と最大値を評価するための範囲解析
  • デバッグおよび可視化用のオーバーフロー検出ツールおよび桁落ちツール
Fixed-Point Designer を使用した MATLAB、Simulink および Stateflow 用データ型とスケーリングの設定・表示。

固定小数点による仕様

Fixed-Point Designer では、MATLAB コード、Simulink モデルおよび Stateflow チャートのすべての固定小数点プロパティを指定できます。 また、符号の有無、語長、スケーリングを完全にコントロールできるほか、 1 ビットから 128 ビット以上まで、アプリケーションに固有の語長がサポートされています。 さらに、センサーやアクチュエーターで必要とされる2進小数スケーリングと、任意の勾配とバイアスのスケーリングもサポートされており、 丸めやオーバーフローの処理方法など、数学演算の詳細をコントロールすることもできます。

Fixed-Point Designer には、数学演算、ビット演算、行列演算と配列演算、CORDIC 実装、三角関数などの固定小数点演算をサポートする多くの関数が用意されています。

Fixed-Point Designer では固定小数点演算をコントロールできます。 MATLAB の固定小数点変数では、単一の算術属性のセットを共有するか、各変数に独自の算術属性を指定することができます。

Fixed-Point Designer を MATLAB Coder™ または Embedded Coder® と共に使用すると、固定小数点の MATLAB コードから純粋な整数 C コードを生成できます。Fixed-Point Designer を HDL Coder™ と共に使用すると、固定小数点の MATLAB コード、Simulink モデルおよび Stateflow チャートからビットトゥルーの合成可能な Verilog® コードおよび VHDL® コードを生成できます。.

ギャラリーを閲覧する (2 イメージ)


ビットトゥルーの設計ワークフロー

Fixed-Point Designer は、モデルベース デザインを使用するワークフロー全体にビットトゥルーの一致性を提供します。 固定小数点アルゴリズムの応答は、高速化とソフトウェアインザループを含むすべてのシミュレーションとコード生成に対してビットトゥルーに一致します。 固定小数点アルゴリズムの解析と検証は、ビットトゥルーの表現に基づいています。 ビットトゥルーの一致性により、モデルベース デザインの多くの利点を最大限に活用できます。たとえば問題点をワークフロー初期において発見できるため、簡単に修正できるほか、コストも削減できます。

設計を固定小数点データ型で行ってから性能をシミュレーションすることにより、固定小数点組み込みシステムに対する有限のデータ範囲と精度に関する実装トレードオフを検討できます。

Fixed-Point Designer のツールを利用して、これらの値にアクセスしたり、信号のデータ型を変更したりして、データ範囲がカバーされていることを確認しながら精度を最適化できます。 データ型の範囲は、設計における最大値/最小値、シミュレーション結果、または導出された最大値/最小値の結果を使用して指定できます。 Simulink モデルでは、変更を防ぐために出力データ型をロックできます。

ギャラリーを閲覧する (2 イメージ)


データ型の検討と最適化

Fixed-Point Designer は、システム全体についてシミュレーション範囲の可視化を行ったり、各種信号が選択したデータ型とどのように適合するかを検討するためのツールを提供します。理想的な浮動小数点設計と効率的な組み込み実装のバックツーバックによる比較が最適なデータ型を使用して簡単に行えます。

データ型のオーバーライドを行うことで、固定小数点または単精度の組み込み設計を瞬時に倍精度に切り替え、量子化の影響を解析することができます。理想的な設計の動作と組み込みハードウェアの動作のバックツーバックによるシミュレーションが簡単に行えます。シミュレーション データ インスペクターを用いたワークフローの統合により、組み込みハードウェアの応答 (量子化ノイズなど) が倍精度設計での応答において目標とされる許容誤差範囲に収まっているかどうかを簡単に判断できます。

データ型を繰り返し調整し、組み込みハードウェアの応答を新しく収集して、倍精度設計における許容誤差内に新設計が収まっているかどうかを簡単に判断できます。この単純な反復ループにより、データ型、丸めモード、飽和設定の検討および最適化が簡単に行えます。

オーバーフローとアンダーフローを強調表示した信号ヒストグラム


倍精度から単精度または固定小数点への変換

Fixed-Point Designer には、設計を倍精度から単精度または固定小数点に効率的に変換するための解析ツールが用意されています。また、ガイド付きワークフローにより数値精度要件を満たすデータ型を複数の選択肢の中から繰り返し検討でき、組み込みハードウェアの最適な使用が可能になります。この解析フレームワークでは、設計に使用されている変数のダイナミック レンジを観察し、浮動小数点の設計でも固定小数点の設計でもそのアルゴリズムが同じ動作となるかを確認できます。

MATLAB または Simulink では、Fixed-Point Designer を使用して、シミュレーションまたは範囲解析から最小値と最大値を収集し、データ型の自動推奨を行うことができます。ヒストグラムは設計内の各信号と変数に対して生成されますが、このヒストグラムを使用して、語長と小数部の長さを最適化できます。設計内のサポートされていない任意の MATLAB 関数をルックアップ テーブル近似関数に置き換えることができます。

Fixed-Point Designer の Fixed-Point Tool では、シミュレーションを実行して範囲情報をロギングするか、波及範囲解析を行うことで範囲データを収集できます。このビデオでは、Fixed-Point Tool でモデルの個々の計算の範囲を静的に解析する波及範囲解析について説明しています。
Collect and display simulation ranges for variables inside a MATLAB Function block using the Fixed-Point Tool. Use this simulation range analysis to propose data types for the variables based on the simulation data

理想的な浮動小数点設計を効率的な組み込み設計に変換するワークフロー。


モデル計測と範囲解析

Fixed-Point Designer はモデル全体の計測を通してシミュレーションの範囲データを収集することができます。このとき、モデル内のすべての信号データを明示的に記録する必要はありません。この範囲データに基づき、推奨データ型が提示され、設計の解析をサポートするヒストグラム データなどの統計データが収集されます。

また、Fixed-Point Designer では数学的解析に基づく派生範囲も提示されます。これにより、すべてを網羅するシミュレーション テスト ベンチを作成することなく、最悪の場合の範囲を判断することができます。派生範囲を使用することで、あらゆるオーバーフローの可能性を確実に防いだり、対処できるようになります。

Fixed-Point Tool により、テスト ベンチの入力、およびモデル内で指定された設計上の最小値 と最大値に基づいて範囲を派生させるオプション設定に従って、シミュレーションの最小値と最大値が示されています。


オーバーフローおよび桁落ちの検出

Fixed-Point Designer はオーバーフロー、桁落ち、無駄な範囲または精度がある箇所を素早く特定するためのツールを提供しています。スケーリングされた倍精度のオーバーライドを使用することで、理想的な浮動小数点のモデル動作を可視化し、指定された組み込みの固定小数点データ型との動作の比較解析ができます。

理想的な範囲と組み込みの固定小数点データ型が表現可能な範囲が重ね合わせて表示されるヒストグラムを使用した視覚的表示により、オーバーフロー、アンダーフロー、無駄な範囲ビット、無駄な精度ビットを簡単に特定できます。これにより、データ型の改善が可能な箇所を簡単に特定できます。

オーバーフロー/アンダーフローを特定の設計要素 (特定のブロック、Stateflow チャート要素、MATLAB コードのセクションなど) まで追跡できます。Fixed-Point Designer と Simulink 診断との統合により、実行時のオーバーフローなどの設計エラーを検出して隔離できます。正常にオーバーフローするタイマーなど、個々のモデル要素の診断を非表示にする機能により、実際の問題のみに集中できます。

モデル内の特定のブロックまでオーバーフローを追跡しています。