FPGAを使用した1bit ADCの方法を調査

ADCを一切使用せず、FPGAのみを使用することでADCの代わりとすることができるという情報が流れてきたので、 少し調べてみました。

情報源としては2つ見つかりました。

どちらも、FPGAの外側にRCのみの回路を組むことで1bitのデータを取り込み、それを平均化することでビット数を稼いでいます。 また、LVDSのような差動入力ペアを使用して1,0を判定することは共通しています。上記XCell Journalの記事によれば、IBUFDSを使用すると、 1mVp-pの電位差があれば1,0を判定できるようです。

N側のピンの使い方が二つの記事では異なっています。XCell Journalの記事の方だと、N側は単純にP側とバイアスして同電位になるように設定し、 RCで低域通過フィルタを構成しているようです。 Latticeのドキュメントの方では、FPGAのシングルエンドピンから1,0を出力して、それをRCの低域通過フィルタを通してN側のピンに入力しています。 この方法は、ΔΣ型ADコンバータΔΣ変調で説明されているように、 誤差をフィードバックするということで、ΔΣ型ADCと同じ考え方のようです。

XCell Journalの記事では、240MHzで1,0をサンプリングし、NCOで発生させたsin,cosを直接乗算し、 それをCICしてサンプルレートを落としてFM復調まで行えたと書かれています。

Latticeのドキュメントは、キャプチャした1,0をCICに通すことで、ビット幅を稼いでいるようです。

機会があれば実際にZynqでどれくらいの性能が出るのか試してみたいですね。

comments powered by Disqus