MENU

FPGA 初心者向け:DDS(Direct Digital Synthesis)の基礎と活用

FPGA の学習を進めると DDS(Direct Digital Synthesis、直接デジタル合成) という概念が登場します。本記事では、FPGA における DDS の本質的な意味、動作原理 について詳しく解説します。


目次

1. DDS(Direct Digital Synthesis)とは?

🔹 DDS の基本的な役割

DDS は クロック信号を基にして、デジタル的に波形を生成する技術 です。特に、以下のような目的で使われます。

  • 高精度な周波数の波形を生成(整数倍でなくてもOK)
  • 任意の波形を生成(正弦波、方形波、三角波など)
  • 周波数、位相、振幅を瞬時に変更可能
  • 通信、レーダー、信号処理、音響などに活用

PLL はクロックの整数倍しか作れませんが、DDS は 自由な周波数を生成できる のが大きな特徴です。


2. DDS の基本構成と動作原理

DDS の基本ブロックは以下のようになっています。

クロック(CLK) → 位相累積レジスタ(フェーズアキュムレータ)
                  → 波形ルックアップテーブル(LUT)
                  → D/A 変換(DAC) → アナログ波形

🔹 DDS の主要コンポーネント

  1. フェーズアキュムレータ(Phase Accumulator)
    • クロックごとに 位相の増分(Phase Increment)を加算 し、波形のどの部分を出力するかを決定。
    • 位相増分の大きさで出力周波数が決まる!
  2. 波形LUT(Look-Up Table, ルックアップテーブル)
    • 正弦波などの波形データを事前に格納。
    • フェーズアキュムレータの出力を元に、LUT から波形のデジタル値を取得。
  3. DAC(Digital-to-Analog Converter, D/A変換)
    • DDS の出力はデジタル信号なので、DAC を使ってアナログ波形に変換する

3. DDS の周波数制御

DDS では、出力周波数は以下の式で決まります。

$$ fout= \frac{M \times f_{\text{clk}}}{2^N}$$

  • $f_{\text{out}}$ : 出力周波数
  • $M$ : フェーズアキュムレータの 位相増分
  • $f_{\text{clk}}$ : クロック周波数
  • $2^N$ : 位相アキュムレータのビット数(例: N=32 なら $2^{32}$)

💡 M を変えるだけで周波数を自由に変更できる!

✅ 例:100MHz のクロックで DDS を動かす

  • フェーズアキュムレータが 32ビット の場合(N=32)
  • M = 2,147,483(約 $2^{31}$)とすると

$$fout = \frac{2,147,483 \times 100 \text{MHz}}{2^{32}} \approx 50 \text{Hz}$$

👉 100MHz のクロックから 50Hz の正弦波を生成!

目次