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.
主な更新のみ
24/09/11
- MCU-based Melody ICs
24/08/12
- MCU-based Melody ICs
24/03/10
- Logic IC Collection
公開:2015/09/07
最終更新:
2016/01/22
安価な AVR マイコン (ATtiny2313A) を使ってシンプルな DDS (Direct Digital Synthesizer) を作りました。
1Hz 単位で最高 1MHz 程度までの正弦波を生成することができます。安価に製作可能なので、単体動作だけでなくシステムの一部としても手軽に使用可能です。
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 から振幅が徐々に下がってしまっています。
余裕があれば ALC (Automatic Level Controller) など、振幅を安定させる仕組みを入れた方が良いでしょう。
出力バッファには 2回路入りの高速 CMOS OPAMP AD8652 を使用しています。この IC は 5V 単電源で動作し、R2R 入出力なので重宝しています。