ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Data Type Conversion

入力信号を指定されたデータ型へ変換

ライブラリ

Signal Attributes

説明

Data Type Conversion ブロックは、任意の Simulink® データ型の入力信号を、ブロックの [出力データ型] パラメーターに指定されたデータ型に変換します。入力は実数信号または複素数信号を受け入れます。入力が実数の場合は出力も実数になり、入力が複素数の場合は出力も複素数です。

    メモ:   このブロックでは、変換するデータ型とスケーリングを指定する必要があります。データ型またはスケーリングを入力信号から継承する場合は、Data Type Conversion Inherited ブロックを使用してください。

[等価な値をもつ入力と出力] パラメーターは、固定小数点データ表現のコンテキストにおいてブロックが入力を処理する方法を制御します。詳細は、「固定小数点数」を参照してください。

  • [実際値 (RWV)] を選択すると、入力は V = SQ + B として扱われます。ここで、S は勾配 (slope)、B はバイアス (bias) です。V は、Q = (V – B)/S を生成するために使用されます。これは出力に格納されます。

  • [整数格納 (SI)] を選択すると、入力は格納された整数 Q として扱われます。Q の値が直接使用され、出力が生成されます。このモードでは、入力と出力は同じですが、入力は適切なスケーリング情報をもたない生の整数信号です。次のような場合には、[Stored Integer] を選択すると便利かもしれません。

    • 固定小数点プロセッサ用のコードの生成

      結果として得られるコードでは、整数だけを使用し、浮動小数点演算は使用されません。

    • ハードウェア特性に基づくモデルの分割

      たとえば、モデルの一部が整数を出力するハードウェアのシミュレーションに関与している可能性がある場合です。

固定小数点数のスケーリングについての詳細は、「スケーリング」 を参照してください。

列挙型信号のキャスト

Data Type Conversion ブロックを使用して、以下のように列挙型信号をキャストします。

  1. 列挙型の信号を任意の数値型の信号にキャストする

    Data Type Conversion ブロックに対するすべての列挙値の元となる整数は、数値型の範囲内でなければなりません。範囲外の場合、シミュレーション エラーが発生します。

  2. 整数型の信号を列挙型の信号にキャストする

    Data Type Conversion ブロックに入力される値は、列挙値の元となる値に一致させなければなりません。一致しない場合、シミュレーション エラーが発生します。

    ブロックへの入力値が列挙値の元となる値に一致しない場合は、ブロックの [整数オーバーフローで飽和] パラメーターを有効にして Simulink が列挙型の既定値を使えるようにできます。「列挙値の型キャスト」を参照してください。

以下の場合には Data Type Conversion ブロックを使用できません。

  • 整数ではない数値信号を列挙型信号にキャストする

  • 複素数信号を列挙型信号にキャストする (実数部および虚数部のデータ型は任意)

列挙型の操作の詳細は、「Simulink 列挙値について」を参照してください。

サポートするデータ型

Data Type Conversion ブロックは、Simulink がサポートする任意のデータ型 (固定小数点データ型や列挙型データなど) を処理します。

詳細は、Simulink ドキュメンテーションの「 Simulink でサポートされているデータ型」を参照してください。

パラメーターとダイアログ ボックス

データ型アシスタントを表示

[データ型アシスタント] を表示します。

設定

[データ型アシスタント] を使用すると、[出力データ型] パラメーターを設定できます。

詳細は、「ブロックの出力データ型の指定」を参照してください。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

固定小数点ツールによる変更に対して出力データ型の設定をロックする

固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックの出力データ型の設定をロックします。

設定

既定の設定: [オフ]

[オン]

このブロックの出力データ型設定をロックします。

[オフ]

固定小数点ツールや固定小数点アドバイザーがこのブロックの出力データ型の設定を変更できます。

コマンド ライン情報

コマンド ライン情報は、「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「[出力データ型の設定をロックする] の使用」を参照してください。

等価な値をもつ入力と出力

固定小数点データ表現のコンテキストにおいて、どの入出力型を等価にするのかを指定します。

設定

既定の設定: [実際値 (RWV)]

[実際値 (RWV)]

入力の [実際値 (RWV)] を出力の [実際値 (RWV)] と等価にすることを指定します。

[整数格納 (SI)]

入力の [整数格納 (SI)] の値を出力の [整数格納 (SI)] の値と等価にすることを指定します。

コマンド ライン情報

ブロック固有のパラメーター」を参照してください。

整数丸めモード

固定小数点演算の丸めモードを指定します。

設定

既定の設定: [負方向の丸め]

[正方向の丸め]

正の無限大方向に正負の値を丸めます。MATLAB® 関数 ceil と等価です。

[最も近い偶数への丸め]

最近傍で表現できる値に数値を丸めます。同順位が発生した場合は、最も近い偶数の整数に丸めます。Fixed-Point Designer™ 関数 convergent と等価です。

[負方向の丸め]

負の無限大方向に正負の値を丸めます。MATLAB 関数 floor と等価です。

[最も近い整数への丸め]

最近傍で表現できる値に数値を丸めます。同順位が発生した場合は、正の無限大方向に丸めます。Fixed-Point Designer 関数 nearest と等価です。

[最も近い整数への丸め]

最近傍で表現できる値に数値を丸めます。同順位が発生した場合は、正の数値を正の無限大方向、負の数値を負の無限大方向に丸めます。Fixed-Point Designer 関数 round と等価です。

[シンプルな丸め]

下限値への丸めとゼロへの丸めのいずれかを自動的に選択し、できるだけ効率の高い丸めコードを生成します。

0

ゼロ方向に数値を丸めます。MATLAB 関数 fix と等価です。

コマンド ライン情報

コマンド ライン情報は、「ブロック固有のパラメーター」を参照してください。

参考

詳細は、Fixed-Point Designer ドキュメンテーション「丸め」を参照してください。

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

オーバーフローで飽和するかどうかを指定します。

設定

既定の設定: [オフ]

オン

オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。

たとえば、符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和することができます。

オフ

オーバーフローは、データ型によって表現される適切な値にラップされます。

たとえば、数 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。

ヒント

  • モデルでオーバーフローが発生する可能性があり、生成コードに飽和保護を明示的に組み込む必要があるときには、このチェック ボックスをオンにすることを検討してください。

  • 生成コードの効率を最適化する場合には、このチェック ボックスをオフにすることを検討してください。

    このチェック ボックスをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細は、「信号範囲のエラーのチェック」を参照してください。

  • このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。

  • 通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

サンプル時間 (継承は -1)

サンプル時間の離散間隔を入力します。あるいは、連続または継承などの他の適切なサンプル時間を指定します。

設定

既定の設定: -1

既定の設定では、ブロックはモデル内の前後関係に基づいてサンプル時間を継承します。他のサンプル時間を設定するには、「サンプル時間のタイプ」の表に基づいて有効なサンプル時間を入力します。

詳細は、オンライン ドキュメンテーションの「 サンプル時間の指定」を参照してください。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

出力の最小値

Simulink がチェックする出力範囲の下限値。

設定

既定の設定: [] (指定なし)

有限で実数の double のスカラー値としてこの値を指定します。

    メモ:   このブロックのデータ型としてバス オブジェクトを指定した場合、ブロックのバス データの最小値を設定しないでください。Simulink によりこの設定は無視されます。代わりに、データ型として指定したバス オブジェクトのバス要素の最小値を設定してください。バス要素の最小値パラメーターの詳細は、Simulink.BusElement を参照してください。

Simulink は、最小値を使って以下を行います。

    メモ:   [出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。 代わりに、Saturation ブロックを使用してください。

コマンド ライン情報

コマンド ライン情報は、「ブロック固有のパラメーター」を参照してください。

出力の最大値

Simulink がチェックする出力範囲の上限値。

設定

既定の設定: [] (指定なし)

有限で実数の double のスカラー値としてこの値を指定します。

    メモ:   このブロックのデータ型としてバス オブジェクトを指定した場合、ブロックのバス データの最大値を設定しないでください。Simulink によりこの設定は無視されます。代わりに、データ型として指定したバス オブジェクトのバス要素の最大値を設定します。バス要素の最大値パラメーターの詳細は、Simulink.BusElement を参照してください。

Simulink は、最大値を使って以下を行います。

    メモ:   [出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。 代わりに、Saturation ブロックを使用してください。

コマンド ライン情報

コマンド ライン情報は、「ブロック固有のパラメーター」を参照してください。

出力データ型

出力データ型を指定します。

設定

既定の設定: [継承: 逆伝播による継承]

[継承: 逆伝播による継承]

駆動ブロックのデータ型を使用します。

[double]

出力データ型は double です。

[single]

出力データ型は single です。

[int8]

出力データ型は int8 です。

[uint8]

出力データ型は uint8 です。

[int16]

出力データ型は int16 です。

[uint16]

出力データ型は uint16 です。

[int32]

出力データ型は int32 です。

[uint32]

出力データ型は uint32 です。

[boolean]

出力データ型は boolean です。Data Type Conversion ブロックは、非ゼロの数値 (NaN および Inf を含む) を booleantrue (1) に変換します。

[fixdt(1,16,0)]

出力データ型は固定小数点 fixdt(1,16,0) です。

[fixdt(1,16,2^0,0)]

出力データ型は固定小数点 fixdt(1,16,2^0,0) です。

[Enum:<class name>]

列挙型データを使用します。たとえば、Enum: BasicColors などです。

[<data type expression>]

データ型オブジェクトを使用します。たとえば、Simulink.NumericType などです。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「ブロックの出力データ型の指定」を参照してください。

モード

指定するデータのカテゴリを選択します。

設定

既定の設定: [継承]

[継承]

データ型の規則の継承。[継承] を選択すると、[逆伝播による継承] が有効になります。

[組み込み]

組み込みのデータ型。[組み込み] を選択すると、右側にある 2 番目のメニュー/テキスト ボックスが有効になります。次の選択肢からいずれかを選択します。

  • double (既定)

  • single

  • int8

  • uint8

  • int16

  • uint16

  • int32

  • uint32

  • boolean

固定小数点

固定小数点データ型。

列挙型

列挙型データ。[列挙型] を選択すると、右側から 2 番目のメニュー/テキスト ボックスが有効になります。そこにクラス名を入力することができます。

データ型を評価する式。[] を選択すると、右側から 2 番目のメニュー/テキスト ボックスが有効になります。そこに式を入力することができます。

依存関係

[データ型アシスタントを表示] ボタンをクリックすると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

「データ型アシスタントを利用したデータ型の指定」を参照してください。

データ型のオーバーライド

この信号のデータ型オーバーライド モードを指定します。

設定

既定の設定: [継承]

[継承]

コンテキストからデータ型オーバーライド設定を継承します。コンテキストとはブロックのことで、信号を使用している Simulink の Simulink.Signal オブジェクトまたは Stateflow® チャートです。

[オフ]

コンテキストのデータ型オーバーライド設定を無視し、信号に対して指定された固定小数点データ型を使用します。

ヒント

個々のデータ型に対してデータ型オーバーライドをオフにする機能により、データ型オーバーライドを適用する際に、モデル内のデータ型をさらに効果的に制御できます。たとえば、このオプションを使用すると、データ型オーバーライド設定にかかわらず、データ型が下流ブロックの要件を満たすことを確認できます。

依存関係

このパラメーターは、[モード][組み込み] または [固定小数点] の場合にのみ表示されます。

符号付き/なし

固定小数点データを符号付きにするか、符号なしにするかを指定します。

設定

既定の設定: [符号付き]

[符号付き]

符号付き固定小数点データを指定します。

[符号なし]

符号なし固定小数点データを指定します。

依存関係

[モード][固定小数点] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

語長

量子化された整数をもつ語のビット サイズを指定します。

設定

既定の設定: 16

最小値: 0

最大値: 32

依存関係

[モード][固定小数点] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

スケーリング

オーバーフローを避け、量子化誤差を最小限に抑えるための固定小数点データのスケーリング方法を指定します。

設定

既定の設定: 最高精度

2 進小数点

2 進小数点の位置を指定します。

勾配とバイアス

勾配とバイアスを入力します。

最高精度

最高精度値を指定します。

依存関係

[モード][固定小数点] を選択すると、このパラメーターが有効になります。

[2 進小数点] を選択すると、以下が有効になります。

  • 小数部の長さ

  • 最高精度のスケーリングを計算

[勾配とバイアス] を選択すると、以下が有効になります。

  • 勾配

  • バイアス

  • 最高精度のスケーリングを計算

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

小数部の長さ

固定小数点データ型の小数部の長さを指定します。

設定

既定の設定: 0

2 進小数点には、正の整数または負の整数を入力できます。

依存関係

[スケーリング][2 進小数点] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

勾配

固定小数点データ型の勾配を指定します。

設定

既定の設定: 2^0

任意の正の実数を指定します。

依存関係

[スケーリング][勾配とバイアス] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

バイアス

固定小数点データ型のバイアスを指定します。

設定

既定の設定: 0

任意の実数を指定します。

依存関係

[スケーリング][勾配とバイアス] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

実際値と格納された整数

次のモデルモデルでは、Data Type Conversion ブロックを使用して、実際値と格納された整数との違いを説明します。次の 2 つの固定小数点ブロック線図を考慮します。

上のブロック線図では、Data Type Conversion ブロックは入力を実際値として扱い、その値を 2-2 のスケーリングで 8 ビット符号付きの一般的な固定小数点データ型にマップします (すなわち、勾配 = 2-2、バイアス = 0 の 2 進小数点スケーリングを行います) 。Data Type Conversion1 ブロックから値が実際値として出力されるとき、スケーリングおよびデータ型情報が保持され、出力値は 001111.00、すなわち 15 になります。値が Data Type Conversion2 ブロックから格納された整数として出力されるときにはスケーリングおよびデータ型情報は保持されず、格納された整数は 00111100、すなわち 60 として解釈されます。

下のブロック線図では、Data Type Conversion3 ブロックは、入力を格納された整数として扱い、データ型およびスケーリング情報は適用されません。Data Type Conversion4 ブロックから値が実際値として出力される場合、スケーリングおよびデータ型情報が格納された整数に適用されて (勾配 = 2-2、バイアス = 0)、出力値は 000011.11、すなわち 3.75 になります。値が Data Type Conversion5 ブロックから格納された整数として出力されるときには、元の入力値 15 に戻ります。

総和での実際値と格納された整数

次のモデルモデルは、総和演算が実際値と格納された整数に適用される方法、および生成コードでスケーリング情報が扱われる方法を示しています。

Data Type Conversion (2または5) ブロックが実際値を出力する場合、総和演算は正しい結果を出すことに注目してください。これは、指定されたスケーリング情報が格納された整数値に適用されるためです。しかし、Data Type Conversion4 ブロックが格納された整数値を出力するときには、スケーリング情報の欠如により、総和演算は予期しない結果をもたらします。

上記のモデルのコードを生成した場合、コードは適切なスケーリング情報を保存します。Sum ブロックのコードを以下に示します。このブロックへの入力には指定されたスケーリング情報がタグ付けされているので、総和演算に対して必要なシフトが行われます。

/* Sum Block: <Root>/Sum
   *
   *  y =  u0 + u1
   *
   * Input0  Data Type:  Fixed Point    S16  2^-2
   * Input1  Data Type:  Fixed Point    S16  2^-4
   * Output0 Data Type:  Fixed Point    S16  2^-5
   *
   * Round Mode: Floor
   * Saturation Mode: Wrap
   *
   */
  sum = ((in1) << 3);
  sum += ((in2) << 1);

特性

直接フィードスルー

あり

サンプル時間

駆動ブロックから継承

スカラー拡張

N/A

離散化

あり

多次元化

あり

ゼロクロッシング検出

なし

この情報は役に立ちましたか?