• 本当は、田舎に庵を建てて隠遁生活したいけど、先立つものも無いので自宅で..。

AD9850モジュールの使い方

AD9850の使い方は、ネット上にたくさんあるので今更だけど、整理するために書いておく。

AD9850には、データをパラレルとシリアルどちらでも送れる。 今回は、高速で送る必要がないのと、serialの方が配線が少なくなるのでserial転送を使う。

AD9850モジュールのJ1をショートすると、強制的にserial転送に設定される。

送るデータは40bit。 

最初の32bitが周波数のデータで、fdata = fout*2^32/MCLKで算出する。 今回使うモジュールのMCLKは125MHzなので、fdata = 34.35973837*foutで求める。
33bit,34bitは工場出荷時の検査用なので、必ず0にする。
35bitは、パワーダウン設定用。 今回は使わないので0。
36bit~40bitは、位相設定用。 今回は使わないので0。
この40bitのデータを2進数にして、下位ビットから送信する。

各信号は、左図の通り。

AD9850のシリアル転送のタイミングの情報がデータシートには無いようだけど、たぶんパラレル転送のタイミングと同じだろうし、FT232RLのBit Bangモードの転送速度が9800baudの時はusオーダーであるのに対し、AD9850のタイミングは、nsオーダーなのでほぼ考慮しなくてよさそう。

FT232RLのbit bangモードでは、4bit/wordのデータを転送する。 作製したボードでは、D0=F_UP(FQ_UD)、D1=WCLK(W_CLK)、D2=DATA、D3=RST(RESET)に割り付けてある。

転送したいデータは、DATA=1、DATA=0、F_UP=1、RST=1だからそれぞれについて転送するwordを書き出すと、次のような怪しい表になる。

一つのデータに対して3word必要で、それぞれのwordは縦に読むと解る。

つまり40bitのシリアルデータを送るのに、データの40*3wordとF_UPの3 wordが必要になる。

というわけで、早速コーディングしてみる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA