本文にスキップする

Select your region & language

Global

Region

デジタル計測の基礎 - 第15回「浮動小数点形式とデータ転送」

今回は、前回の続きとして、いろいろな浮動小数点形式のデータとそれを外部PC で読み取
る方法などに関してお話しします。

FFT アナライザなどのディジタル計測器から得られるディジタルデータをPC などで読み取
る(変数に代入する)ためには、そのデータの形式と並び順を理解する必要があります。

計測/分析された結果のディジタルデータ形式は、大きく固定小数点形式と浮動小数点形式
に分けることができます。固定小数点形式としては、主にA/D コンバータからのディジタ
ル時間データ列で、例えば、16 ビット2 の補数形式(2 バイト)です。これをGP-IB イン
ターフェイスなどでバイト単位ごとに読み取った場合、求める数値(整数バイナリデータ)
をx とすると以下のように変換します。

  • 16ビット2の補数形式
    16ビット2の補数形式

このとき問題になるのは、1 バイトデータを読み取る順番がどうなるか、すなわち計測機器
側からどのような順番で送られてくるかです。

一般に、1 点が多バイトで構成されるデータをバイト単位でメモリアクセスできるコンピュ
ータのデータメモリに格納する方式は、上位バイト(M)を下位番地に格納する方式(ビッ
グエンディアン)と下位バイト(L)を下位番地に格納する方式(リトルエンディアン)の
2 種類あります。

例えば上記の 2 バイト(16 ビットデータでその数値を16 進数で1234H とする)データが
1000H 番地から格納されているとすると、図1のようになります。

  • デジタル計測の基礎 - 第15回「浮動小数点形式とデータ転送」_NO.1
    ビッグエンディアン
  • デジタル計測の基礎 - 第15回「浮動小数点形式とデータ転送」_NO.2

         図1.多バイトデータの格納方式の違い(2 バイトの時)

1 データ4 バイト(32 ビットデータでその数値を16 進数で12345678H とする)の時
も同様です(図2)。

  • デジタル計測の基礎 - 第15回「浮動小数点形式とデータ転送」_NO.3

                 ビッグエンディアン

  • デジタル計測の基礎 - 第15回「浮動小数点形式とデータ転送」_NO.4

                 リトルエンディアン

         図2.多バイトデータの格納方式の違い(4 バイトの時)

2 方式の比較は、表1となります。最近は、両方式をサポートするバイエンディアンを採用
するCPU(PowerPC など)もあります。また、LAN のネットワーク(TCP/IP プロトコル)
上での多バイトデータはビッグエンディアン方式で転送されるのがルールのようです。

  特徴 主な対応CPU
ビッグエンディアン メモリを表示させた時、その並びが人
間にとって分かりやすい
モトローラ系のCPU
(68 系)
リトルエンディアン コンピュータにとって処理が容易と
なり、スピードが速くなる。
メモリ効率もよい
インテル系のCPU
(x86 系)

表1.格納方式の比較

上記の例のように、インターフェイスから転送されて来るデータを1 バイトずつ読み取り
変数に入れる場合は、データの形式と転送順さえ分かれば1 データずつ数値変数に変換す
ればよいことになります。

計測機器では、A/D コンバータからの生の時間データを演算処理しますので、その結果は普
通浮動小数点形式のデータとなります。前回の計測コラムに説明しましたIEEE 規格の形式
を含め、主な浮動小数点形式は、図3となります。

  • デジタル計測の基礎 - 第15回「浮動小数点形式とデータ転送」_NO.5
  • デジタル計測の基礎 - 第15回「浮動小数点形式とデータ転送」_NO.6
  • デジタル計測の基礎 - 第15回「浮動小数点形式とデータ転送」_NO.7
  • デジタル計測の基礎 - 第15回「浮動小数点形式とデータ転送」_NO.8

            図3.いろいろな浮動小数点形式

図 3 の①番目と②番目は、IEEE754 規格の浮動小数点形式(単精度と倍精度)で、
最近のCPU やプログラム言語でサポートする標準のフォーマットとなっています。
③番目は、以前のパソコンでよく使われていた米国マイクロソフト社系のBASIC で
の浮動小数点形式です。④番目は、8/16 ビットマイコンと一緒に使われていた浮動小数点
演算ユニットAm9511A(AMD 社製)で採用されていた形式です。浮動小数点形式のデー
タはもちろん多バイト(単精度では4 バイト、倍精度では8 バイト)ですので、データの
並び順も重要となります。

C 言語などの最近の高級プログラミング言語では、外部の機器などからバイナリデータをま
とめて読み取りそれを指定した配列変数に自動的に格納してくれるコマンドや関数などが
用意されています。この場合、データの並び順とデータの形式が読み取る側のPC と一致し
ていることが重要となります。

固定小数点形式の場合では、普通データの並び順だけを問題とすればよいですが、浮動小
数点形式のデータでは、データの並び順だけでなくデータ形式(どの形式か、単精度か倍
精度か)も気にする必要があります。機器側としては、データ転送順や浮動小数点形式を
指定することができるコマンドを用意しています。

近年発売する計測機器は、現在主流のWindows PC に合うようにデータ転送順はリトルエン
ディアン、浮動小数点形式はIEEE754 規格対応というのは主流となっています。

(追記) 2009 年1 月9 日

当社のFFT アナライザ(DS/CF シリーズ)の標準バイナリファイル(DAT ファイル)を
他のソフトで読み込む場合も、データの並び(エンディアン)や浮動小数点の形式が重要
となります。DAT ファイルは、今までのアナライザと互換性のため、すべてビッグエンデ
ィアンで保存されています。

FAQ サイトの「CF 標準バイナリファイル仕様」を参照してください。

小野測器 - DS-2000 FAQ - CF標準バイナリファイル仕様

(2008年12月18日発行メールマガジンより抜粋)