Cosmo-Zのロックインアンプで位相を測る
ロックインアンプでは、被測定信号の振幅と位相を測ることができます。
今日は、Keysightの任意波形発生器で作った信号をFPGAで作ったロックインアンプで測り、FPGAで作ったロックインアンプの「位相測定性能」を評価しようとしています。
Keysightの任意波形発生器はSCPIコマンドの SOUR2:PHASE <deg> で正弦波の位相を変えることができます。Cosmo-ZはZYNQのLinuxで動く計測器なので、LinuxからSCPIコマンドを発行してKeysightの計測器を操作しつつ計測するというプログラムを作って測りました。
その結果です。
出力する正弦波の位相を0度から360度までずらしたときに、Cosmo-Zで測った位相は当然ながらのこぎり波状になります。
この波形がy=xからどれだけずれているかを示すと、
まぁ、このように正弦波の形になるわけです。
ファンクションジェネレータが出した波形の位相と、測定された波形の位相の差は多くとも0.04度程度であるということがわかったので、めっちゃ優秀だと言えます。
なぜ正弦波になるのかというと、ファンクションジェネレータの波形とCosmo-Zのクロックは同期していないので端っこのデータがどっちへ行くかとかで決まるのではないかと思いますが、絶対誤差が0.04度であれば大きな問題ではありません。
で、いろいろとパラメータを変えてみました。
次はファンクションジェネレータの出す振幅を半分にしてみたとき。
振幅を10mVにしたとき。
振幅を1mVにしたとき。
振幅が10分の1になると、位相誤差が10倍に増えていくのが分かります。
いろいろ試してみたところ周波数や積算回数には関係なく、ファンクションジェネレータの出す振幅だけが位相の誤差に関係しているようです。さて、一体なぜこういう現象が起きるのでしょう。
ADCで量子化する際の誤差なのか、Cosmo-Zの中での計算のアルゴリズムの問題なのか、atanの誤算の問題なのか、それともKeysightのファンクションジェネレータの問題なのか、まだわかりません。
| 固定リンク
コメント