読者の中に評価でオシロスコープを使用し、後で参照できるように波形データをSaveしておく場合があると思います。Save形式は、測定器メーカーによって様々な種類が存在しますが、汎用性が高い形式としてCSV形式が挙げられます。CSV形式は、英数字で表記されており人間が見ても理解し易く波形データをSaveする際に選択するエンジニアも多いのではと思います。しかし、CSV波形File容量が予想以上に大きくなってしまった経験をお持ちではないでしょうか。今回は、オシロスコープのCSV波形FileとBinary波形Fileの中身を調査し、File容量の差分を考察してみます。
MSO4054BでCSV波形FileとBinary波形FileをSave
実験室にあるTektronix MSO4054Bを使用しデモ用の波形データとして、Probe calibration信号1KHz、2.5Vpp矩形波を取り込み、CSV形式 (拡張子csv)とBinary形式 (拡張子isf)で波形データをUSB memoryにSaveします。今回は、波形データポイント数を1000にセットし検証し易いようにFile容量を抑えました。
図1 MSO4054B波形取り込み
USB memoryにSaveした波形Fileの容量を確認してみます。CSV形式のtek0000CH1.csvは、約15.7MB、Binary形式のtek0000CH1.isfは、約2.5MBを示しておりCSV波形Fileは、Binary波形Fileの約6.38倍の容量があります。同じ波形情報を持つFileなのになぜ容量が異なるのでしょうか。
CSV形式、2024/09/22 12:28 15,675 tek0000CH1.csv
Binary形式、2024/09/22 12:28 2,456 tek0000CH1.isf
CSV波形Fileの中身
まず、Windows cmd promptのmoreコマンド(以下、moreと記す。)でCSV波形Fileの中身を見てみます。CSV波形Fileの1~21行目までは、Preambleと呼ばれる情報が格納され22行目から波形データが(X, Y)のCSV形式で格納されています。Preambleを参照すると、このFileに格納されている波形は、データポイント1000、サンプリング間隔4 μsec、水平スケール400 μsec/div、垂直スケール500 mV/divである事が分かります。1個目の波形データは、X = -2.000e-03, Y = 2.5 (-2 msec, 2.5V)を示し以降、データポイント数分だけ続きます。
図2 CSV波形Fileをmoreで表示
Binary波形Fileの中身
次に、Binary波形Fileの中身を見てみます。Binary波形Fileは、先頭にASCII表示のPreambleがありその後、数字らしきデータが格納されている事が分かります。
図3 Binary波形Fileをmoreで表示
File構造に詳しい読者の方は、お気付きと思いますがBinary Fileは、メモ帳やmoreで表示しても中身が理解できないので、Windows cmd promptのcertutilコマンドでBinaryを16進数に変換してみます。
Windows cmd prompt> certutil -f -encodehex tek0000CH1.isf tek0000CH1.txt
Binary波形Fileを16進数に変換したtek0000CH1.txtの中身をmoreで見てみます。一番左上の0000から始まる数字は、アドレスでその右側にアドレス0000から000fに格納された[8 bytes] [Space] [8 bytes]のデータが16進数で表示されています。更にその右側に、データをASCII表示した場合の文字が表示されています。アドレス0000から0007は、”3a 57 46 4d 50 52 45 3a”なのでASCII表示すると”:WFMPRE:”になります。アドレス0000から01baまでは、Preambleが格納されアドレス01bbからBinary波形データが格納されています。
図4 Binary波形Fileを16進数変換後にmoreで表示
Binary波形データ最初の”:CURVE #42000″は、次に続く波形データ長のByte数を表し”#4″ = 4 bytes分の2000がデータ長である事を表しています。データは、2 bytesで表現されているので波形データポイント数は、2000 / 2 = 1000である事が分かります。MSO4054Bは、Binary波形File格納時のデータ表記がDefault 2 bytesに設定されているようです。アドレス01c8から01cfは、”32 00 33 00 33 00 32 00″で10進数に変換すると、デジタイザ値”12800 13056 13056 12800″が得られます。
デジタイザ値は、Preambleを用いて電圧や電流の測定データに変換します。計算式は、y = yzero [0.00V] + ymulti [78.125E-06V] * (digitizer – yoff [-19.2E+03])で12800、13056は、それぞれ2.5V、2.52Vに変換されました。
0x3200 -> 12800 → 2.5 V、0x3300 -> 13056 → 2.52 V。
CSV波形FileとBinary波形File容量の考察
CSV波形FileとBinary波形Fileの中身が分かった所で両者の容量を比較、考察してみます。CSV波形File最初の波形データは、”-2.000e-03,2.5″のASCII表示14文字で表現され行末に改行コード2 bytes、CR (0x0d) + LF (0x0a)が存在します。ASCII表示は、1文字あたり1 byte消費しますので合計16 bytes消費します。ここで、CSV波形Fileを16進数に変換したFileの中身をmoreで見てみます。緑色の部分は、1個目の波形データで直後にCR (0x0d) + LF (0x0a)が付加されている事が分かります。
図5 CSV波形Fileを16進数変換後にmoreで表示
一方、Binary波形Fileの1個目の波形データは、”0x3200″で2 bytes消費します。Binary波形Fileは、測定データに変換する時、先頭に格納されたPreambleが必要ですが1回記述しておけば、以降共有が可能です。今回の例では、波形データポイント1個に必要なCSV波形FileとBinary波形Fileを比較すると8倍の容量差がある事が分かります。両者全体のFile容量差は、CSV波形Fileの有効桁数と0埋めの桁数によって変動するため、常に8倍の容量差がある訳ではありません。CSV波形Fileの容量を抑えるには、文字数をなるべく少なくするため、有効桁数と0埋めの桁数を小さくすれば良い事が分かります。
図6 Binary波形Fileを16進数変換後にmoreで表示
パソコン、周辺機器の認証試験、分析調査
アリオン株式会社では、通信機器、AV機器、IT機器のさまざまな有線、無線インターフェースのロゴ認証試験、接続互換性試験、リバースエンジニアリング、フィールドクレーム解析等、長年にわたり実績を積み重ねノウハウを蓄積しています。また、お客様のご要望に応じて市場流通機器の性能調査、分析調査も承っています。通信機器、AV機器、IT機器に関するご相談、お困りごとがありましたらお問い合わせ頂ければと思います。
最後に
今回は、オシロスコープのCSV波形FileとBinary波形Fileの中身を調査し、File容量の差分を考察してみました。Binary波形Fileは、人間が中身を見ても理解しずらく敬遠しているエンジニアも多いと思います。しかし、デジタル化された測定機器やコンピュータ機器は、2進数でデータを扱っておりBinary Fileとの親和性が高いと考えられます。Tektronix isfのFormatは、参考文献1で公開されていますのでプログラミングの知識をお持ちの方は、力試しにBinary波形FileからCSV波形Fileへ変換するプログラムを作ってみては如何でしょうか。