Menu

My Works
- LEDチェッカ
- 太陽電池式回路テスタ
- TTL Pong
- DSP プリセットラジオ
- 電動式 CVCC 電源装置
- OLED MP3 プレーヤ
- etc.

Report
- MIDI のハードウェア
- aitendo DSPラジオ一覧表
- etc.

Parts Collection
- Logic IC
- Calculator LSI
- CMOS Melody IC
- etc.

Blog

Recent Updates

主な更新のみ

24/09/11
- MCU-based Melody ICs

24/08/12
- MCU-based Melody ICs

24/03/10
- Logic IC Collection


Simple AVR DDS + Controller

公開:2015/09/07
最終更新: 2016/01/22

安価な AVR マイコン (ATtiny2313A) を使ってシンプルな DDS (Direct Digital Synthesizer) を作りました。

1Hz 単位で最高 1MHz 程度までの正弦波を生成することができます。安価に製作可能なので、単体動作だけでなくシステムの一部としても手軽に使用可能です。

仕様

  • 電源:DC 5V (150mA くらい)
  • 出力振幅:1Vp-p (75 Ω)
  • 出力周波数:DC-1.2 MHz くらい(詳細参照:振幅一定は 100kHz まで)
  • アキュムレータ:24 bit / 16 bit 自動選択
  • 制御方法:5V シリアル UART 19.2 kbps

回路図

curcuit

ダウンロード

DDS側ソース(WinAVR)

コントローラ側ソースコード(R8C)

写真

表側

裏側

構成

(stub)

詳細

AVR ATtiny2313A を DDS IC として使用し、8bit 256 バイト の LUT (Look-Up Table) と外部 R-2R DAC によりサイン波を合成します。マイコンは ATtiny2313 でも製作可能ですが、回路図のようにクロック 25MHz で動作するかどうかはわかりません。

このマイコンは RAM を 128 バイトしか持たないので、LUT は都度 FLASH ROM から読み出していますが、マイコンの使用上 ROM アクセスは RAM アクセスに対して 1 クロック余計にかかってしまいます。RAM を 256 バイト以上持つ ATmega88 などを使用すればこの点が解消できるため、多少の高速化が図れます。

アセンブリで書かれた DDS の 1 ループは最小 8 クロックで動作するので、25MHz クロック(オーバークロック)で動作させるとサンプリングレート fs=2.78 MHz となります。したがってこの場合、理論上は fs/2 = 1.39 MHz までの波形を合成可能という計算です。

DDS 部分とコントローラ部分は独立構成です。DDS の制御は UART を介して行うので、PC・マイコン問わず使用可能です。今回は R8C マイコン (R5F211B4SP) を使って、LED により周波数直読可能なコントローラを作っています。コントローラ部分には古い IC の 74LS47 や 74LS138 を使用していますが、これは単に部品箱の有効活用です。

DAC の出力は階段状の波形になるので、LPF を通して綺麗なサイン波にしてやる必要があります。理論上は fc<fs/2 ならば良いのですが、一般に fc は fs/5 程度に設定するケースが多いようです。回路図では試しに fc=1.2MHz=fs/2.3 として、7 次の LPF としています。シミュレータによる LPF の特性を下図に示します。

いっぽう、実測した DDS 出力周波数特性は下図のようになりました(出力オープンで測定)。波形は保たれているのですが、100kHz から振幅が徐々に下がってしまっています。

f特

余裕があれば ALC (Automatic Level Controller) など、振幅を安定させる仕組みを入れた方が良いでしょう。

出力バッファには 2回路入りの高速 CMOS OPAMP AD8652 を使用しています。この IC は 5V 単電源で動作し、R2R 入出力なので重宝しています。