主要内容gydF4y2Ba

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。gydF4y2Ba

固定小数点設計の概念と用語gydF4y2Ba

固定小数点データ型gydF4y2Ba

デジタルハードウェアでは,数値はバイナリワードで格納されます。バイナリワードとは固定長の連続ビット(1と0)です。この連続する1と0をハードウェアコンポーネントやソフトウェア関数が解釈する方法はデータ型によって定義されます。gydF4y2Ba

2進数は浮動小数点または固定小数点データ型として表されます。この節では,固定小数点数,データ型および数学演算に関連するさまざまな用語と概念について説明します。gydF4y2Ba

固定小数点データ型は,ビット単位の語長,2進小数点の位置,および数値の符号属性(符号付きまたは符号なしを指定可能)によって特徴付けられます。符号付きの数値とデータ型では正と負の両方の値を表すことができますが,符号なしの数値とデータ型で表すことができるのはゼロ以上の値のみです。gydF4y2Ba

2進小数点の位置によって,固定小数点の値がスケーリングされて解釈されます。gydF4y2Ba

たとえば,以下は一般化固定小数点数(符号付きまたは符号なし)を2進数で表したものです。gydF4y2Ba

ここで,gydF4y2Ba

  • bgydF4y2Ba我gydF4y2BaはgydF4y2Ba我gydF4y2Ba番目の2進数です。gydF4y2Ba

  • 西城はバイナリワードのビット数であり,語長とも呼ばれます。gydF4y2Ba

  • bgydF4y2Bawl-1gydF4y2Baは最上位(最大)ビット(MSB)の位置です。符号付き2進数では,このビットは,数値が正と負のどちらであるかを示す符号ビットです。gydF4y2Ba

  • bgydF4y2Ba0gydF4y2Baは最下位(最小)ビット(LSB)の位置です。バイナリワードのこのビットは,最小値を表すことができます。LSBの重みは次のようになります。gydF4y2Ba

    wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba lgydF4y2Ba 年代gydF4y2Ba BgydF4y2Ba =gydF4y2Ba 2gydF4y2Ba −gydF4y2Ba fgydF4y2Ba rgydF4y2Ba 一个gydF4y2Ba cgydF4y2Ba tgydF4y2Ba 我gydF4y2Ba ogydF4y2Ba ngydF4y2Ba lgydF4y2Ba egydF4y2Ba ngydF4y2Ba ggydF4y2Ba tgydF4y2Ba hgydF4y2Ba

    ここで,fractionlengthは2進小数点の右側のビット数です。gydF4y2Ba

  • 2進小数点の左側のビットは整数ビットや符号ビットで,2進小数点の右側のビットは小数ビットです。2進小数点の左側のビット数は整数部の長さと呼ばれています。この例の2進小数点はLSBの4桁左に示されています。したがって,この数値には小数ビットが4個ある,あるいは小数部の長さが4であると言われます。gydF4y2Ba

固定小数点データ型は符号付きまたは符号なしです。gydF4y2Ba

符号付き2進固定小数点数は通常,次の3つのいずれかの方法で表します。gydF4y2Ba

  • 符号/大きさ——符号付きの固定小数点数または浮動小数点数の表現。符号/大きさ表現では,バイナリワードの1つのビットは常に専用の符号ビットであり,ワードの残りのビットは数値の大きさをエンコードします。符号/大きさ表現を使用した否定は,符号ビットを0(正)から1(負)へまたは1から0へ反転することで構成されます。gydF4y2Ba

  • 1の補数gydF4y2Ba

  • 2の補数,2の補数は符号付き固定小数点数を表す最も一般的な方法です。詳細は,gydF4y2Ba2の補数gydF4y2Baを参照してください。gydF4y2Ba

符号なし固定小数点数はゼロ以上の数値のみを表現できます。gydF4y2Ba

スケーリングgydF4y2Ba

(勾配バイアス]表現では,固定小数点数はスキームに応じてエンコードできます。gydF4y2Ba

rgydF4y2Ba egydF4y2Ba 一个gydF4y2Ba lgydF4y2Ba -gydF4y2Ba wgydF4y2Ba ogydF4y2Ba rgydF4y2Ba lgydF4y2Ba dgydF4y2Ba vgydF4y2Ba 一个gydF4y2Ba lgydF4y2Ba ugydF4y2Ba egydF4y2Ba =gydF4y2Ba (gydF4y2Ba 年代gydF4y2Ba lgydF4y2Ba ogydF4y2Ba pgydF4y2Ba egydF4y2Ba ×gydF4y2Ba 我gydF4y2Ba ngydF4y2Ba tgydF4y2Ba egydF4y2Ba ggydF4y2Ba egydF4y2Ba rgydF4y2Ba )gydF4y2Ba +gydF4y2Ba bgydF4y2Ba 我gydF4y2Ba 一个gydF4y2Ba 年代gydF4y2Ba

ここで,勾配は次のように表現できます。gydF4y2Ba

年代gydF4y2Ba lgydF4y2Ba ogydF4y2Ba pgydF4y2Ba egydF4y2Ba =gydF4y2Ba 年代gydF4y2Ba lgydF4y2Ba ogydF4y2Ba pgydF4y2Ba egydF4y2Ba 一个gydF4y2Ba dgydF4y2Ba jgydF4y2Ba ugydF4y2Ba 年代gydF4y2Ba tgydF4y2Ba 米gydF4y2Ba egydF4y2Ba ngydF4y2Ba tgydF4y2Ba ×gydF4y2Ba 2gydF4y2Ba egydF4y2Ba xgydF4y2Ba pgydF4y2Ba ogydF4y2Ba ngydF4y2Ba egydF4y2Ba ngydF4y2Ba tgydF4y2Ba

小数部の勾配の同義語として”勾配調整”gydF4y2Baという用語が使用されることがあります。gydF4y2Ba

自明のケースでは,勾配= 1,バイアス= 0です。我nt8 などの純粋な整数ではスケーリングは常に自明であり、真の浮動小数点型の single と double でもまた自明です。

整数はgydF4y2Ba”“整数格納と呼ばれることがあります。これは生の2進数で,2進小数点がワードの右端にあると想定されます。システムツールボックスでは,指数の負の数値をgydF4y2Ba”“小数部の長さと呼ぶことがあります。gydF4y2Ba

勾配とバイアスは共に固定小数点数のスケーリングを表します。ゼロバイアスの数では,勾配のみがスケーリングに影響します。2進小数点位置でのみスケーリングされる固定小数点数は、バイアスがゼロで勾配調整が 1 に等しい Fixed-Point Designer™ [勾配 バイアス] で表した数値に相当します。これは「2 進小数点専用スケーリング」または「2 のべき乗スケーリング」と呼ばれます。

rgydF4y2Ba egydF4y2Ba 一个gydF4y2Ba lgydF4y2Ba -gydF4y2Ba wgydF4y2Ba ogydF4y2Ba rgydF4y2Ba lgydF4y2Ba dgydF4y2Ba vgydF4y2Ba 一个gydF4y2Ba lgydF4y2Ba ugydF4y2Ba egydF4y2Ba =gydF4y2Ba 2gydF4y2Ba egydF4y2Ba xgydF4y2Ba pgydF4y2Ba ogydF4y2Ba ngydF4y2Ba egydF4y2Ba ngydF4y2Ba tgydF4y2Ba ×gydF4y2Ba 我gydF4y2Ba ngydF4y2Ba tgydF4y2Ba egydF4y2Ba ggydF4y2Ba egydF4y2Ba rgydF4y2Ba

またはgydF4y2Ba

rgydF4y2Ba egydF4y2Ba 一个gydF4y2Ba lgydF4y2Ba -gydF4y2Ba wgydF4y2Ba ogydF4y2Ba rgydF4y2Ba lgydF4y2Ba dgydF4y2Ba vgydF4y2Ba 一个gydF4y2Ba lgydF4y2Ba ugydF4y2Ba egydF4y2Ba =gydF4y2Ba 2gydF4y2Ba −gydF4y2Ba fgydF4y2Ba rgydF4y2Ba 一个gydF4y2Ba cgydF4y2Ba tgydF4y2Ba 我gydF4y2Ba ogydF4y2Ba ngydF4y2Ba lgydF4y2Ba egydF4y2Ba ngydF4y2Ba ggydF4y2Ba tgydF4y2Ba hgydF4y2Ba ×gydF4y2Ba 我gydF4y2Ba ngydF4y2Ba tgydF4y2Ba egydF4y2Ba ggydF4y2Ba egydF4y2Ba rgydF4y2Ba

システムツールボックスソフトウェアでは,この量の語長と小数部の長さを指定することにより,多くのブロックの出力またはパラメーターに固定小数点データ型とスケーリングを定義できます。語長と小数部の長さは,2進小数点のみの信号についてデータ型とスケーリング情報の全体を定義します。gydF4y2Ba

固定小数点データ型をサポートするすべてのシステムツールボックスブロックで,2進小数点専用スケーリングの信号がサポートされます。延迟や矩阵转置などの,データを並べ替えるだけで算術演算を行わない多くの固定小数点ブロックでも[勾配バイアス]スケーリングをもつ信号がサポートされます。gydF4y2Ba

精度と範囲gydF4y2Ba

丸め手法が呼び出されるかオーバーフローが発生するかを判断するには,シミュレーション内のブロックで選択する固定小数点データ型およびスケーリングの精度と範囲に注意しなければなりません。gydF4y2Ba

範囲gydF4y2Ba

範囲とは,固定小数点データ型とスケーリングで表現できる数値の範囲です。以下は,語長が西城,スケーリングが年代,バイアスがBである2の補数の固定小数点数で表現可能な数値の範囲です。gydF4y2Ba

任意のデータ型の固定小数点数は,符号付きと符号なしのどちらも,異なるビットパターン数は2gydF4y2Ba王gydF4y2Baです。gydF4y2Ba

たとえば2の補数では,ゼロと同様に負の数値も表現しなければならないので,最大値は2gydF4y2Bawl-1gydF4y2Baです。ゼロの表現は1つしかないため,正の数値と負の数値の数が異なります。つまり2gydF4y2Bawl-1gydF4y2Baの表現はありますが,2gydF4y2Bawl-1gydF4y2Baの表現はありません。gydF4y2Ba

全範囲とは,データ型の最も広い範囲です。浮動小数点型の場合,全範囲は-∞~∞です。整数型の場合,全範囲は,その型が表現できる最小整数値から最大整数値まで(有限)の範囲です。たとえば,符号付き8ビット整数の場合は-128 ~ 127です。gydF4y2Ba

オーバーフローの処理gydF4y2Ba固定小数点のデータ型は有限範囲内の数値を表すため,演算の結果がその範囲の数値より大きいか小さい場合,オーバーフローが発生する可能性があります。gydF4y2Ba

システムツールボックスソフトウェアでは,オーバーフローを避けるためにデータ型にガードビットを随時追加することはできません。ガードビットとは,ハードウェアレジスタとソフトウェアシミュレーションのいずれかで,オーバーフローの場合に情報が失われないようにするためにバイナリワードの最上部に追加される特別なビットです。すべてのガードビットはモデルの初期化時に割り当てられなければなりません。ただし,ソフトウェアでオーバーフローをgydF4y2Ba“飽和“またはgydF4y2Ba”“ラップすることは可能です。飽和は,正のオーバーフローを使用範囲内の最大の正の数値として表し,負のオーバーフローを使用範囲内の最大の負の数値として表します。ラップはモジュロ演算を使用して,オーバーフローをそのデータ型の表現可能な範囲内にキャストします。詳細は,gydF4y2Baモジュロ演算gydF4y2Baを参照してください。gydF4y2Ba

精度gydF4y2Ba

固定小数点数の精度は,そのデータ型とスケーリングで表現できる連続値間の差異で,最下位ビットの値と等価です。最下位ビットの値,つまり数値の精度は小数部のビット数によって決まります。固定小数点値は,そのデータ型とスケーリングの精度の半分以内で表現できます。この定義の同義語として分解能という用語が使用されることがあります。gydF4y2Ba

たとえば2進小数点の右側が4ビットの固定小数点の表現は,精度が2gydF4y2Ba-4gydF4y2Ba0.0625,つまりであり,最下位ビットの値になります。このデータ型とスケーリングの範囲内の数値はすべて(2gydF4y2Ba-4gydF4y2Ba0.03125) / 2,つまり以内で表現でき,これは精度が半分になります。これは有限精度の数値を表す例です。gydF4y2Ba

丸めモード-gydF4y2Ba数値を有限精度で表す場合,使用可能な範囲のすべての数値を正確に表すことができるとは限りません。数値を指定されたデータ型とスケーリングで正確に表現できない場合,その数値は表現可能な数にgydF4y2Ba“丸”められます。丸め演算では常に精度が失われますが、演算のコストと生じるバイアスの量は丸めモードによって異なります。コストとバイアスの間のトレードオフにおける柔軟性を高めるため、DSP System Toolbox™ ソフトウェアでは現在、以下の丸めモードがサポートされています。

  • [正方向]gydF4y2Baは,計算結果を正の無限大方向の最も近い表現可能な数値に丸めます。gydF4y2Ba

  • (最も近い偶数方向)gydF4y2Baは,計算結果を最も近い表現可能な数値に丸めます。同数の場合,gydF4y2Ba(最も近い偶数方向)gydF4y2Baは最も近い偶数に丸めます。これはツールボックスで提供される最もバイアスの小さい丸めモードです。gydF4y2Ba

  • [負方向]gydF4y2Baは切り捨てに等しく,計算結果を負の無限大方向の最も近い表現可能な数値に丸めます。切り捨て操作により,1つ以上の最下位ビットが数値から削除されます。gydF4y2Ba

  • (最も近い整数方向)gydF4y2Baは,計算結果を最も近い表現可能な数値に丸めます。同数の場合,gydF4y2Ba(最も近い整数方向)gydF4y2Baは正の無限大方向の最も近い表現可能な数値に丸めます。gydF4y2Ba

  • (最も近い整数方向)gydF4y2Baは,計算結果を最も近い表現可能な数値に丸めます。同数の場合,gydF4y2Ba(最も近い整数方向)gydF4y2Baは正の数値を正の無限大方向の最も近い表現可能な数値に丸め,負の数値を負の無限大方向の最も近い表現可能な数値に丸めます。gydF4y2Ba

  • [シンプルな丸め]gydF4y2Baは,生成コードに追加される丸めコードの量が最小限になるような丸めモード(gydF4y2Ba[負方向]gydF4y2BaまたはgydF4y2Ba[ゼロ方向)gydF4y2Ba)を使用して計算結果を丸めます。詳細は,gydF4y2Ba丸めモード:最も簡潔gydF4y2Ba(定点设计师)gydF4y2Baを参照してください。gydF4y2Ba

  • [ゼロ方向)gydF4y2Baは,計算結果をゼロ方向の最も近い表現可能な数値に丸めます。gydF4y2Ba

これらの各丸めモードの詳細については,gydF4y2Ba丸めgydF4y2Ba(定点设计师)gydF4y2Baを参照してください。gydF4y2Ba

丸めモードを直接比較するには,gydF4y2Ba丸め手法の選択gydF4y2Ba(定点设计师)gydF4y2Baを参照してください。gydF4y2Ba