guruguru123’s diary

かなり雑な作業日記です。

ArduinoでAD9851へチューニングワードの書き込み

DDS-ICであるAD9851の周波数と位相が制御された正弦波発生器として用いるためにArdinoでチューニングワードを書き込みたい。そこで、Arduinoのデジタル出力ピンを3つ用いて、それぞれD7,W_CLK,FQ_UDに信号を送る。Arduinoを用いるにあたって、より周波数の変更を視覚的にしやすいようにLabVIEWforArduinoでArduinoに書き込んでいく。

まずひとつの周波数を指定し、それをAD9851に書き込んむプログラムを作成した。LabVIEWプログラミングに慣れていないため、わかりづらく、見づらくなってしまった。今回はデジタル4ピンをFQ_UD、7ピンをW_CLK,8ピンをD7に出力するとして用いた。周波数設定は、フロントパネルの出力周波数とラベルがつけられている数値制御器に単位Hzで入力。設定ワードは設定ワード(8bit)とラベルがついているブール配列から指定する。あらかじめ周波数設定ワードが32bit、設定ワードが8bitとわかっているため、ブロックダイアグラムにあるように、ループ回数(0~31:周波数,32~39:設定)によって周波数の配列を読み込むのか、設定の配列を読み込むのか切り替えた。同様に、W_CLKも40bit書き込んだら(39ループ後)止まるようにした。FQ_UDは最後に立ち上がればよいのでD7とW_CLKが0になってから(40ループ目)に一度だけパルス入力される。遅延が入っているのは、正しく出力されているのか確認するためLEDをつないで確認したためである。

例として10MHzを出力としたとき周波数設定ワード32bitは

'00001110001110001110001110001110'

となる。設定ワード8bitは'00000001'とした。LEDで確認したところ、40bit正しく書き込むことができた。

次はこれを実際にAD9851に出力することと、LabVIEWプログラムをより簡潔にすること、周波数を実行したまま変えられるようにすることをしていきたい。

f:id:guruguru123:20150730162216p:plain

f:id:guruguru123:20150730162218p:plain

f:id:guruguru123:20150730162220p:plain