PRIMO信号処理研究所 / Synchro PRIMO Lab.

周波数測定、位相差測定に関する新しい数理。
Please contact to snishie@mac.com.

AD変換器の限界 その1

2016-02-01 06:45:30 | 信号処理

 デジタル時代の盲点・・・AD変換器

 当社の方法をつかうと限られたサンプル数で非常に正確に「短時間周波数」を求めることができます。f = fs/2π*arcsin(0.5 * √(3- Ls3/Ls1) ) の方法を用いると合計5サンプルで計算できます。

 さて今回の話題ですが、以上のような数値計算の制約による計算誤差を工夫したとしてもある意味避けられない、アナログ信号をデジタル信号に変換する「AD変換器」の問題について説明したいと思います。

  上の式にはサンプリング周波数fsが入っています。オーディオ用のAD変換器(オーディオカード)のサンプリング周波数は普通44.1kHzが用いられます。

 では実機で動作しているサンプリング周波数がずれている場合、何がおこるか?

 AD変換器の内部では「水晶発振子」が使用され、サンプリング信号を生成していますが、実はこの水晶発振子がクセものなのです。水晶発振子の周波数は必ずしも完璧ではなく、数ppmから100ppm程度の誤差があります。パソコンクロック用など、周波数精度が問題ない場合は周波数精度はそれほど気にされません。

 水晶発振子には様々なクラスがあって、温度補償がついているTCXO、恒温槽はついて温度制御まで行っているOCXOなどのがあります。OCXOでは精度は0.02ppm程度となるものもあります。

 ここで「精度」と簡単に書いてしまいましたが、細かくは 1)公称値とどのくらいずれているか、2)動作中どのくらいの変動があるか、 の2点が重要です。

 さてここで問題発生。 試験に使用する「正しい周波数」をどう用意するか。AD変換器のサンプリング周波数は, 44.1 kHzからどのくらい外れているのか、どこまで信用して良いのか。

 実際に使用した「正しい周波数」は「ルビジウム発振器」の信号を外部同期入力とした信号発生器(Function Generator=FG)を使用しています。ルビジウム発振器の「精度・安定度」は"数十ppb"クラスとされています。

 実際に測定してみると・・・

 測定値が、常に -35~ -40ppm くらい低いのです。50.000,000 Hzを測定すると、49.998 ~49.999Hzの間となっています。エージングという慣らし運転を繰り返しADCを安定化すると、誤差は-39ppm~-41ppmに落ち着いてきました。搭載されているデバイスは普通のものなのでしょう。

 当社の方法を用いて高精度な測定のためには、正しい値のわかっている信号を用いて、以上説明したような「AD変換器の校正」が必要になります。

 資金があれば、「ワードクロック同期」のついたAD変換器を使用、さらにワードクロック発生器もOCXOクラスの高級品を使用すれば精度(不確かさ)は向上します。

 前述の「安定度」ですが、測定結果が, 20μHz程度のドリフトと,数秒間での測定値の不確定さは約10μHzとなっています。20μHzの測定値のズレは0.4ppmに相当し、公称値が40ppmズレているとはいえ変動はそこそこであることがわかっています。

 かつて大学院在学中での「旧方式」による試験(※ 本ブログで書いてあるものとは若干異なります)でとれた「チャンピオンデータ」では、441.000,000 Hzの試験信号(当然 Rb発振器でロック)、ADCやクロックジェネレータも最高級品を使用し、1μHz級の周波数分解能、位相差測定では1μradの分解能が確認できました。 この検証については論文で公表しておりますので興味のあるかたはどうぞ。

文献: 西江, 赤木, 弦楽器F0 推定のための精密周波数測定方法, 電子情報通信学会論文誌 A J97-A(4), 332-342, 2014-04-01.  http://hdl.handle.net/10119/11937

ーーーー

 Rb発振器で同期した環境を用いると、分単位の測定値ではおそらく有効数字8桁は実現できていると思います。しかし「なぜ8桁なのか」?

 実は・・・AD変換器の分解能は16ビット。当社の方法は振幅方向の分解能も周波数分解能に関係しているのです。シミュレーションのみでしか検証はできていませんが、「リサージュ外積Ls」の分解能の限界と考えています。クロス積の計算では「桁落ち」が発生してしまうのです。

 

 

 


DFT/FFTの限界 ー不確定性ー

2016-02-01 06:40:08 | 信号処理

DFT/FFT の限界

DFT/FFTを用いた周波数測定の限界について説明したいと思います。

DFT/FFTのサンプル数とサンプリング周波数に応じて、「周波数ビン」とも呼ばれる目盛りが決定されます。50Hzの測定で仮に1Hzの分解能が欲しければ、サンプル数Nとサンプリング周波数fsの間には以下のような条件が想定されます。

・ N=4096, fs=4096 (Hz) 

 こうすると、測定に要する時間は1秒となります。では測定時間分解能を0.1秒にしたい場合どうすればよいか。サンプリング周波数を高くする方法をまず考えてみます。

・ N=4096, fs =40960 (=40.96kHz) 

すると周波数目盛りである周波数ビン=10Hzとなってしまいます。一見周波数分解能が低下するように見えるのですが、得られたスペクトルF(ω)の実部・虚部をベクトルに見立てると回転が起こっており、この回転率をみることで、周波数ビンの分解能を超えた計測が可能です。

 仮に、1測定あたり、スペクトルの角度が36度変化しているなら、本条件の場合、1/10秒で36度の回転なので、1秒あたり360度、すなわち基準となる周波数ビンから1Hzの差があることがわかります。測定限界は180度です。これを超えるとベクトルの回転が右回りなのか左回りなのか判別できません。180度/0.1秒の変化は5Hzに相当します。つまり、隣接する周波数ビンの間は、前述のようなベクトルの回転をふくめればなんとか計算できることになります。

 逆にサンプル数Nを1/10にしても同じことで(FFTでは2の倍数の制約があるので現実的ではありませんが)、周波数ビンの間隔が10倍になる代わりに測定時間分解能は1/10になります。

 まとめると、「周波数ビン」という「目盛り」を一定にしたいなら、『測定時間(時間分解能)とサンプリング周波数は反比例の関係』にあり、サンプリング周波数を一定にするなら、周波数ビン(=目盛り)と測定時間(時間分解能)はこれも反比例の関係。

 DFT/FFTでいう周波数ビンの間隔=周波数分解能を高くすると、測定時間が長くなるジレンマが存在するわけです。

 一般的には「フーリエ変換の不確定性」と呼ばれていますが、不確定性の厳密な定義はちょっとややこしいです。時系列波形s(t), スペクトルのS(ω) の「1次モーメント」(=平均持続時間、平均周波数)と「2次モーメント」(=平均時間窓、周波数分解能)で定義されます。 参考: L.Cohen/吉川、佐藤訳 時間-周波数解析 (朝倉書店) 

 以上サンプリング周波数fsとサンプル数Nの関係で説明したように、DFT/FFTのような離散系の例ではコーエンのような面倒な積分計算なしに、なにかしら周波数分解能と時間分解能のあいだにトレードオフがあることは、感覚的に理解できるでしょう。

 もうひとつ、DFT/FFTを使用する際には考慮しないといけない事項があります。DFT/FFTでは最低1サイクルの信号がないといけません。周波数ビン=1の位置にある周波数が周波数の下限となります。

 このことをふまえ電源の系統周波数(50,60Hz)を精密測定することを考えてみましょう。fs=44100 Hzという一般的なオーディオ用ADCを使用し、測定時間を概ね0.1秒にするなら、 N=4096が候補となります。周波数ビンは10.77Hzです。さらに一歩つっこんで、1mHzの周波数分解能を求めるなら、複素スペクトルの回転角度はおおまかに 1/10000回転=0.036度となります。

 はたして、得られたスペクトルからこの角度速度の計算は現実的な水準か。DFTを使用する1mHz on 50Hzの測定では技術的な課題となります。

 周波数スペクトル(複素数)の「回転」をどこまで精度良く求められるかが、周波数測定精度を決定してしまいます。次回は「複素ベクトルの回転の計算方法」について書きたいと思います。

一般的に知られる方法:スペクトルの実部・虚部から φ=arctan ( Im / Re ) と角度を求めておき、その角度の差分をとる以外にエレガントな方法があります。