検索
特集

FPGAで作る任意波形発生器(3/4 ページ)

生物医学などの分野で用いられる機器に対しては、信号の周波数を正確かつ高精度に設定したいという要求がある。そうした用途に適用可能な任意周波数/波形発生器を実現するには、FPGAを利用すると便利である。本稿では、任意周波数発生器の基本原理やその実現方法、任意波形発生器への展開方法を具体例を基に示す。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

分解能とダイナミックレンジ

 続いて、出力周波数の分解能はどうなるのか考えてみる。すなわち、所望の周波数にどこまで一致させられるのかということだ。

 まず、2種類のカウント値ΔN1とΔN2を考える。これらの値によって、2種類の周波数f1とf2が次の2つの式のように決定される。


 ΔN1とΔN2の値の差は最小で1である。この差に対応するf1とf2の差は上の2つの式から次のように計算できる。

 これは以下のように変形できる。

 これらの式から、周波数の分解能は、入力クロックの周波数と位相アキュムレータのビット長によって決まることがわかる。

 それでは、周波数のダイナミックレンジ(周波数が変化する範囲)はどうなるだろうか。これについては、ΔNが取り得る値の範囲、すなわち1から2k−1の範囲がダイナミックレンジを決める。

 以上をまとめると、上に挙げた例で言えば、0.596Hzから10MHzまでの範囲の周波数を分解能0.596Hzで生成できるということである。

任意波形の生成

 ここまでで、任意の周波数(クロック)を得る方法はわかった。続いては、これを利用して、任意の波形を生成する方法について考えてみる。ここでは、心電図(ECG:electrocardiogram)シミュレーションに用いるような任意周波数発生器を例にとる。

 図2に示したのが、図1の任意周波数発生器を利用して構成した任意波形発生器である。このシステムでは、生成すべき目標波形の1周期分のデータをメモリーに格納しておく。この状態で、任意周波数発生器からのサンプリングクロックによって循環カウンタ(circular counter)が動作し、その出力によってメモリーアドレスが呼び出される。その結果、メモリーから各クロックごとに新しいデータがD-Aコンバータに送られ、アナログ出力電圧が更新されることで任意波形を得る仕組みである。

図2 任意波形発生器の基本構成
図2 任意波形発生器の基本構成 

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る