AD9833やAD9851など使えるDDS7選と使い方

AD9833

低い周波数から高い周波数まで出力レベルが一定で歪のない正弦波が、ちょっ~とだけ欲しいだけなんすっけど~・・・

DDSは送信機のキャリア発振や受信機の局部発振としてVCOの代わりに、またオーディオのマスター信号生成などファンクションジェネレータの端くれ的な使い方として、電子工作の間でも応用範囲は広いです。

今やDDSには多くの品種がありますが、実験用などではなく電子機器向けのデバイスとして開発されているため、電子工作派には豪華すぎたり扱いにくいのも多いですよね。

そんな中から、電子工作派にも扱いやすいDDSをセレクトし、その特徴や使い方をサクッとご紹介します。

DDSで正弦波を作る方法

正弦波生成の原理

DDSで正弦波を作る原理。数値形式で表されたSIN波のデータを、DACでアナログに変換して出力します。数学的に計算された値に基づくので理論的には歪はありません。

DDS波形の高調波の原因
でも連続的な信号ではないので、こんな感じでガタガタな形をしています。これが高調波成分になります。

この高調波成分は、マスタークロックと出力周波数の比が小さければ小さいほど大きくなります。どんな成分がどのくらい出るかは後述

DDS波形の高調波のレベル差

このガタガタは、ローパスフィルタを通すとなめらかになります。

理論的にはマスタークロックの1/2の正弦波がDDSから出力できますが、これだと方形波になるのでローパスフィルタが大変!現実的には、せめて1/4以上の比率で考えた方が良さそうですね。

例えば、クロックが20MHzなら作れる正弦波は5MHz以下を目安にします。

なお、この1/2という最低限の周波数は「ナイキスト周波数」と呼ばれていて、サンプリングの話になると必ず登場する有名な定理です。
 
AD9837 4MHHzの出力波形AD9837で16.384MHzから4MHzの正弦波を出力した実際の波形。「これって正弦波?」って思うような形してますが、これでもローパスフィルタを通すとちゃんと正弦波になります。

AD9833 1KHzの出力波形AD9833で25MHzから1KHzを出力した波形。こうなると普通フィルタは不要です。

基本の構成

DDSチップ単品だけではなく、周りのお膳立ても必要です。

DDSの使い方基本構成

必要な手順

クロックソースを用意する

SG5032CAN 25.000000M-TJGA3普通はオシレータを使います。各DDSで最大周波数が決まっているのでそれ以下の周波数にします。(普通は最大で使う)
また、クロック周波数で次のことが決まります。

・高いほど高調波成分が減る。
・低いほど指定可能な出力周波数の分解能が上がる。

なお、保証外になりますが多少のオーバークロック(120%とか)でも一応動作します。

DDSとその周辺回路を用意する

デカップリングやパスコンを配置するのがメインなのでわりと簡単です。

必要に応じてローパスフィルタを用意する

DDSの出力から高調波成分を取り除きます。無視できる時は不要です。

マイコンとその周辺回路を用意する

PICなどのマイコンやarduinoなどを用意して、主にシリアルで通信します。

DDSを制御するプログラムを実行させる

DDSに対して出力周波数などを指示します。レジスタに値を設定するだけです。

電子工作で使えるDDS

使えるDDSチップ

DDSといえば今のところアナログデバイセズの独壇場みたいになってます。他のメーカーのもないこともないですが、使いにくいし入手性も悪いですね。

現在(2018年2月)アナデバから出ているDDSは31品種で、電子工作でよく使われたり使えそうなものは7品種、それ以外は高機能多ピンものとかになります。
ダイレクト・デジタル・シンセサイザ | アナログ・デバイセズ

電子工作で使えるDDS(DACは全て10bit)
製品番号ClockMPPackage備考
AD983325MHz×10pin
MSOP
周辺回路が簡単。
現在のところ最も扱いやすい。
AD983716MHz×10pin
LFCSP
AD9833と基本は同じで
ClockとPackageだけが異なる。
AD9851180MHz28pin
SSOP
6逓倍のマルチプライヤを内蔵、
30MHzのクロック入力で済む。
AD9850125MHz×28pin
SSOP
AD9851の前身。
マルチプライヤがなく低Clock。
AD983450MHz×20pin
TSSOP
電子工作でも良く使われる。
少し前の品種。
AD983550MHz×16pin
TSSOP
AD9832のクロックアップ版。
その代わり電源は5Vのみ。
AD983225MHz×16pin
TSSOP
少し前の品種。
基本的でわりと扱いやすい。

DACは全て10ビットなのでキレイな波形が作れます。12ビットや14ビットの品種もありますが多ピンで面倒。高性能なファンクション・ジェネレータなどを作るわけでもない限り普通はそこまで要らないでしょう。

オススメなのは、わりと新しいAD9833、ハンダ付けしやすいAD9832、もっと高周波ならAD9851あたり。古株のAD9834も電子工作の間では良く使われているようです。

アナデバのADIsimDDSツールがこれまた便利

アナデバでは、これらのDDSを評価・設計するためのWebベースのツールを公開しているんですが、これがかなり便利なので紹介しておきます。

ADIsimDDSADIsimDDS
品種を選んで、目的の周波数を入れると、レジスタへの設定値を計算してくれます。さらに、不要な高調波のスペクトラムを表示してくれたり、フィルタを使った時のシミュレーションまでしてくれるので設計が楽になります。

変換基板

変換基板があるとプリント基板を自作しなくてもチップ単体で使えます。

SODIAL(R) 27xSO / SSOP / TSSOP / DIP 16 DIP16アダプターSSOP/TSSOP 16 変換基板
SOとSSOPとTSSOPとDIPの16ピンが変換できる安価な変換基板。
20個セット SOP SSOP TSSOP SOIC28 ~ DIP アダプター PCBボード コンバーター 両サイド SSOP/TSSOP 28 変換基板
SOとSSOPとTSSOPとSOICとDIPの28ピンが変換できる変換基板。20ピンでもOK。
 
RoHS  REACH
MSOP(10ピン 0.5mmピッチ)-DIP化変換基板MSOP 10 変換基板
MSOPとDIPの10ピンが変換できる変換基板。5枚入りです。

より詳しく⇒プリント基板の自作!感光基板を使った作り方で簡単製作

DDSモジュール

DDSチップとオシレータやパスコンなど、基本的な回路が小さな基板上に組み込まれているものです。ピンヘッダがついているのでブレッドボードに刺し、PICやarduinoを使って実験とかもできます。

ただし、これらの基本的モジュールにはちゃんとしたローパスフィルタが付いておらず、高い周波数を出力すると高調波が目立って出てきますので心得ておきましょう。

GAOHOU AD9833 DDS信号発生器モジュールAD9833 DDSモジュール
チップ単品で買うより安いお得なAD9833モジュール。25MHzオシレータを内蔵しているので後はマイコンをつなぐのみ。
AD9833 DDS信号発生器モジュールAD9833 DDSモジュール
基本回路がしっかり組み込まれたAD9833モジュールで電源LEDも付いています。出力にはSMAコネクタを取り付けられます。
ILS - AD9851 DDS Signal Generator Module 2 Sin Wave(0-70MHz) And 2 Square Wave(0-1MHz)AD9851 DDSモジュール
AD9851の機能を試せるように作られているモジュール。30MHzの発振器が付いているので6逓倍した180MHzで動かせます。
Fenteer DDS AD9850信号発生器モジュールテスト装置 正弦波0-40MHzDDS信号発生器AD9850 DDSモジュール
AD9850の機能を試せるように作られているモジュール。3種の波形が出力可能。125MHzの発振器と電源LED付きです。
AD9834 小型DDSモジュールキットAD9834 DDSモジュールキット
AD9834のモジュールキット。キットなのでハンダ付けする必要がありますが、事前に詳しい情報が得られるので安心です。

上の一覧表にあってここにないDDSのモジュールは、販売されていなかったり販売終了になっていて、今のところ手軽に買えるようなものは無いようです。

AD9833 DDSモジュールの使用例

上で紹介している AD9833 モジュール をブレボで使う例です。

AD9833モジュール使用回路図

回路図はこれだけです。モジュールにはパスコンも含めて基本パーツが実装されているので、ちょっと動かすだけなら追加の部品は不要。必要に応じてフィルタを追加します。

この例では、PICに PIC12F1822 を使っていますが、他のPICでも使えます。

周波数設定のソースはこんな感じ。設定値は後述の計算式で求めますが、ADIsimDDSを利用すると簡単です。完全なソースはこの main.c のみ。

 
AD9833モジュールのテスト中電源電圧は2.3Vから5.5まで使えて、どの電圧でも600mVppの正弦波を出力します。

3.3Vの時の消費電流は10mAでした。

各DDSの特徴と使い方

使い方としてはそんなに大差はなく、どれも似たような感じです。
※こちらで掲載する内容は参考情報です。正式にはメーカーの公式情報でご確認ください。

AD9833の特徴と使い方

AD9833ピン配置図・パッケージ:10ピンMSOP
・電源電圧:2.3~5.5V
データシート

今のところ最もシンプルで扱いやすいDDS。ピン数は10ピンと、DDSの中では最も少ピンで、0.5mmピッチですがMSOPパッケージなので手ハンダもできます。
最大25MHzのクロックを入力可能。
サイン波/三角波/方形波が出力可能です。
マイコンとの通信は3線式シリアル(SPI)です。
AD9837やAD9834とほぼ同じレジスタ設定値を持ちます。
参考回路

AD9833参考回路図
周辺回路は基本的にパスコンだけ。
VOUT端子に入っている22pFのコンデンサは、AD9833の出力抵抗(約200Ω)を利用したローパスフィルタとなっており、カットオフ周波数36MHzで不要な高調波成分を取り除きます。ただ、電源OFF時にチップ側への放電があるので、あまり大きな容量にしてはいけません。ちなみに、評価ボードの回路では0.1uFと書かれていますが誤りです。

ポイント

通信ワードは16ビット単位です。DDSとの通信プログラム-3線式シリアル

AD9833は4つのレジスタを持っていて、どれに対する書き込みかをD15とD14ビットで指定します。

AD9833のレジスタ
D15D14レジスタ
00コントロールレジスタ
01周波数レジスタ0(28ビット)
10周波数レジスタ1(28ビット)
11位相レジスタ0/1(D13で0か1を指定)

コントロールレジスタのRESETビットを操作することで、リセット状態と動作状態を切り替えます。パワーオン直後はまず、RESETビットを「1」にした値をコントロールレジスタに書き込みます。その後、周波数レジスタに目的の設定値を書き込んで、RESETビットを「0」にした値をコントロールに書き込むと動作を開始します。

周波数レジスタは2つありますが、好きな方に切り替えて使います。無理に両方使わずとも、片方だけ使っても良いです。

周波数レジスタにの設定値は、下記の式で計算します。
AD9833周波数レジスタ計算式

位相レジスタに値を書き込むことで位相をシフトすることができます。位相の操作が必要ない場合には設定する必要はありません。

AD9837の特徴と使い方

AD9837ピン配置図・パッケージ:10ピンLFCSP
・電源電圧:2.3~5.5V
データシート

ピン数は10ピンでDDSの中では最も少ピンですが、裏面にパッド付きのLFCSPパッケージなので手ハンダが難しいです。
最大25MHzのクロックを入力可能。
マイコンとの通信は3線式シリアル(SPI)です。
サイン波/三角波/方形波が出力可能です。
AD9833やAD9834とほぼ同じレジスタ設定値を持ちます。
AD9833とクロック周波数やパッケージが違うだけで同じように使えます。
参考回路

AD9837参考回路図
周辺回路は基本的にパスコンだけ。
VOUT端子に入っている22pFのコンデンサは、AD9837の出力抵抗(約200Ω)を利用したローパスフィルタとなっており、カットオフ周波数36MHzで不要な高調波成分を取り除きます。ただ、電源OFF時にチップ側への放電があるので、あまり大きな容量にしてはいけません。ちなみに、評価ボードの回路では0.1uFと書かれていますが誤りです。

ポイント

通信ワードは16ビット単位です。DDSとの通信プログラム-3線式シリアル

AD9837は4つのレジスタを持っていて、どれに対する書き込みかをD15とD14ビットで指定します。

AD9837のレジスタ
D15D14レジスタ
00コントロールレジスタ
01周波数レジスタ0(28ビット)
10周波数レジスタ1(28ビット)
11位相レジスタ0/1(D13で0か1を指定)

コントロールレジスタのRESETビットを操作することで、リセット状態と動作状態を切り替えます。パワーオン直後はまず、RESETビットを「1」にした値をコントロールレジスタに書き込みます。その後、周波数レジスタに目的の設定値を書き込んで、RESETビットを「0」にした値をコントロールに書き込むと動作を開始します。

周波数レジスタは2つありますが、好きな方に切り替えて使います。無理に両方使わずとも、片方だけ使っても良いです。

周波数レジスタにの設定値は、下記の式で計算します。
AD9837周波数レジスタ計算式

位相レジスタに値を書き込むことで位相をシフトすることができます。位相の操作が必要ない場合には設定する必要はありません。

AD9837のハンダ付け方法

AD9837の評価基板を自作した時のハンダ付け方法を紹介します。裏面にエクスポーズドパッドが付いているので難易度は高いですが、一応ちゃんとできます。

自作のAD9837評価基板自作のAD9837評価基板。
練習のためのパターンも一応用意しましたが、一発でできたので使いませんでした。

エクスポーズドパッドに予備ハンダをする裏面にあるエクスポーズドパッドをグランドに接続する必要があるんですが、これが厄介。
まず、これに予備ハンダをします。

AD9837のプリント基板パターン基板側にも予備ハンダをしておきます。盛りすぎるとショートの原因になるので注意。
ちょっとだけフラックスを塗っておくと、AD9837を接着しておけるのでやりやすくなります。

エクスポーズドパッドのハンダ付け十分にコテを押し当ててハンダを溶かし、ピンセットで上から押さえつけるとパッドとその下のパターンがハンダ付けされます。ポイントは十分に加熱すること。

AD9837のハンダ付け 横から見たところ横から見たところです。
端子とパターンがズレてないか確認。

AD9837のハンダ付け ピン全体ピンのハンダ付けは比較的カンタンです。

AD9837のハンダ付け完了周辺のパスコンも付けて完了。

AD9851の特徴と使い方

AD9851ピン配置図・パッケージ:28ピンSSOP
・電源電圧:2.7~5.25V
データシート

ピン数は28ピンですが、使わないピンが多いため周辺回路はカンタンです。
最大クロックは電源電圧により、5Vでは180MHz、3.3Vでは125MHz、2.7Vでは100MHz となっています。
6逓倍のマルチプライヤを内蔵しているため、入力クロックは1/6の周波数でOK。
サイン波のみが出力可能ですが、方形波が欲しい時のためにコンパレータ回路を内蔵しています。不要な時は使いません。
マイコンとの通信は、8ビットパラレルか、オリジナルのシリアル方式が選べます。
AD9850とはマルチプライヤの有無と最大クロックと電圧範囲が異なるだけでピン互換ですが、AD9850とは違ってDACBPピンへのパスコンの接続が指示されています。
参考回路

AD9851参考回路図
この回路ではシリアル通信を想定しており、データシートでの指示通り、D0=1、D1=1、D2=0、D3~D6は未使用としています。

RSETに接続する抵抗は最大出力電流を決定します(最大30mA以内)。最大出力電圧は、その電流値と負荷抵抗値を掛け合わせて求まります。
また、IOUTとIOUTBに接続する負荷抵抗は、なるべく同じになるようにします。

コンパレータを使わない時は、入力をVDD/GNDへ接続して暴れないようにします。

ポイント

通信ワードは40ビット単位です。DDSとの通信プログラム-ローディング方式

電源投入とマスターリセット直後はパラレルモードで起動するため、シリアルモードで使う場合は、まずシリアルモードへ移行させるための手順が必要です。

1. マスターリセット(5クロックサイクル以上)を行う。

AD9851 マスター・リセットのタイミング・シーケンス
2. xxxxx011(1バイト)を送信する。

AD9851  シリアル・ロードのイネーブル・シーケンス
以降、40ビットのシリアルデータを送信すると設定通りに動いてくれます。

AD9851  シリアル・ロードでの周波数/位相更新シーケンス

AD9851 40ビットのシリアルデータの内訳
W0~W31周波数設定値(下位ビットから)
W321にすると6逓倍マルチプライヤ有効
W33常に0
W341にするとパワーダウンモードへ移行
W35~W39位相設定値(不要なら0)

周波数の設定値は、下記の式で計算します。
AD9851周波数レジスタ計算式
位相設定値により位相をシフトすることができます。位相の操作が必要ない場合には設定する必要はありません。

AD9850の特徴と使い方

AD9850ピン配置図・パッケージ:28ピンSSOP
・電源電圧:3.3~5V
データシート

ピン数は28ピンですが、使わないピンが多いため周辺回路はカンタンです。
最大クロックは電源電圧により、5Vでは125MHz、3.3Vでは110MHzです。
サイン波のみが出力可能ですが、方形波が欲しい時のためにコンパレータ回路を内蔵しています。不要な時は使いません。
マイコンとの通信は8ビットパラレルか、オリジナルのシリアル方式が選べます。
AD9851とはマルチプライヤの有無と最大クロックと電圧範囲が異なるだけでピン互換ですが、AD9851とは違ってDACBLピンはNCです。
参考回路

AD9850参考回路図
この回路ではシリアル通信を想定しており、データシートでの指示通り、D0=1、D1=1、D2=0、D3~D6は未使用としています。

RSETに接続する抵抗は最大出力電流を決定します(最大30mA以内)。最大出力電圧は、その電流値と負荷抵抗値を掛け合わせて求まります。
また、IOUTとIOUTBに接続する負荷抵抗は、なるべく同じになるようにします。

コンパレータを使わない時は、入力をVDD/GNDへ接続して暴れないようにします。

ポイント

通信ワードは40ビット単位です。DDSとの通信プログラム-ローディング方式

電源投入とマスターリセット直後はパラレルモードで起動するため、シリアルモードで使う場合は、まずシリアルモードへ移行させるための手順が必要です。

1. マスターリセット(5クロックサイクル以上)を行う。

AD9850 マスター・リセットのタイミング・シーケンス
2. xxxxx011(1バイト)を送信する。

AD9850 シリアル・ロードのイネーブル・シーケンス
以降、40ビットのシリアルデータを送信すると設定通りに動いてくれます。

AD9850 シリアル・ロードでの周波数/位相更新シーケンス

AD9850 40ビットのシリアルデータの内訳
W0~W31周波数設定値(下位ビットから)
W32常に0
W33常に0
W341にするとパワーダウンモードへ移行
W35~W39位相設定値(不要なら0)

周波数の設定値は、下記の式で計算します。
AD9850周波数レジスタ計算式
位相設定値により位相をシフトすることができます。位相の操作が必要ない場合には設定する必要はありません。

AD9834の特徴と使い方

AD9834ピン配置図・パッケージ:20ピンTSSOP
・電源電圧:2.3~5.5V
データシート

機能のわりにはピン数が多いDDSですが、必須でないピンが多いです。
最大50MHzのクロックを入力可能。
サイン波と三角波が出力可能ですが、方形波が欲しい時のためにコンパレータ回路を内蔵しています。不要な時は使いません。
周波数レジスタの選択など、一部の操作がハードウェア的にもできます。
マイコンとの通信は3線式シリアル(SPI)です。
AD9833やAD9837とほぼ同じレジスタ設定値を持ちますが、両者にはないSIGNPIBとPIN/SW制御ビットを持っています。
参考回路

AD9834参考回路図
FS ADJUSTに接続する抵抗は最大出力電流を決定します(最大4mA以内)。最大出力電圧は、その電流値と負荷抵抗値を掛け合わせて求まります。
また、IOUTとIOUTBに接続する負荷抵抗は、なるべく同じになるようにします。

使わない入力ピンはGNDへ接続して暴れないようにします。

ポイント

通信ワードは16ビット単位です。DDSとの通信プログラム-3線式シリアル

AD9834は4つのレジスタを持っていて、どれに対する書き込みかをD15とD14ビットで指定します。

AD9834のレジスタ
D15D14レジスタ
00コントロールレジスタ
01周波数レジスタ0(28ビット)
10周波数レジスタ1(28ビット)
11位相レジスタ0/1(D13で0か1を指定)

コントロールレジスタのPIN/SWビットを「1」にすることにより、RESETピン、SLEEPピン、FSELECTピン、PSELECTピンが有効になり、コントロールレジスタの設定より優先されます。これにより外部機器からの信号入力で操作することが可能になります。

パワーオン直後はまず、RESETビットを「1」にした値をコントロールレジスタに書き込みます。その後、周波数レジスタに目的の設定値を書き込んで、リセット状態を解除すると動作を開始します。

周波数レジスタは2つありますが、好きな方に切り替えて使います。無理に両方使わずとも、片方だけ使っても良いです。

周波数レジスタにの設定値は、下記の式で計算します。
AD9834周波数レジスタ計算式

位相レジスタに値を書き込むことで位相をシフトすることができます。位相の操作が必要ない場合には設定する必要はありません。

AD9835の特徴と使い方

AD9835ピン配置図・パッケージ:16ピンTSSOP
・電源電圧:5V
データシート
アプリケーションノート

少し前の世代のベーシックタイプで、最大50MHzのクロックを入力可能です。
サイン波のみが出力可能です。
周波数レジスタと位相レジスタの選択がハードウェア的にもできます。
マイコンとの通信は3線式シリアル(SPI)です。
AD9832のクロックアップ版で、電源は5Vのみですが同じように使えます。
参考回路

AD9835参考回路図
FS ADJUSTに接続する抵抗は最大出力電流を決定します。最大出力電圧は、その電流値と負荷抵抗値を掛け合わせて求まります。

IOUT端子に入っている47pFのコンデンサは、AD9835の出力等価抵抗を利用したローパスフィルタとなっており、不要な高調波成分を取り除きます。ただ、電源OFF時にチップ側への放電があるので、あまり大きな容量にしてはいけません。ちなみに、評価ボードの回路では0.1uFと書かれていますが誤りです。

使わない入力ピンはGNDへ接続して暴れないようにします。

ポイント

通信ワードは16ビット単位です。DDSとの通信プログラム-3線式シリアル

AD9835に対する設定は、コマンドビット(D15~D12)で種類を指定し、続くビット(D11~D0)にレジスタのアドレスや内容を記述します。

AD9835 16ビットデータの内訳
D15~D12コマンドビット(C3~C0)
D11~D8レジスタのアドレス(A3~A0)
D7~D0データ

パワーオン直後は、まずリセットコマンドを発行します。その後周波数レジスタ設定コマンドを発行し、リセットコマンドでリセット状態から復帰させると動作を開始します。

AD9832は6つのレジスタを持っています。

AD9835のレジスタ
レジスタ
周波数レジスタ0(32ビット)
周波数レジスタ1(32ビット)
位相レジスタ0(12ビット)
位相レジスタ1(12ビット)
位相レジスタ2(12ビット)
位相レジスタ3(12ビット)

周波数レジスタは2つありますが、好きな方に切り替えて使います。無理に両方使わずとも、片方だけ使っても良いです。

周波数レジスタにの設定値は、下記の式で計算します。
AD9835周波数レジスタ計算式

位相レジスタに値を書き込むことで位相をシフトすることができます。位相の操作が必要ない場合には設定する必要はありません。

AD9832の特徴と使い方

AD9832ピン配置図・パッケージ:16ピンTSSOP
・電源電圧:3~5.5V
データシート
アプリケーションノート

少し前の世代のベーシックタイプで、最大25MHzのクロックを入力可能です。
サイン波のみが出力可能です。
周波数レジスタと位相レジスタの選択がハードウェア的にもできます。
マイコンとの通信は3線式シリアル(SPI)です。
クロックアップ版のAD9835があります。
参考回路

AD9832参考回路図
FS ADJUSTに接続する抵抗は最大出力電流を決定します。最大出力電圧は、その電流値と負荷抵抗値を掛け合わせて求まります。

IOUT端子に入っている47pFのコンデンサは、AD9832の出力等価抵抗を利用したローパスフィルタとなっており、不要な高調波成分を取り除きます。ただ、電源OFF時にチップ側への放電があるので、あまり大きな容量にしてはいけません。ちなみに、評価ボードの回路では0.1uFと書かれていますが誤りです。

使わない入力ピンはGNDへ接続して暴れないようにします。

ポイント

通信ワードは16ビット単位です。DDSとの通信プログラム-3線式シリアル

AD9832に対する設定は、コマンドビット(D15~D12)で種類を指定し、続くビット(D11~D0)にレジスタのアドレスや内容を記述します。

AD9832 16ビットデータの内訳
D15~D12コマンドビット(C3~C0)
D11~D8レジスタのアドレス(A3~A0)
D7~D0データ

パワーオン直後は、まずリセットコマンドを発行します。その後周波数レジスタ設定コマンドを発行し、リセットコマンドでリセット状態から復帰させると動作を開始します。

AD9832は6つのレジスタを持っています。

AD9832のレジスタ
レジスタ
周波数レジスタ0(32ビット)
周波数レジスタ1(32ビット)
位相レジスタ0(12ビット)
位相レジスタ1(12ビット)
位相レジスタ2(12ビット)
位相レジスタ3(12ビット)

周波数レジスタは2つありますが、好きな方に切り替えて使います。無理に両方使わずとも、片方だけ使っても良いです。

周波数レジスタにの設定値は、下記の式で計算します。
AD9832周波数レジスタ計算式

位相レジスタに値を書き込むことで位相をシフトすることができます。位相の操作が必要ない場合には設定する必要はありません。

DDSとの通信プログラム

DDSへのシリアルデータの送信プログラム例を示します。PICのC言語ソースですが、他の環境でも応用できるでしょう。

ここで紹介しているDDSとの通信方法は二種類しかなく、次のどちらかになります。

3線式シリアル(SPI)

対象DDS:AD9833/AD9837/AD9834/AD9835/AD9832

通信ワードは16ビット単位です。下図のようにFSYNCをローにした後、上位ビットから送出、SCLKの立ち下がりでSDATAがサンプルされます。

DDS シリアル・タイミング

PICなどのペリフェラル(内蔵SPIモジュール)を使っても良いですし、GPIOを手動で操作してもOKです。

以下は、GPIOを操作する例です。

ここで紹介しているDDSのSPIはどれも高速(数十nsレベル以下)です。PIC32を48MHzで駆動し1サイクルで命令を実行するような場合を除いて、多くはPIC側でウェイトを取る必要はないでしょう。不安なら、要所にNOP命令を一つ入れておけば大丈夫です。

非同期ローディング

対象DDS:AD9851/AD9850

通信ワードは40ビット単位です。W_CLKの立ち上がりでDATAがサンプルされ、ローディング信号(FQ_UD)の立ち上がりで内部レジスタに転送されます。

シリアル・ロードでの周波数/位相更新シーケンス

マイコンのペリフェラルでやれないこともないですが、普通はGPIOを使います。

SPIと同様こちらも高速に動作(10ns未満)するので、通常PIC側でウェイトを取る必要はないでしょう。

DDS後のローパスフィルタ

下の図はAD9851のデータシートに載っているもので、DDSの出力には多くの成分の高調波成分(赤線)が含まれていることが示されています。

 サンプルされたSin(X)/X信号の出力スペクトル
一番多い成分は Fc-Fo と Fc+Fo の成分で、両者の周波数が近いと高調波成分のレベルも高くなります。逆に離れていると Fc✕N に近くなりレベルも低くなります。

高調波成分が少ない場合

マスタークロックと出力の周波数の差が大きい場合は、高調波成分も少なく離れているので、ローパスフィルタは不要か、一次CRで十分なケースがほとんどでしょう。

一次CRローパスフィルタ●一次CRローパスフィルタ
入出力インピーダンスに注意。

CR 1次ローパスフィルタの計算

この回路のカットオフ周波数は入力先の出力抵抗の影響も受けるので、インピーダンスの低い相手に接続する必要があります。その点、DDSの出力抵抗は一般に数百Ωと低い方なのであまり気にする必要はありません。その10倍以上、例えば4.7Kとかで大丈夫です。

ただし、今度は出力先の入力抵抗に注意が必要。Rとの分圧により出力電圧が下がってしまうので、相手の入力抵抗が低い場合は、トランジスタのエミッタフォロアやオペアンプのボルテージフォロアで応援しましょう。

高調波成分が多い場合

マスタークロックと出力の周波数の差が小さくなればなるほど高調波成分も多くなります。また「後段には絶対ノイズを入れるな!」的な回路でも気を使う必要がありますね。

出力先の入力インピーダンスが高い場合は、上のCRのローパスフィルタの段数を増やしていくだけで良いケースもあります。

二次CRローパスフィルタ●二次CRローパスフィルタ
特に信号レベルの低下に注意。

2次CRフィルタ計算ツール

また、コイルとコンデンサを使ったLRCフィルタやその多段型も有効ですが、共振によるピークや磁界の発生に注意が必要な場合もあります。

LCRローパスフィルタ●LCRローパスフィルタ
共振と磁界に注意。

LCR 2次ローパスフィルタ①の計算

コイル無しでもっとシャープに高調波成分を取り除きたいときや、出力先のインピーダンスが低い場合には、オペアンプを使ったアクティブフィルタを使います。

アクティブフィルタにはいろいろ種類がありますが、代表的なものにサレンキー型(正帰還型)や多重帰還型があります。計算方法は複雑なので普通は計算ツールを使います。

サレンキー型LPF●サレンキー型LPF
・部品定数がシビアになりにくい。
・オペアンプ性能への依存性が低い。
・超高域で漏れがある。

オペアンプ正帰還型ローパス・フィルタ計算ツール

多重帰還型LPF●多重帰還型LPF
・部品定数がシビアになりやすい。
・オペアンプ性能への依存性が高い。
・超高域の漏れが少ない。

オペアンプ多重帰還型ローパス・フィルタ計算ツール
 
もっと色々できるツールとして、テキサス・インスツルメンツ社の「FilterPro」という無料のWindowsアプリがあるのですが、これが結構オススメ。

FilterProスクリーンショットただしこのアプリは公開終了予定。現在は非推奨になっていて、2010年の最終版が2018年現在でもダウンロードできますが、いつ消えるか分かりません。今のうちダウンロードしておきましょう。(ユーザー登録が必要です)

※確か日本語のページからはDownloadできなかったような…

WEBENCH Active Filter Designer

ローパスフィルタの例

NJM2137Dという秋月で¥100で売っている200MHz広帯域オペアンプを使って、サレンキー型ローパスフィルタを試しました。AD9833の出力につないで効果を確かめます。

サレンキー型LPFのテスト

一段でも良いのですが、オペアンプが余るので二段にしてみました。

されんキー型ローパスフィルタの実験実験用に作ったので関係ない部品もあります。

AD9833に供給するMCLKは16.384MHz、出力は最大2MHz程度の正弦波を想定してますが、可聴域のような低周波でも同様です。

部品定数はFilterProを使って、次の条件で設計しました。

  • フィルタタイプ:SallenKey
  • カットオフ周波数:3MHz
  • フィルタ応答:Butterworth
  • ゲイン:x1

16MHzから2MHzの正弦波を生成AD9833の出力(2MHz)

16MHzから2MHzの正弦波なので、かなりガタツキが見られます。

ローパスフィルタ通過後(2MHz 1段目)フィルタ後 1段目(2MHz)

回路図中NJM2173の1ピンでの波形です。少しだけ高調波が残っている状態ですが、見た目はほぼ滑らかです。

ローパスフィルタ通過後(2MHz 2段目)フィルタ後 2段目(2MHz)

かなり綺麗になりました。当たり前ですが、2MHz以下ならみんなこんな感じです。

16MHzから4MHzを生成した波形AD9833の出力(4MHz)

16MHzから4MHzともなるとこんな感じ。高レベルの高調波成分が含まれているので、正弦波の形からはかけ離れているように見えます。

ローパスフィルタ通過後(4MHz)フィルタ後(4MHz)

少し高調波成分が残っています。
というか、2MHz出力を想定しカットオフ周波数を3MHzにしてあるので、レベル低下の方が気になります。

ローパスフィルタ通過後(4MHz)フィルタ後(1MHz)

1MHzだと十分すぎる結果が得られます。

XDS3202AXDS3202A
最大1GS/s 14bitAD 200MHzバンド幅のデジタルオシロスコープ。タッチ式スクリーンは広くて見やすいです。

DDSの入手先

最近では、amazonでもDDSチップ単体でしかも安く入手できます。

海外通販なら以下のサイトがおすすめです。
MOUSER
Digi-Key

Digi-Keyと提携しているマルツでも入手可能です。
マルツオンライン