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 の主要コンポーネント
- フェーズアキュムレータ(Phase Accumulator)
- クロックごとに 位相の増分(Phase Increment)を加算 し、波形のどの部分を出力するかを決定。
- 位相増分の大きさで出力周波数が決まる!
- 波形LUT(Look-Up Table, ルックアップテーブル)
- 正弦波などの波形データを事前に格納。
- フェーズアキュムレータの出力を元に、LUT から波形のデジタル値を取得。
- 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 の正弦波を生成!