ダイレクト・デジタル・シンセサイザ

ダイレクト・デジタル・シンセサイザ (, DDS)は、単一で固定の発振源から、任意の波形や周波数をデジタル的に生成するための電子回路。
概要.
基本的なDDSの回路は制御装置、RAM、基準の周波数（通常は水晶発振器）、カウンタ、およびDAコンバータ（DAC）で構成される。 この回路を動作させるには、 "プログラミング" と "実行" の2つのステップが必要である。
プログラミング.
プログラミングのステップで、制御装置はメモリをデータで満たす。それぞれのデータは、瞬時の時刻における信号の振幅を示す2進数のワードである。
次に、メモリ上のデータの列は振幅のテーブルを形成し、そのテーブルの位置（メモリのアドレス）は時間を意味する。
例えば、テーブルの前半がゼロ、後半が100%の値で満たされるなら、データは方形波を表すことになる。 単にデータを変更することによって、いかなる他の波形も作成できる。
プログラム不可能で、正弦波もしくは少ない種類の波形のみを出力できるような装置もある。
実行.
実行のステップでは、参照の周波数の各パルスごとに、カウンタ（正確には "フェーズアキュムレータ" (phase accumulator) と呼ばれる）は一定値の増分だけ進むように指示される。 フェーズアキュムレータ（位相）の出力は、順番に表にある各データを選択するために使用される。最終的には、DACによりこのデータ系列をアナログ波形に変換する。
周期的な波形を発生させるため、回路はテーブルが一周する時間と波形の周期が等しくなるように設定する。例えば、基準の周波数が1MHzで、テーブルに1000個のデータがある場合、テーブルが一周するためには 1000 / 1MHz = 1ms 必要なので、出力波形の周波数は　1/(1ms) = 1kHz となる。
このシステムは、単に位相の増加量を増やし、テーブルをより早く一周させることによって、さらに速い周波数を発生させることができる。上述の例では、位相の増加量が1であるため、増加量を2に設定することによって、次の周波数を得ることができ、周波数は2倍になる。
より精度の高い周波数の制御をするためには、標準の位相増加量を例えば10と設定しておく。そうすることにより、少し高い周波数や少し低い周波数の波形を得ることができる。例えば増加量を11に増やすと、出力周波数は10%速くなる。逆に、増加量を9に減らすと、同じ割合で、出力周波数は遅くなる。より精度の高い周波数が必要な場合は、ビット数の大きなカウンタで必要となる。
実装の詳細.
実用的な実装は、通常ルックアップテーブルの大きさを2のべき乗で構成し、32ビットのフェーズアキュムレータと位相増加量で動作させる。 一般的にカウンタの上位8または10bitはルックアップテーブルのインデックスとして使われる（それぞれルックアップテーブルの大きさは 256 と 1024 となる）。
残りの下位ビットは、ルックアップテーブルの隣接する値を補間するパラメータとして使われる。
直線補間で十分の場合が多い。発振源は通常1MHzから100MHzの水晶を使用する。
DDSによって発生できる最高周波数はルックアップテーブルの大きさと周波数に依存する。
波形を合理的に発生させるように、ルックアップテーブルから最小限の数のデータを選ぶ必要がある。
もし位相の増加量が大きくなりすぎると、カウンタはルックアップテーブルを速く通り過ぎてしまい、結果として出力信号のひずみがひどく悪化する可能性がある。
ソフトウェアとハードウェアのどちらでも実装が可能である。 DDSはリアルタイムで処理する必要があるため、通常、ソフトウェアによる実装はオーディオ帯域以下に限定される。
DDSの応用例としては、ファンクションジェネレータ、ミキサー、変調器、および音源のシンセサイザなどがある。