このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
固定小数点がサポートされるツールボックスブロックでは,通常ブロックパラメーターを使用して固定小数点の特性を指定できます。これらの固定小数点パラメーターにデータ型とスケーリング情報を指定することにより,ターゲットハードウェアをより正確にシミュレートできます。
メモ
浮動小数点継承は,この節で説明されている設定より優先されます。ブロックに浮動小数点入力がある場合、すべてのブロック データ型は入力にマッチします。
大半の固定小数点パラメーターは,ツールボックスブロックの[データ型)ペインに表示されます。次の図は一般的な[データ型)ペインです。
固定小数点機能をもつすべてのツールボックスブロックが一連の一般的なパラメーターを共有していますが,各ブロックがこれらの固定小数点パラメーターの異なるサブセットをもつ場合もあります。次の表に,最も一般的な固定小数点ブロックパラメーターの概要を示します。
固定小数点データ型のパラメーター | 説明 |
---|---|
丸めモード |
指定のデータ型とスケーリングで固定小数点演算の結果を正確に表現できない場合に使用する,ブロックの丸めモードを指定します。 使用可能なオプションについての詳細は,丸めモードを参照してください。 |
整数オーバーフローで飽和 |
このパラメーターをオンにすると,ブロックは固定小数点演算の結果を飽和させます。このパラメーターをオフにすると,ブロックは固定小数点演算の結果をラップします。 飽和およびラップの詳細については,固定小数点演算のオーバーフローの処理を参照してください。 |
中間の乗算器 |
固定小数点ブロックの中間の乗算器データ型とスケーリングを指定します。乗算の結果を乗算器の入力に戻すブロックは,中間の乗算器データ型を使用します。 特定のブロックの中間の乗算器データ型については,そのブロックのリファレンスページを参照してください。 |
乗算器出力 |
乗算結果の計算が必要とされる固定小数点ブロックの,乗算器出力のデータ型とスケーリングを指定します。 特定のブロックの乗算器出力データ型については,そのブロックのリファレンスページを参照してください。複素数と複素数の乗算の場合,乗算の結果はアキュムレータのデータ型になります。ツールボックスソフトウェアにおける複素数の固定小数点乗算の詳細については,乗算のデータ型を参照してください。 |
アキュムレータ |
その後の計算用に加算結果を保持しなければならない固定小数点ブロックの,アキュムレータ(加算器)のデータ型とスケーリングを指定します。通常の場合,そのようなブロックは加算演算(総和)を行う前に,アキュムレータのデータ型へのキャストを行います。 特定のブロックのアキュムレータのデータ型についての詳細は,そのブロックのリファレンスページを参照してください。 |
出力 |
ブロックの出力データ型とスケーリングを指定します。 |
[データ型アシスタント]は,一部の固定小数点ツールボックスブロックの[データ型)ペインで使用できる対話型のグラフィカルツールです。
ブロックのデータ型パラメーターの指定を簡易化できる[データ型アシスタント]の使用の詳細については,データ型アシスタントを利用したデータ型の指定(金宝app模型)を参照してください。
一部の固定小数点ツールボックスブロックでは,[データ型)ペインに[最小]パラメーターと[最大]パラメーターがあります。固定小数点データ型にこれらのパラメーターがある場合、範囲確認の目的で適切な最小値と最大値を指定することができます。
信号範囲の指定および信号範囲の確認を有効にする方法の詳細については,信号範囲の指定(金宝app模型)を参照してください。
固定小数点ツールを使用して,ツールボックスブロックの固定小数点の設定をシステムレベルまたはサブシステムレベルで監視したり,制御したりできます。詳細については,固定小数点ツール(定点设计师)を参照してください。
固定小数点ツールは,固定小数点ツールボックスブロックで発生したオーバーフロー,飽和,シミュレーションの最小値と最大値についてのログを記録します。[コンフィギュレーションパラメーター]ダイアログボックスの[診断]、[データの整合性)ペインで数据溢出
行が[なし]
に設定されている場合,固定小数点ツールはログにオーバーフローと飽和を記録しません。
固定小数点ツールのオートスケーリング機能を使用して,ツールボックスの固定小数点データ型のスケーリングを設定できます。
ツールボックスのブロックは,固定小数点ツールの[データ型オーバーライド]パラメーターの[ローカル設定を利用)
、(双)
、(单)
および[オフ]
のモードに従います。[スケーリングされた双)
モードは,ツールボックスのソースブロックとバイト入れ替えを行うブロック,区别や正常化などの一部の算術演算ブロックでもサポートされます。
スケーリングされた双は,固定小数点のスケーリング情報を保持する双データ型です。データ型オーバーライドを使用して,固定小数点データ型を,スケーリングされた双に変換できます。その後,シミュレーションを行い,システムの理想的な浮動小数点動作を決定することができます。その情報を収集した後,データ型オーバーライドをオフにして固定小数点データ型に戻すことができます。元のスケーリング情報は,スケーリングされた双データ型で保持されたため,データにはこの情報が残っています。
モデル内の固定小数点パラメーターに適した語長とスケーリングの選択判断が難しいこともあります。選択を支援するため,[アキュムレータ]および[乗算器出力]信号など固定小数点ブロックのデータ型パラメーターの多くで(内部ルールによる継承)
オプションを使用できます。以下の節では,ツールボックスソフトウェアで固定小数点ブロックのデータ型パラメーターに(内部ルールによる継承)
を選択した場合に,語長と小数部の長さがどのように選択されるかについて説明します。
メモ
以下の節にある方程式では,西城が語長を,FLが小数部の長さを示します。
アキュムレータのデータ型の内部ルールは,まず理想的な完全精度の結果を計算します。ここでNは加数の数です。
たとえば,長さが6データ型がsfix10_En8のベクトルの全要素を総和する場合を考えてみます。理想的な完全精度の結果は語長が13で小数部の長さは8になります。
アキュムレータは,実数または複素数です。前の方程式は,アキュムレータの実数部と虚数部の両方に使用されます。すべての計算において、完全精度の結果が計算された後、内部ルールで最終的に設定される語長と小数部の長さが、実際のハードウェアの影響を受ける場合があります。詳細は、[ハードウェア実行]ペインが内部ルールに及ぼす影響を参照してください。
乗算器データ型の内部ルールは,まず理想的な完全精度の結果を計算します。
たとえば,長さが2,データ型がsfix10_En8の実数ベクトルの要素を乗算する場合を考えてみます。理想的な完全精度の結果は語長が20で小数部の長さは16になります。
実数と複素数の乗算では,結果の実数部と虚数部の両方に,理想的な語長と小数部の長さが使用されます。複素数と複素数の乗算の場合,部分的な乗算器には理想的な語長と小数部の長さが使用され,最終的な加算器には上述のアキュムレータのデータ型の内部ルールが使用されます。すべての計算において,完全精度の結果が計算された後,内部ルールで最終的に設定される語長と小数部の長さが,実際のハードウェアの影響を受ける場合があります。詳細は,[ハードウェア実行]ペインが内部ルールに及ぼす影響を参照してください。
ブロック出力における(内部ルールによる継承)
オプションは,いくつかのツールボックスブロックで使用できます。これらの状況で使用される内部ルールはブロックに固有のもので,方程式はブロックのリファレンスページに一覧表示されています。
アキュムレータや乗算器のデータ型の場合と同様に,内部ルールで設定される最終出力の語長と小数部の長さは,特定のハードウェアによる影響を受けます。詳細は,[ハードウェア実行]ペインが内部ルールに及ぼす影響を参照してください。
内部ルールによって,使用しているハードウェアに適した語長と小数部の長さが選択されます。内部ルールを使用して最良の結果を得るには,[コンフィギュレーションパラメーター]ダイアログボックスの[ハードウェア実行)ペインで使用するハードウェアのタイプを指定しなければなりません。このダイアログボックスを開くには,仿金宝app真软件®ツールストリップで[モデル化)、[モデル設定)をクリックします。
ASIC / FPGA -ASIC / FPGAターゲットの場合,内部ルールにより計算された理想的な完全精度の語長と小数部の長さが使用されます。計算結果の理想的な語長が,許可されている最大語長より大きい場合,エラーが表示されます。
その他のターゲット-ASIC / FPGA以外のすべてのターゲットについては,内部ルールにより計算された理想的な完全精度の語長が,ターゲットの次に使用可能な語長に丸められます。計算された理想的な小数部の長さが使用され,最下位ビットが保持されます。
乗算器データ型の計算された理想的な語長が,ターゲットの最大語長より大きい場合,エラーが表示されます。アキュムレータまたは出力のデータ型の計算された理想的な語長が、ターゲットの最大語長より大きい場合、最大のターゲット語長が使用されます。
どのターゲットでも仿金宝app真软件およびツールボックスソフトウェアで許可される最大語長は128ビットです。
以下の節では,内部ルールが[ハードウェア実行)ペインとどのように連携してアキュムレータのデータ型および乗算器データ型を計算するかの例を示します。
アキュムレータのデータ型-以下のモデルex_internalRule_accumExpを考えます。
区别(DSP系统工具箱)ブロックでは,[アキュムレータ]パラメーターが[继承:通过内部规则继承]
に設定され,[出力]パラメーターが[继承:与accumulator相同]
に設定されています。したがって,内部ルールにより計算されたアキュムレータのデータ型が,モデルの出力信号に表示されます。
前のモデルでは[コンフィギュレーションパラメーター]ダイアログボックスにある[ハードウェア実行)ペインの[デバイスタイプ]パラメーターが(ASIC / FPGA)
に設定されています。したがって,内部ルールで使用されるアキュムレータのデータ型は,理想的な完全精度の結果になります。
モデル内の各不同ブロックについて完全精度の語長を計算します。
完全精度の小数部の長さを計算します。この例ではすべての矩阵求和ブロックで同じ長さです。
次に[コンフィギュレーションパラメーター]ダイアログボックスにある[ハードウェア実行)ペインの[デバイスタイプ]パラメーターを,(32位嵌入式处理器)
に設定します。次の図に示すように各パラメーターを変更してください。
ダイアログボックスからわかるように,このデバイスでは8,16および32ビットの語長を使用できます。したがって,内部ルールで計算された理想的な語長である10、17および128ビットは使用できません。内部ルールは,代わりに次に使用できる最大語長を各ケースで使用します。このことは,次の図のようにモデルに戻ると確認できます。
乗算器データ型-以下のモデルex_internalRule_prodExpを考えます。
数组向量相乘(DSP系统工具箱)ブロックでは,[乗算出力]パラメーターが[继承:通过内部规则继承]
に設定され,[出力]パラメーターが[继承:与产品输出相同]
に設定されています。したがって,内部ルールにより計算された乗算器出力データ型が,モデルの出力信号に表示されます。この例では実数値を使用するため,[アキュムレータ]パラメーターの設定は重要ではありません。
前のモデルでは[コンフィギュレーションパラメーター]ダイアログボックスにある[ハードウェア実行)ペインの[デバイスタイプ]パラメーターが(ASIC / FPGA)
に設定されています。したがって,内部ルールで使用される乗算器データ型は,理想的な完全精度の結果になります。
モデル内の各数组向量乘以ブロックについて完全精度の語長を計算します。
完全精度の小数部の長さを計算します。この例ではすべての数组向量乘以ブロックで同じ長さです。
次に[コンフィギュレーションパラメーター]ダイアログボックスにある[ハードウェア実行)ペインの[デバイスタイプ]パラメーターを,次の図に示すように(32位嵌入式处理器)
に設定します。
ダイアログボックスからわかるように,このデバイスでは8,16および32ビットの語長を使用できます。したがって,内部ルールで計算された理想的な語長である12および31ビットは使用できません。内部ルールは,代わりに次に使用できる最大語長を各ケースで使用します。このことは,次の図のようにモデルに戻ると確認できます。
以下の節では,固定小数点ツールを使用してex_fixedpoint_tut
モデルの固定小数点ブロックに適切なデータ型を選択する方法を説明します。
モデルを開くにはMATLAB®コマンドラインでex_fixedpoint_tutと入力します。
このモデルは累计总和ブロックを使用して,定点来源サブシステムから受け取った入力の和を求めます。定点来源サブシステムは,データ型の異なる2つの信号を出力します。
签署ソースの語長は16ビット,小数部の長さは15ビットです。
无符号ソースの語長は16ビット,小数部の長さは16ビットです。
モデルを実行してオーバーフローが起きていないか確認します。MATLABのコマンドラインに次の警告が表示されます。
警告:发生溢出。这源于'ex_fixedpoint_tut/Signed Cumulative Sum'。警告:发生溢出。这源于'ex_fixedpoint_tut/Unsigned Cumulative Sum'。
これらの警告によると,両方の累计总和ブロックでオーバーフローが発生しています。
このモデルのオーバーフローについて調査するには,固定小数点ツールを使用します。固定小数点ツールを開くには,モデルのメニューから[ツール]、[固定小数点]、(固定小数点ツール]を選択します。(固定小数点の計測機能モード]パラメーターを(最小値,最大値およびオーバーフロー]
に設定して,モデルのすべてのブロックでログ機能をオンにします。
ログ機能をオンにしたら,シミュレーションボタンをクリックしてモデルに戻ります。
シミュレーションの結果が固定小数点ツールの中央にある[コンテンツ]ペインに表として表示されます。以下の列を確認してください。
名前——各信号の名前。子系统名称/块名称:信号名称
の形式で表示されます。
SimDT——ログに記録される各信号のシミュレーションデータ型。
SpecifiedDT——各信号のブロックダイアログで指定されたデータ型。
シミュレーションの最小値——ログに記録される各信号のシミュレーション中に得られた表現可能な最小値。
シミュレーションの最大値——ログに記録される各信号のシミュレーション中に得られた表現可能な最大値。
OverflowWraps——シミュレーション中にラップするオーバーフロー数。
アキュムレータのデータ型の[シミュレーションの最小値)と[シミュレーションの最大値)の値が0
~.9997
の範囲にあることもわかります。ログの結果には,签署累积求和ブロックのアキュムレータのデータ型でシミュレーション中に8192個のオーバーフローがラップしたことが示されています。同様に,无符号累计总和ブロックのアキュムレータのデータ型では,シミュレーション中に16383個のオーバーフローがラップしています。
これらの各データ型についての詳細を見るには,[コンテンツ]ペインでデータ型を強調表示して[選択した結果の詳細を表示)ボタン()をクリックします。
32ビット整数がサポートされるターゲットハードウェアを仮定して,両方の累计总和ブロックでアキュムレータの語長を32
に設定します。これには以下の手順を実行してください。
固定小数点ツールペインのSigned Cumulative Sum:累加器
列を右クリックし,[モデル内のブロックの強調表示)を選択します。
モデル内のブロックをダブルクリックし,ダイアログボックスの[データ型)ペインを選択します。
アキュムレータのデータ型の行にあるアシスタントボタン()をクリックして,アキュムレータの[データ型アシスタント]を開きます。
[モード]を[固定小数点]
に設定します。現在指定されているデータ型の表現可能な範囲を確認するには,(固定小数点の詳細]リンクをクリックします。ツールに現在のデータ型で表現可能な最大値と最小値が表示されます。
[語長]を32
に変更し,(固定小数点の詳細]セクションの[詳細の更新)ボタンをクリックして,更新された表現可能な範囲を確認します。[語長]パラメーターの値を変更すると,[データ型)エディットボックスが自動的に更新されます。
ブロックダイアログボックスで(好的)をクリックし,変更を保存してウィンドウを閉じます。
无符号累计总和ブロックのアキュムレータのデータ型の語長を32
ビットに設定します。これには次の2つの方法があります。
アキュムレータのデータ型パラメーターの[データ型)エディットボックスに,データ型fixdt([], 32岁,0)
を直接入力します。
签署累计总和ブロックのアキュムレータのデータ型の語長を32
ビットに変更したときと同じ手順を実行します。
語長の変更を確認してオーバーフローをチェックするには,モデルを再実行します。これを行うには,固定小数点ツールの[シミュレーション]ボタンをクリックします。
固定小数点ツールの[コンテンツ]ペインが更新されて,最後に行ったシミュレーションではオーバーフローが発生しなかったことを確認できます。ただし,[シミュレーションの最小値)と[シミュレーションの最大値)の値の範囲は0
~0
になっています。このアンダーフローは,アキュムレータのデータ型の小数部の長さが小さすぎるために発生します。(SpecifiedDT)ではデータ値の精度を表すことができません。以下の節では,浮動小数点のベンチマークを取得して,固定小数点ツールを用いて小数部の長さを推奨する方法を説明します。
固定小数点ツールの[データ型オーバーライド]機能を使用して,モデルに指定されているデータ型を浮動小数点型でオーバーライドすることができます。モデルを(双)
のオーバーライドモードで実行すると,使用している固定小数点データ型に適した小数部の長さを選択するための参照範囲が提示されます。これには以下の手順を実行してください。
固定小数点ツールを開いて[データ型オーバーライド]を(双)
に設定します。
[运行模拟并存储活动结果]ボタンをクリックしてモデルを実行します。
固定小数点ツールの[コンテンツ]ペインで結果を確認します。モデルを(双)
のオーバーライドモードで実行したので,シミュレーションの最小値と最大値が正確で理想的な表現で得られます。これらの値は[シミュレーションの最小値)と[シミュレーションの最大値)パラメーターに表示されます。
上記の手順でシミュレーションの最小値と最大値の正確な参照表現を取得できたので,適切な小数部の長さを選択しやすくなりました。選択を行う前に,アクティブな結果を参照用に保存して,浮動小数点ベンチマークとして使用できるようにします。これを行うには,固定小数点ツールのメニューから[結果]、[将积极成果移至参考资料]を選択します。モデルのすべての信号について,[実行]列に表示されるステータスが活跃的
から参考
に変わります。
(双)
モードのオーバーライドの結果を浮動小数点の参照として保存したので,小数部の長さを推奨する準備が整いました。
データ型に適した小数部の長さを推奨するには,固定小数点ツールで一連の活跃的
の結果を使用できなければなりません。結果のアクティブセットを作成するにはモデルを再実行してください。その後,ツールに各信号での活跃的
の結果と参考
の結果の両方が表示されます。
[設計の最小/最大値がわからない場合はシミュレーションの最小/最大値を使用)チェックボックスをオンにします。このモデルではデータ型に設計の最小/最大値を指定していません。したがって,ツールはログに記録された情報を使用して小数部の長さを計算し,推奨します。設計の最小値と最大値の指定については,信号範囲の指定(金宝app模型)を参照してください。
(小数部の長さを推奨]ボタン()をクリックします。ツールによって[コンテンツ]ペインの(ProposedDT)列に推奨データ型が挿入されます。(ProposedMin)列と(ProposedMax)列には,推奨される最小値と最大値がそれぞれ表示されます。
固定小数点ツールで推奨された小数部の長さを受け入れる前に,そのデータ型の詳細を確認することが重要です。そうすることで,実際のデータのうちどの程度を推奨されたデータ型で表現できるかを判断できます。推奨されたデータ型を確認して推奨されたスケーリングを受け入れるには,以下の手順を実行します。
固定小数点ツールの[コンテンツ]ペインには,モデル内のデータ型に推奨される小数部の長さが表示されています。
签署累计总和ブロックとUnsigned累计总和ブロックの両方について,アキュムレータのデータ型に推奨される小数部の長さは17ビットです。
特定のデータ型に推奨されるスケーリングについての詳細を取得するには,固定小数点ツールの[コンテンツ]ペインでデータ型を強調表示します。
[显示所选结果的自动缩放信息]ボタン()をクリックし,強調表示したデータ型のオートスケール情報ウィンドウを開きます。
オートスケール情報ウィンドウが開いたら,[シミュレーションの最小値)および[シミュレーションの最大値)パラメーターの[値]列および(建议可表示的百分比)列を確認します。推奨のデータ型でシミュレーションデータの範囲の100%を表現できることがわかります。
推奨されたデータ型を受け入れるには,推奨されたスケーリングを保持する各データ型について[確定]列のチェックボックスをオンにします。その後,[選択した小数部の長さを適用)ボタン()をクリックします。ツールにより,ブロックダイアログボックスで指定したデータ型および[コンテンツ]ペインの(SpecifiedDT)列が更新されます。
新たに受け入れたスケーリングを検証するには,[データ型オーバーライド]パラメーターの設定を[ローカル設定を利用)に戻してからモデルを実行します。固定小数点ツールの[コンテンツ]ペインで次の詳細を確認できます。
活跃的
実行の[シミュレーションの最小値)と[シミュレーションの最大値)の値が,浮動小数点の参考
実行の[シミュレーションの最小値)と[シミュレーションの最大値)の値にマッチすること。
オーバーフローが発生しなくなったこと。
どちらの累计总和ブロックでもアキュムレータのデータ型の(SimDT)が(SpecifiedDT)にマッチしないこと。この相違は,累计总和ブロックは常にその入力信号から[符号属性]の設定を継承するため,[符号属性]は[自動]
にしか指定できないために生じます。したがって,両方のアキュムレータのデータ型の(SpecifiedDT)がfixdt([], 32岁,17)
になります。ただし,Signed Cumulative Sum ブロックは符号付き入力信号を受け入れるので、そのブロックの [アキュムレータ] パラメーターの(SimDT)も符号付きとなります(fixdt(1, 32岁,17)
)。同様に,无符号累计总和ブロックの[アキュムレータ]パラメーターの(SimDT)はその入力信号から[符号属性]の設定を継承するので,符号なしとなります(fixdt(0, 32岁,17)
)。