Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Data Type Propagation

基準信号の情報に基づく伝播信号のデータ型とスケーリングの設定

  • Data Type Propagation block

ライブラリ:
Simulink / Signal Attributes
HDL Coder / Signal Attributes

説明

Data Type Propagation ブロックを使用すると、モデル内の信号のデータ型とスケーリングを制御できます。このブロックは、[出力データ型] パラメーターが [継承: 逆伝播による継承]に設定されている固定小数点ブロックと接続して使用することができます。

このブロックには 3 つの入力があります。Ref1Ref2 は基準入力であり、Prop 入力は基準入力から収集されたデータ型およびスケーリング情報を逆伝播します。この情報は他の固定小数点ブロックに渡されます。

このブロックを使用することにより、データ型およびスケーリング情報をさまざまな方法で伝播することができます。たとえば、以下を使用できます。

  • Ref1 基準信号のビット数または最も広い基準信号のビット数

  • Ref2 基準信号の範囲または最大の範囲をもつ基準信号の範囲

  • 基準信号が使用するバイアスに関係なく、ゼロのバイアス

  • 最小精度の基準信号の精度

データ型の情報を伝播する方法は、[伝播データ型] パラメーターを使用して指定します。

  • [Specify via dialog] を選択した場合は、[伝播データ型] 編集フィールドで手動でデータ型を指定します。

  • [Inherit via propagation rule] を選択した場合は、パラメーターで説明されているパラメーターを使用しなければなりません。

スケーリング情報を伝播する方法は、[伝播スケーリング] パラメーターを使用して指定します。

  • [Specify via dialog] を選択した場合は、[伝播スケーリング] 編集フィールドで手動でスケーリングを指定します。

  • [Inherit via propagation rule] を選択した場合は、パラメーターで説明されているパラメーターを使用しなければなりません。

基準信号からの情報を使用した後、データ型およびスケーリングに第 2 レベルの調整を適用することができます。これを行うには、個別の乗法調整と加法調整を使用します。この柔軟性には、さまざまな用途があります。たとえば、DSP をターゲットにする場合は、MAC (multiply and accumulate) 演算に関連するビット数が入力信号の 2 倍の幅になり、それに特定の数のガード ビットが追加されるようにブロックを構成できます。

Data Type Propagation ブロックは、計算されたビット数を強制的に有用な値にするメカニズムも備えています。たとえば 16 ビットマクロをターゲットにする場合は、ターゲットの C コンパイラは、おそらく 8 ビット、16 ビット、32 ビットのサイズのみをサポートします。ブロックはこの 3 つの選択項目が使用されるようにします。たとえば、ブロックが 24 ビットのデータ型を計算するとします。24 ビットはターゲット チップでは直接使用できないので、信号はネイティブでサポートされる 32 ビットに強制的に変換されます。

浮動小数点基準信号を扱う方法もあります。この方法を使用すると、固定小数点チップと浮動小数点チップの間でターゲットが容易に切り替わる設計が簡単になります。

Data Type Propagation ブロックを使用すると、接続された信号に基づいて正しく構成される便利なサブシステムのライブラリをセットアップできます。このデータ型の伝播プロセスがないと、ライブラリからのサブシステムが整数または固定小数点のほとんどの信号で想定どおりに機能しない可能性があります。その場合、データ型とスケーリングを手動で構成する必要が生じます。このブロックを使用すると、多くの状況で手動操作が不要になります。

優先順位ルール

ダイアログ ボックスのパラメーターの優先順位は、上から順に低くなります。さらに次のようになります。

  • 倍精度の基準入力は、他のすべてのデータ型に優先します。

  • 単精度の基準入力は、整数および固定小数点データ型に優先します。

  • 乗法調整は加法調整の前に行われます。

  • ビット数は、精度または正の範囲が基準入力から継承される前に決められます。

  • PosRange は、この信号の正の最大範囲より 1 ビット高くなります。

  • 計算されたビット数は、その計算値以上の最小の許容値にプロモートされます。存在しない場合は、ブロックからエラーが返されます。

すべて展開する

この例では、Data Type Propagation ブロックを使用して、Simulink モデルでデータ型を伝播する方法について説明します。

このモデルは、int8 および int64 データ型の 2 つの数値を加算します。モデル内のブロックは以下のパラメーターを使用します。

  • Inport ブロックのブロック パラメーターで、[信号属性] タブの最初の Inport の [データ型]int8 で、2 番目の Inport の [データ型]int64 です。

  • Add ブロックのブロック パラメーターで、[出力データ型]Inherit: Inherit via back propagation です。これにより、Data Type Propagation ブロックはブロックの出力データ型を定義できます。

  • Data Type Propagation ブロックのブロック パラメーターで、[伝播タイプ] タブの [伝播データ型]Inherit via propagation rule です。

  • Inport のデータ型を表示するには、[デバッグ][診断][情報のオーバーレイ][端子][基本データ型] を選択します。これは、和のデータ型が各種パラメーターの下でどのように変化するのかを示すために使用されます。

open_system('DataTypePropagation')

Data Type Propagation ブロックによる和のデータ型への影響を確認するには、ブロック パラメーターを変更します。

Data Type Propagation ブロックのブロック パラメーターで、[ビット数]max([NumBits1 NumBits2]) に設定します。Ctrl-D を押してコンパイルし、モデルを更新します。出力のデータ型が int64 (8 ビットと 64 ビットの最大ビット数) になっていることを確認します。

Data Type Propagation ブロックのブロック パラメーターで、[ビット数]NumBits1+NumBits2 に設定します。ブロック線図を再度更新します。出力データ型のサイズが 72 ビット (入力整数の長さの和) になっていることを確認します。

Data Type Propagation ブロックのブロック パラメーターで、[符号付き]FALSE に設定します。ブロック線図を再度更新します。出力のデータ型が ufix72 (符号なし 72 ビット整数) になっていることを確認します。

端子

入力

すべて展開する

データ型とスケーリングの情報を収集する 1 番目の基準信号。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

データ型とスケーリングの情報を収集する 2 番目の基準信号。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

モデルに逆伝播されるデータ型とスケーリングの情報。ブロックでデータ型とスケーリングの情報を基準信号から収集した後、データ型とスケーリングに第 2 レベルの調整を適用することができます。これを行うには、ブロック ダイアログ ボックスで個別の乗法調整と加法調整を指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

パラメーター

すべて展開する

伝播タイプ

ダイアログ ボックス経由でデータ型を伝播するか、基準信号からデータ型を継承するかを指定します。

依存関係

このパラメーターを [ダイアログにより指定] に設定すると、[1.1. 伝播のデータ型 (例: fixdt(1,16), fixdt('single'))] が有効になります。

プログラムでの使用

ブロック パラメーター: PropDataTypeMode
型: 文字ベクトル
値: 'Specify via dialog' | 'Inherit via propagation rule'
既定の設定: 'Inherit via propagation rule'

伝播するデータ型を指定します。

依存関係

このパラメーターを有効にするには、[1. 伝播データ型][ダイアログにより指定] に設定します。

プログラムでの使用

ブロック パラメーター: PropDataTypeMode
型: 文字ベクトル
値: 'Specify via dialog' | 'Inherit via propagation rule'
既定の設定: 'Inherit via propagation rule'

出力データ型を single または double として指定します。このパラメーターを使用すると、固定小数点チップと浮動小数点チップの間でターゲットが容易に切り替わる設計が簡単になります。

依存関係

このパラメーターを有効にするには、[伝播データ型][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: IfRefDouble
型: 文字ベクトル
値: 'double' | 'single'
既定の設定: 'double'

出力データ型を single または double として指定します。このパラメーターを使用すると、固定小数点チップと浮動小数点チップの間でターゲットが容易に切り替わる設計が簡単になります。

依存関係

このパラメーターを有効にするには、[伝播データ型][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: IfRefSingle
型: 文字ベクトル
値: 'double' | 'single'
既定の設定: 'single'

Prop の符号を次の値のいずれかとして指定します。

パラメーター値説明

IsSigned1

Ref1 が符号付きデータ型の場合、Prop は符号付きデータ型です。

IsSigned2

Ref2 が符号付きデータ型の場合、Prop は符号付きデータ型です。

IsSigned1 or IsSigned2

Ref1 または Ref2 のいずれかが符号付きデータ型の場合、Prop は符号付きデータ型です。

TRUE

Ref1Ref2 は無視され、Prop は常に符号付きデータ型です。

FALSE

Ref1Ref2 は無視され、Prop は常に符号なしデータ型です。

たとえば、Ref1 信号が ufix(16) であり、Ref2 信号が sfix(16) であり、[符号付き] パラメーターが [IsSigned1 or IsSigned2] の場合、Prop は符号付きデータ型になります。

依存関係

このパラメーターを有効にするには、[伝播データ型][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: IsSigned
型: 文字ベクトル
値: 'IsSigned1' | 'IsSigned2' | 'IsSigned1 or IsSigned2' | 'TRUE' | 'FALSE'
既定の設定: 'IsSigned1 or IsSigned2'

基本データ型について Prop が使用するビット数を次の値のいずれかとして指定します。

パラメーター値説明

NumBits1

Prop のビット数は Ref1 のビット数によって与えられます。

NumBits2

Prop のビット数は Ref2 のビット数によって与えられます。

max([NumBits1 NumBits2])

Prop のビット数は最大ビット数をもつ基準信号によって与えられます。

min([NumBits1 NumBits2])

Prop のビット数は最小ビット数をもつ基準信号によって与えられます。

NumBits1+NumBits2

Prop のビット数は基準信号のビット数の合計によって与えられます。

基本データ型の詳細については、組み込みプロセッサのターゲット (Fixed-Point Designer)を参照してください。

依存関係

このパラメーターを有効にするには、[伝播データ型][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: NumBitsBase
型: 文字ベクトル
値: 'NumBits1' | 'NumBits2' | 'max([NumBits1 NumBits2])' | 'min([NumBits1 NumBits2])' | 'NumBits1+NumBits2'
既定の設定: 'max([NumBits1 NumBits2])'

double データ型の乗法調整を含めることによって、Prop が使用するビット数を指定します。たとえば、MAC (multiply and accumulate) 演算に関連するビット数が入力信号の 2 倍の幅になることを保証するとします。これを行うには、このパラメーターを 2 に設定します。

依存関係

このパラメーターを有効にするには、[伝播データ型][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: NumBitsMult
型: 文字ベクトル
値: 正の整数
既定の設定: '1'

double データ型の加法調整を含めることによって、Prop が使用するビット数を指定します。たとえば MAC 演算時に複数回の加算を行う場合、結果がオーバーフローすることがあります。オーバーフローを防ぐために、伝播されたデータ型をもつガード ビットを関連付けることができます。4 つのガード ビットを関連付けるには、値 4 を指定します。

依存関係

このパラメーターを有効にするには、[伝播データ型][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: NumBitsAdd
型: 文字ベクトル
値: スカラー
既定の設定: '0'

Prop が使用する計算ビット数を有用な値にします。たとえば、8 ビット、16 ビット、32 ビットのみをサポートするプロセッサをターゲットとする場合は、このパラメーターを [8,16,32] に設定します。ブロックは常に指定された値内の最小値を伝播します。すべての固定小数点データ型を使用できるようにしたい場合は、値 [1:128] を指定します。

依存関係

このパラメーターを有効にするには、[伝播データ型][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: NumBitsAllowFinal
型: 文字ベクトル
値: 正の整数のスカラーまたはベクトル
既定の設定: '1:128'

伝播スケーリング

ダイアログ ボックス経由でスケーリングを伝播するか、基準信号からスケーリングを継承するか、最高精度を得るためにスケーリングを計算するかを選択します。

プログラムでの使用

ブロック パラメーター: PropScalingMode
型: 文字ベクトル
値: 伝播ルールにより継承 | ダイアログにより指定 | 最高精度により取得
既定の設定: 伝播ルールにより継承

勾配または勾配とバイアスのいずれかのスケーリングを指定します。

依存関係

このパラメーターを有効にするには、[伝播スケーリング][ダイアログにより指定] に設定します。

プログラムでの使用

ブロック パラメーター: PropScaling
型: 文字ベクトル
: Slope | [Slope Bias]
既定の設定: '2^-10'

伝播される入力の上限と下限など、精度を制約するための値を指定します。オーバーフロー エラーを起こさず、最小限の量子化誤差でこれらの値を表現できるように、データ型に基づいてブロックでスケーリングが選択されます。

依存関係

このパラメーターを有効にするには、[伝播スケーリング][最高精度により取得] に設定します。

プログラムでの使用

ブロック パラメーター: ValuesUsedBestPrec
型: 文字ベクトル
値: 値のベクトル
既定の設定: '[5 -7]'

基本データ型について Prop が使用する勾配を次の値のいずれかとして指定します。

パラメーター値説明

Slope1

Prop の勾配は Ref1 の勾配によって与えられます。

Slope2

Prop の勾配は Ref2 の勾配によって与えられます。

max([Slope1 Slope2])

Prop の勾配は基準信号の最大勾配によって与えられます。

min([Slope1 Slope2])

Prop の勾配は基準信号の最小勾配によって与えられます。

Slope1*Slope2

Prop の勾配は基準信号の勾配の積によって与えられます。

Slope1/Slope2

Prop の勾配は Ref1 の勾配と Ref2 の勾配の比によって与えられます。

PosRange1

Prop の範囲は Ref1 の範囲によって与えられます。

PosRange2

Prop の範囲は Ref2 の範囲によって与えられます。

max([PosRange1 PosRange2])

Prop の範囲は基準信号の最大範囲によって与えられます。

min([PosRange1 PosRange2])

Prop の範囲は基準信号の最小範囲によって与えられます。

PosRange1*PosRange2

Prop の範囲は基準信号の範囲の積によって与えられます。

PosRange1/PosRange2

Prop の範囲は Ref1 の範囲と Ref2 の範囲の比によって与えられます。

Prop の精度は Slope1Slope2 によって制御し、Prop の範囲は PosRange1PosRange2 によって制御します。また、PosRange1PosRange2 は、関連付けられた基準信号の正の最大範囲より 1 ビット高くなります。

依存関係

このパラメーターを有効にするには、[伝播スケーリング][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: SlopeBase
型: 文字ベクトル
値: 'Slope1' | 'Slope2' | 'max([Slope1 Slope2])' | 'min([Slope1 Slope2])' | 'Slope1*Slope2' | 'Slope1/Slope2' | 'PosRange1' | 'PosRange2' | 'max([PosRange1 PosRange2])' | 'min([PosRange1 PosRange2])' | 'PosRange1*PosRange2' | 'PosRange1/PosRange2'
既定の設定: 'min([Slope1 Slope2])'

double データ型の乗法調整を含めることによって、Prop が使用する勾配を指定します。たとえば、3 ビットの追加精度を使用したい場合 (その分だけ、範囲を減少)、乗法調整は 2^-3 です。

依存関係

このパラメーターを有効にするには、[伝播スケーリング][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: SlopeMult
型: 文字ベクトル
値: スカラー
既定の設定: '1'

double データ型の加法調整を含めることによって、Prop が使用する勾配を指定します。多くの場合、勾配の加法調整は不要です。最も多い用途は、乗法調整を 0 に設定して、最終的な勾配が指定された値になるように加法調整を設定することです。

依存関係

このパラメーターを有効にするには、[伝播スケーリング][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: SlopeAdd
型: 文字ベクトル
値: スカラー
既定の設定: '0'

基本データ型について Prop が使用するバイアスを指定します。パラメーター値は以下になります。

パラメーター値説明

Bias1

Prop のバイアスは Ref1 のバイアスによって与えられます。

Bias2

Prop のバイアスは Ref2 のバイアスによって与えられます。

max([Bias1 Bias2])

Prop のバイアスは基準信号の最大バイアスによって与えられます。

min([Bias1 Bias2])

Prop のバイアスは基準信号の最小バイアスによって与えられます。

Bias1*Bias2

Prop のバイアスは基準信号のバイアスの積によって与えられます。

Bias1/Bias2

Prop のバイアスは Ref1 のバイアスと Ref2 のバイアスの比によって与えられます。

Bias1+Bias2

Prop のバイアスは基準信号のバイアスの和によって与えられます。

Bias1-Bias2

Prop のバイアスは基準信号のバイアスの差によって与えられます。

依存関係

このパラメーターを有効にするには、[伝播スケーリング][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: BiasBase
型: 文字ベクトル
値: 'Bias1' | 'Bias2' | 'max([Bias1 Bias2])' | 'min([Bias1 Bias2])' | 'Bias1*Bias2' | 'Bias1/Bias2' | 'Bias1+Bias2' | 'Bias1-Bias2'
既定の設定: 'Bias1'

double データ型の乗算の調整を含めることによって、Prop が使用するバイアスを指定します。

このパラメーターは、[伝播スケーリング][伝播ルールにより継承] に設定した場合にのみ表示されます。

プログラムでの使用

ブロック パラメーター: BiasMult
型: 文字ベクトル
値: スカラー
既定の設定: '1'

double データ型の加法調整を含めることによって、Prop が使用するバイアスを指定します。

Prop に関連付けられるバイアスを 0 にする場合は、乗法調整と加法調整の両方を 0 に設定します。

依存関係

このパラメーターを有効にするには、[伝播スケーリング][伝播ルールにより継承] に設定します。

プログラムでの使用

ブロック パラメーター: BiasAdd
型: 文字ベクトル
値: スカラー
既定の設定: '0'

ブロックの特性

データ型

Boolean | double | fixed point | half | integer | single

直達

いいえ

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

いいえ

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

バージョン履歴

R2006a より前に導入