Cosmo-Zのロックインアンプを復活
Cosmo-Zには昔、ロックインアンプの機能が備わっていました。
ここ数年のバージョンアップにより、ロックインアンプ機能は失われていましたが、復活させることができましたので、その動作例を紹介します。
次の図は正弦波が入力されている様子です。
この状態でコンソールから
/cosmoz.elf lockin iter=1000
/cosmoz.elf lockin
とコマンドを打つと、ロックインアンプが動作して1000周期分の積和を取るようになります。
その結果、下の図のように表示されます。
これは、CH1の電圧が0.415053Vで、位相が35.483度であることを示しています。
どのくらい安定しているかを調べるため、20回動作させてCH1の振幅だけ見るようにしてみました。
i=0; while [ $i -ne 20 ]; do /cosmoz.elf lockin | grep -e Ampl1 ; i=$(expr 1 + $i); done
小数点以下4桁は安定していて5桁目も8~9でほぼ一定しています。
このロックインアンプの動作は、任意の入力チャネルの信号を見て周期を測り、同じ周期のSINとCOSをFPGAの中で作り出して掛け算し、それをN周期分平均するという動作をしています。
下の波形は茶色が入力波形、緑が検出した位相ゼロの点と位相が180°以上かの区別、青が三角関数生成用の位相(少しずれる)を示しています。
このような計算をFPGA内で行い、また、任意の長さの周期の分平均化できます。
| 固定リンク
コメント