オーバーフロー モード - 2021.2 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2021-10-22
Version
2021.2 日本語

整数のオーバーフローでの飽和

Model Composer では、信号上の整数データ値のオーバーフロー検出がサポートされています。前述のように、デフォルトのオーバーフロー メカニズムは折り返し ([Wrap on Overflow]) です。標準 Simulink ライブラリおよび HLS ライブラリの一部のブロックには、Saturate on integer overflow という整数のオーバーフローで飽和させるオプションがあり、[Block Parameters] ダイアログ ボックスでこれをオンにできます。このパラメーターは、出力が整数 (int8、int16、int32、uint8、uint16、uint32) の場合にのみ適用されます。ブロックに特定の情報は、Model Composer ブロック ライブラリを参照してください。

図 1. [Saturate on integer overflow] オプション

[Saturate on integer overflow] をオンにすると、入力値が出力でサポートされる値の範囲外である場合に、値が最大値または最小値で飽和することを意味します。値は飽和したら、変更されません。

固定小数点のオーバーフロー モード

固定小数点データ型の場合、たとえば DTC (Data Type Conversion) ブロックでサポートされるように、オーバーフロー モードが [Saturate on integer overflow] オプションよりも詳細に制御できます。

図 2. 固定小数点のオーバーフロー

それぞれの固定小数点オーバーフロー モードの詳細は、次を参照してください。

表 1. 固定小数点のオーバーフロー モード
モード 説明 グラフ
Saturation 入力値が出力のデータ型でオーバーフローする場合、出力値がその最小値または最大値で飽和に達すると、それ以上変更されません。
Saturation to Zero 入力値が出力のデータ型でオーバーフローする場合、出力値がその最小値または最大値で飽和に達すると 0 に戻ります。
Symmetrical Saturation [Saturation to Zero] と同じですが、最小値と最大値が対称 (値は反対でサイズが同じ) である点が違います。
Wrap around 入力値が出力のデータ型の範囲外になると、出力値は最大値から最小値に折り返されるか、最小値から最大値に折り返され、範囲内で循環します。
Sign-Magnitude Wrap Around 入力値が出力のデータ型の範囲を超えると、出力値が最大値に達すると値が減少し始めて、最小値に戻ります。アンダーフローの場合は、最小値に達すると値が増加し始め、最大値に戻ります。