デジタル時代の盲点・・・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」の分解能の限界と考えています。クロス積の計算では「桁落ち」が発生してしまうのです。