固定小数点出力を使用したブロックの設定
固定小数点モデルを作成するには、固定小数点信号を出力するように Simulink® ブロックを設定します。固定小数点出力をサポートする Simulink ブロックでは、ブロックが固定小数点信号を出力するかどうか、そしてその場合、その固定小数点出力のサイズ、スケーリング、およびその他の属性を指定するためのパラメーターが提供されます。通常、これらのパラメーターは、ブロックのダイアログ ボックスにある [信号属性] ペインに表示されます。
以下の節では、固定小数点出力を生成するためにこれらのパラメーターを使用してブロックを設定する方法を説明します。
出力データ型とスケーリングの指定
Simulink ブロックの多くでは、ブロックのダイアログ ボックスに表示されるパラメーターを使用して出力データ型とスケーリングを指定できます。このパラメーター (通常、"出力データ型" という名前をもつ) は、特定のブロックでサポートされるデータ型をリストしたプルダウン メニューを提供します。通常、出力データ型はあるデータ型、組み込みデータ型、データ型を評価する式、または Simulink データ型オブジェクトを継承する規則として指定できます。詳細は、信号のデータ型の制御を参照してください。
Fixed-Point Designer™ ソフトウェアでは、以下を使用して Simulink ブロックを構成できます。
固定小数点データ型
固定小数点データ型は、ビット単位で表すワード サイズ、および固定小数点値のスケーリングに使用する 2 進小数点で特徴付けられます。
浮動小数点データ型
浮動小数点データ型は、符号ビット、分数 (仮数) フィールド、および指数フィールドで特徴付けられます。
Fixed-Point Designer データ型でブロックを構成するには、ブロックのダイアログ ボックスで、データ型に評価される式としてデータ型パラメーターを指定します。あるいは、データ型式の入力タスクを簡易化するアシスタントを使用できます (データ型アシスタントを使用した固定小数点データ型の指定を参照)。以下の節では、さまざまな固定小数点データ型および浮動小数点データ型、および関数 fixdt
を使用してこれらの型を指定する方法の例を説明します。関数 fixdt
では、固定小数点データ型に対してスケーリングを指定することもできます。
整数
ブロック ダイアログ ボックスで 16 ビットの符号なし整数を設定するには、[出力データ型] パラメーターを fixdt(0,16,0)
として指定します。16 ビットの符号付き整数を設定するには、[出力データ型] パラメーターを fixdt(1,16,0)
として指定します。
整数データ型の場合、既定の 2 進小数点は、全ビットの右側にあると想定されています。
分数
ブロック ダイアログ ボックスで出力を 16 ビットの符号なし小数として設定するには、[出力データ型] パラメーターを fixdt(0,16,16)
として指定します。16 ビットの符号付き小数を設定するには、[出力データ型] を fixdt(1,16,15)
として指定します。
小数は既定のスケーリングにより整数と区別されます。符号付きおよび符号なしの整数データ型の既定の 2 進小数点は全ビットの右側ですが、符号なし小数のデータ型の既定の 2 進小数点は、全ビットの左側であり、符号付き小数データ型の既定の 2 進小数点は、符号ビットの右側です。
符号なしと符号付きの両方の小数データ型では、オーバーフローを防止する "ガード ビット" がサポートされます。たとえば、fixdt(1,16,11)
では 16 ビットの符号付き小数と 4 つのガード ビットが指定されます。ガード ビットは、既定の 2 進小数点の左側にあります。
一般化固定小数点数
ブロック ダイアログ ボックスで出力を 16 ビットの符号なし一般化固定小数点数として設定するには、[出力データ型] パラメーターを fixdt(0,16)
として指定します。16 ビットの符号付き一般化固定小数点数を設定するには、[出力データ型] を fixdt(1,16)
として指定します。
一般化固定小数点数は、既定のスケーリングがないことで整数および分数と区別されます。整数および分数データ型の場合、通常、ブロックは別のブロックからスケーリングを継承します。
浮動小数点数
Fixed-Point Designer ソフトウェアでは、IEEE® Standard 754–1985 for Binary Floating-Point Arithmetic で定義された単精度および倍精度の浮動小数点数がサポートされます。
ブロック ダイアログ ボックスで出力を単精度浮動小数点数として設定するには、[出力データ型] パラメーターを fixdt('single')
として指定します。倍精度浮動小数点数を設定するには、[出力データ型] を fixdt('double')
として指定します。
データ型アシスタントを使用した固定小数点データ型の指定
データ型アシスタントは、Simulink ブロックおよびデータ オブジェクトのデータ型を指定するタスクを単純化するグラフィカルな対話型ツールです。このアシスタントは、ブロックおよびオブジェクトのダイアログ ボックス内の [出力データ型] パラメーターなどのデータ型を制御するパラメーターの近くに表示されます。アシスタントのアクセスおよび操作の詳細は、データ型アシスタントを利用したデータ型の指定を参照してください。
データ型アシタントを使用すると、固定小数点データ型を指定できます。[モード] フィールドで [固定小数点]
を選択すると、アシスタントは下の例のように固定小数点データ型に関する追加情報を示すフィールドを表示します。
次の固定小数点属性を設定できます。
符号属性
固定小数点データを [符号付き]
または [符号なし]
のどちらに設定するかを指定します。符号付きデータは正または負の数値を表します。符号なしデータは正の値のみを表します。
語長
量子化された整数をもつワードのビット サイズを指定します。ワード サイズが大きいと、小さい場合に比べて、大きな値を高精度で表現します。シミュレーションでは 128 ビットまでの固定小数点ワード サイズがサポートされます。
スケーリング
オーバーフローを避け、量子化誤差を最小限に抑えるための固定小数点データのスケーリング方法を指定します。以下の中から選択できます。
スケーリング モード | 説明 |
---|---|
2 進小数点 | このモードを選択すると、アシスタントに 2 進小数点の位置を指定する [小数部の長さ] フィールドが表示されます。 2 進小数点は正または負の整数になります。正の整数を入力すると、その値に応じて 2 進小数点は右端のビットの左側に配置されます。たとえば、2 は小数点を右から 2 番目のビットの前に設定します。負の整数を入力すると、その値に応じて 2 進小数点は右端のビットのさらに右側に配置されます。 詳細は、2 進小数点のみのスケーリングを参照してください。 |
勾配とバイアス | このモードを選択すると、アシスタントに "勾配" と "バイアス" を入力するためのフィールドが表示されます。
詳細は、勾配およびバイアス スケーリングを参照してください。 |
最高精度 | このモードを選択すると、ブロックは対象の要素の精度が最大化されるように定数ベクトルまたは行列をスケーリングします。このモードは、特定のブロックでのみ使用できます。 詳細については、最高精度のための定数のスケーリングを参照してください。 |
最高精度のスケーリングを計算
Fixed-Point Designer ソフトウェアでは、[2 進小数点]
と [勾配とバイアス]
の両方のスケーリングに対し、ダイアログ ボックスの他のパラメーターに指定した値に基づいて、"最高精度" の値が自動的に計算されます。最高精度のスケーリング値を自動的に計算するには、ブロックの [出力の最小値] パラメーターと [出力の最大値] パラメーターの値を入力します。その後、アシスタントで [最大精度のスケーリングを計算] ボタンをクリックします。
丸め
[整数丸めモード] パラメーターを使用して固定小数点数の丸め方法を指定します。以下はサポートされる丸めモードプロパティです。
[正方向の丸め]
— このモードは、正の方向に無限に丸め、MATLAB® の関数ceil
と同等です。[最も近い偶数方向]
— このモードは、最も近い表現可能な数値に丸めますが、等距離の場合は最も近い偶数の整数に丸めます。偶数丸めは、Fixed-Point Designer の関数convergent
と同等です。[負方向への丸め]
— このモードは、負の方向に無限に丸め、MATLAB の関数floor
と同等です。[最も近い整数への丸め]
— このモードは、最も近い表現可能な数値に丸めますが、まったくの中間点の場合は正の無限大方向に丸めます。最も近い整数への丸めは、Fixed-Point Designer の関数nearest
と同等です。[整数への丸め]
— このモードは、最も近い表現可能な数値に丸めますが、正数の丸めで等距離の場合は正の無限大方向へ、負数の丸めで等距離の場合は負の無限大方向へ丸めます。このモードは、Fixed-Point Designer の関数round
と同等です。[最も簡潔]
- このモードでは、負方向への丸めとゼロ方向への丸めのいずれかを自動的に選択し、できるだけ効率の高い丸めコードを生成します。[ゼロ方向への丸め]
— このモードはゼロの方向に丸め、MATLAB の関数fix
と同等です。
これらの各丸めモードの詳細は、丸めを参照してください。
オーバーフローの処理
固定小数点操作でのオーバーフロー条件の処理方法を制御するには、[整数オーバーフローで飽和] チェック ボックスを使用します。
このチェック ボックスがオンの場合、オーバーフローはデータ型で表現される最大値または最小値に飽和します。たとえば、符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和することができます。
このボックスがオフの場合、オーバーフローはデータ型によって表現される適切な値にラップされます。たとえば、数 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。
出力データ型設定のロック
出力データ型が一般化固定小数点数の場合、[固定小数点ツールによる変更に対して出力データ型の設定をロックする] チェック ボックスをオンにすることにより、その出力データ型設定をロックできます。
ロックされた状態では、固定小数点ツールおよびオートスケーリング スクリプト autofixexp
は出力データ型設定を変更しません。ロックされていない場合は、固定小数点ツールと autofixexp
スクリプトは出力データ型設定を自由に調整できます。
実際値と整数格納値
[等価な値をもつ入力と出力] パラメーターを使用して信号を実際値として、または整数格納値として扱うように Data Type Conversion ブロックを設定することができます。
有効な値は、[実際値 (RWV)]
と [整数格納 (SI)]
です。
スケーリングで定義した変数については、実際値は "V" で指定され、整数格納値は "Q" で指定されます。出力として整数を生成するハードウェアのモデル化では、数値を整数格納値として扱うことをお勧めします。