Main Content

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

物理量と測定スケール

はじめに

固定小数点ハードウェアを使用するという決定は、数値を特定の形式で表現するという選択にすぎません。この表現は、最終製品の電力消費、サイズ、メモリ使用量、速度、コストの面でメリットをもたらすことがよくあります。

物理量の測定にはさまざまな数値書式があります。たとえば、水の沸点は摂氏 100 度、華氏 212 度、ケルビン温度 373 度、ランキン温度 671.4 度です。どの数値で表しても、物理量はまったく同じです。数値が異なるのは、4 つの異なるスケールが使用されているためです。

摂氏のようによく知られている標準スケールは、情報交換には便利です。しかし、固有の非標準スケールを作成して使用することが効果的な場合もあります。それは、限定されたリソースを最大限に利用することが必要な場合です。

たとえば地図の作成者は、非標準のスケールを使用することで、固定サイズの用紙に最大限の詳細を含めることができます。米国の典型的な道路アトラスでは、各州が 2 ページにまたがって示されています。インチ対マイルのスケールは、ほとんどの州で固有です。インチに対するマイルの割合を大きくすることで、テキサスは 2 ページに収まります。ロードアイランドにこれと同じスケールを使用すると、ページの使用効率が下がってしまいます。インチに対するマイルの割合をはるかに小さいものにすると、ロードアイランドは最大限の詳細を含めて表示されます。

変数の測定値を組み込みプロセッサに収めることは、用紙に州の地図を収めることと似ています。地図のスケールは、州のすべての境界線をページ内に収めることができるものでなければなりません。同様に、測定値の 2 進スケールでは、最大値と最小値が収まらなければなりません。さらに、地図のスケールは、最大限の詳細を含めるために、ページを最大限に利用しなければなりません。同様に、測定値の 2 進スケールは、最大限の精度を実現するために、プロセッサを最大限に利用しなければなりません。

測定に標準スケールを使用することには、互換性の面で明らかな利点があります。しかし、原則を破って固有の非標準スケールを使用することに価値がある場合もあります。また、一意性と互換性の両方の組み合わせが賢明である場合もあります。詳細は、次節を参照してください。

測定スケールの選択

液体水の温度を測定して、符号なしの 8 ビットの整数でそれらの測定値を表すとします。幸いにも液体水の温度の範囲は限定されています。使用するスケールにかかわらず、液体水の温度は氷点から沸点までの範囲に限定されます。したがって、これは有効な 256 個の 8 ビット値を使用して取得しなければならない気温の範囲です。有効な 8 ビット値は次のとおりです。0,1,2,...,255.

温度を表現するための 1 つの方法は、標準のスケールを使うことです。たとえば、整数の単位を摂氏にします。したがって、整数 0 と 100 は、それぞれ氷点の水と沸点の水を表します。このスケールは整数から摂氏度数への明白な変換を与えるという利点をもちます。ただし、101 ~ 255 の数値は使用されないという欠点もあります。この標準スケールを使用すると、数値範囲の 60% 以上が無駄になります。

2 番目の方法は、非標準のスケールを使うことです。このスケールでは、整数 0 と 255 が、それぞれ氷点の水と沸点の水を表します。このスケールでは、氷点と沸点の間に 99 個ではなく 254 個の値があるため、最大限の精度が得られるという利点があります。ただし、単位はビットごとにおおよそ摂氏 0.3921568 度であるため、摂氏への変換には 2.55 による除算が必要になります。これはほとんどの固定小数点プロセッサでは比較的負荷の高い計算です。

3 番目の方法は、"準標準" のスケールを使うことです。たとえば、整数 0 と 200 は、それぞれ氷点の水と沸点の水を表すようにすることができます。このスケールの単位はビットあたり摂氏 0.5 度です。ただし、このスケールでは 201 ~ 255 の数値を使用しないので、21% が無駄になることを意味します。このスケールの利点としては、標準スケールへの変換が比較的簡単にできるという点があります。摂氏への変換には 2 による除算が必要ですが、これはほとんどのプロセッサでは簡単なシフト演算です。

乗算の域を超えた測定スケール

1 つのスケールから別のスケールへの変換での主な演算の 1 つは乗算です。前述のケース スタディでは、量子化整数値 Q から実数の摂氏値 V への変換の 3 つの例を示しましたが、次のようにどれも乗算のみを使用しました。

V={100oC100 Q1Conversion 1100oC255 Q2Conversion 2100oC200 Q3Conversion 3

図式的には、変換は傾き S をもつ線で原点を通過しなければなりません。原点を通る線は、純線形変換と呼ばれます。純線形変換に限定することは無駄につながり、一般線形等式を使用する方が効果的な場合がよくあります。

V = SQ + B

バイアス項 B を追加することで、限定されたビット数値に量子化する際に、より高い精度を得ることができます。

一般線形等式は、量子化されたスケールへの便利な変換を可能にします。ただし、量子化のすべての方法と同様に、精度は限られており、変換による誤差が発生する可能性もあります。量子化の誤差を含む一般線形等式は、以下のとおりです。

V=SQ+B±Error.

量子化された値 Q が最も近い表記可能な数値に丸められる場合は、次のようになります。

S2ErrorS2.

つまり、量子化誤差の量は、ビット数とスケールの両方によって決定されます。このシナリオは、最高条件での誤差を表しています。その他の丸めスキームでは、誤差は倍になることもあります。

温度の測定スケールの選択

通常の電子制御型内燃エンジンでは、燃焼の直前にシリンダー内で空気と燃料の希望の割合が達成されるように燃料の流量が調整されます。したがって、現在の空気流量レートが既知でなければなりません。空気流量を直接測定するセンサーを使用するメーカーもありますが、関連する信号の測定から空気流量を計算するメーカーもあります。これらの変数の関係は、理想気体の状態方程式で算出されます。理想気体の状態方程式では、気温による除算を使用します。正しい結果を得るためには、方程式でケルビンやランキンなどの絶対温度スケールを使用しなければなりません。ただし、絶対温度スケールに直接量子化すると、必要以上に大きい量子化誤差が発生します。

エンジンに流入する空気の温度の範囲は限定されています。典型的なエンジンでは、ラジエーターはブロックを冷却液の沸点以下に保つように設計されています。最大 225oF (380 K) であると見なしてください。空気はインテーク マニホールドの中を移動する際、最大気温まで加熱される可能性があります。極端な気候でのコールド スタートの場合、-60oF (222 K) もの低温になることもあります。したがって、絶対温度のケルビン スケールを使用すると、対象範囲は 222 ~ 380 K になります。

組み込みコントロール システムによる処理のためには、気温を量子化しなければなりません。符号なしの 3 ビットの数値への非現実的な量子化、つまり、 0、1、2、...、7 を想定した場合、最大精度の純線形変換は以下のようになります。

V=380 K7.5 bitQ.

量子化された変換と対象範囲を次の図に示します。

有効な量子化値は 7.5 個あることに注意してください。これは、最初のビットの半分のみが 0 より上の気温 (実際値) に対応するためです。

量子化誤差は –25.33 K/bit ≤ Error ≤ 25.33 K/bit です。

量子化された変換の対象範囲と、量子化された誤差を次の図に示します。

純線形変換の代わりに、最大精度の一般線形変換を考えます。

V=(380 K222 K8)Q+222 K+0.5(380 K222 K8)

量子化された変換と対象範囲を次の図に示します。

量子化誤差は -9.875 K/bit ≤ Error ≤ 9.875 K/bit で、これは純線形変換に関連する誤差の約 2.5 分の 1 です。

量子化された変換の対象範囲と、量子化された誤差を次の図に示します。

明らかに一般線形スケールは対象範囲において純線形スケールよりもはるかに高い精度を与えます。