« 18bit AD変換ボードのサンプルアプリを更新 | トップページ | 「Cosmo-Z」のLinuxでネットワークが使えるようになった »

2014.10.27

AD360ボードでデータが取れるようになった

鋭意開発中の18bit 20ch AD変換ボード「AD360」でデータが取れるようになりました。

このAD360ボードはRX63NとSpartan-3Aを搭載しています。ADCのコントロールはFPGAで行い、データの処理はRXマイコンで行います。

Ad360_adc_1

FPGAは、ADCのデータをデコードしてBlockRAMで作ったFIFOに溜めます。FPGAは、RXマイコンの外部バス空間につながっていて、RXマイコンはFPGAのFIFOのステータスを見ながらデータを取得し、そのデータをSDRAMに溜めるという動作を行っています。

このADボードにはキャリブレーション機能というのがあって、入力をGNDに落としてそのときの電圧をオフセットとして引き算できるようになっています。オフセット補正後は、ほとんど0Vの電圧が記録されます。

Ad360_adc_2

平均値と標準偏差の計算もRXマイコンでやっています。

Ad360_adc_3

標準偏差はノイズレベルを表しますが、200~250μVと大きめの値が出ています。

それは、ボードの入力に換算した電圧だからです。このボードは±10Vの電圧を入力できるようにするため、途中で5分の1に分圧しています。ADCのノイズは40μV~50μV程度なのですが、入力に換算すると5倍しなければいけないので、200~250μVとして計算されてしまいます。

ADCのノイズ自体はどうにもならないのですが、ディジタルフィルタを作って何とかできないかなと思っています。

オフセット除去後の各チャネルの入力波形を見てみましょう。

Ad360_adc_4

ほぼ0V付近で推移しています。ギザギザしている1つ1つのレベルが1LSB(約77μV)なので、±2~3LSBの揺れでしょう。

最後に、ファンクションジェネレータで作った振幅約9.8Vの正弦波を入れてみます。

Ad360_adc_5_2

ちゃんと正弦波として表示されました。

ファンクションジェネレータで作った9.8Vppで1.5625kHzの正弦波を入れてみたところ、時間軸で見るとこんな感じですが、

Ad360_adc_6


FFTすると、1本の線となって見えました。

なぜ、1.5625kHzなのかというと、いま、サンプリング周波数が25kHzにしているので、25000/16が半整数になるからです。端数がでない周波数なのでファンクションジェネレータで作りやすいからです。こういう周波数を選ぶと窓関数を使わなくても鋭い周波数分解能が得られます。

(本当は25000/512×17、とか互いに素な値を選ぶのがよいのですが、ファンクションジェネレータがうまく合わせられない)

Ad360_adc_7

ざっと測ったところ、ひずみ率は-75dB程度でした。

ここで使っているファンクションジェネレータというのが、GWINSTEK社のSFG-2104で、ひずみ率は-55dBcなので、上のグラフが得られただけでも上出来です。

つまり、この高調波はADCボードのものではなく、ファンクションジェネレータから出ていると考えられます。

明日、会社に行ったら-100dBのオーディオアナライザで測ってみます。



|

« 18bit AD変換ボードのサンプルアプリを更新 | トップページ | 「Cosmo-Z」のLinuxでネットワークが使えるようになった »

コメント

コメントを書く



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




« 18bit AD変換ボードのサンプルアプリを更新 | トップページ | 「Cosmo-Z」のLinuxでネットワークが使えるようになった »