« Cosmo-Zのロックインアンプで位相を測る | トップページ | ZYNQのLinux上でbootgenを動かして、boot.binをセルフで書き換える »

2022.04.23

FPGAロックインアンプの誤差の原因は何?

FPGAで作るロックインアンプで、内部での演算が溢れないように積和計算の和の部分を48bitに拡張してみました。これによって周期が長い場合でもオーバーフローはしなくなり、最大で65536回の積算ができるようになりました。

下の図のようなノイズまみれの約1mVppの波形を測っても

Lockin_sample

5万回積算すれば0.4809~0.4812Vの間をいったりきたりして、計測値はだいたい3uVの範囲で落ち着くようになりました。

Lockin_04mv

それで昨日の実験の続きをすることにしました。

ファンクションジェネレータが出す正弦波の位相を1度ずつずらしていって、どのくらいの精度で位相を読み取れるかという検証を行います。

結論からいうと昨日の結果と同じで、振幅が大きいほうが誤差が少なく、振幅が1mVの時は最大で6°もの誤差が出てしまうという結果でした。この誤差はファンクションジェネレータで1mVの正弦波を作って測っても、ファンクションジェネレータで1Vの正弦波を作ってアッテネータで1000分の1に落としても、振幅が1mVならば誤差は6°という決まった値となっていました。

Phase_err_1

Phase_err_2_20220424184401

なぜこうなるのか謎です。

 

 

 

 

|

« Cosmo-Zのロックインアンプで位相を測る | トップページ | ZYNQのLinux上でbootgenを動かして、boot.binをセルフで書き換える »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Cosmo-Zのロックインアンプで位相を測る | トップページ | ZYNQのLinux上でbootgenを動かして、boot.binをセルフで書き換える »