| 電子工作室 | ||
| 2.ワンチップマイコンDDS | ||
| ワンチップマイコン だけで DDSは可能か?! |
秋葉原、秋月電子で購入したワンチップマイコンキット。 H8/3069Fは、H8/300シリーズのCPUコアに、ADC(アナログディジタルコンバータ)、DAC(デジタルアナログコンバータ)など多機能なワンチップマイコンです。 そこで、もっとも簡単な方法で、DDS(ディジタル・ダイレクト・シンセサイザー)ができないかと、安易に考え、やってみました。 DACの出力イネーブルを常にイネーブルにしておいて、順次DACデータにサイン波形の値に応じた電圧データを送ってあげるといった単純なものです。 どの程度の周波数まできれいな正弦波を出力することができるでしょうか? いざ!チャレンジ! |
|
| 30μs(約33KHz)の正弦波です。 以外にきれいですが、繰り返し点に不連続な箇所があります。 プログラムを見ると判りますが、DACへ送るデータは、1サイクル分です。それをプログラム的にwhile(1)文で繰り返しているので、そのときだけ命令の実行速度が異なり、不連続になります。 下の拡大波形を参照して下さい。 多少不連続な箇所がありますが、ディジタルなので我慢します。ローパスフィルターに通して使えそうです。 |
![]() |
|
| 不連続な部分の拡大波形です。 この部分だけデータの切り替わりに500nsかかっています。 |
![]() |
|
| それ以外の立上りは、320nsです。 | ![]() |
|
| また、立下りは、300nsと少し早いですね。 | ![]() |
|
| 電圧の変化量は、120mVです。 これで、0Vから2.5Vをスイングしています。 このスイング幅をもう少し小さくするれば、もう少しだけ周波数を高くすることができそうです。 |
![]() |
|
| プログラムソース | SIN_WAVE.c | |
| 考察 | DACはデータの切り替わり点で必ずノイズを発生します。今回使用したプローブの帯域では捕らえることはできませんが、DACの出力をフィルターに通すことでこれらの課題は対処できます。 スイング幅を2.5Vからより小さい値にして繰り返し周波数の限界を調査してみましょう。 DACへのデータの送り方を0Vからはじめれば、不連続の部分が0V付近になるため、波形的には比較的きれいに見えそうです。 |
|
| 振幅を2.5Vの半分の1.25Vとしたときの正弦波です。 不連続点を0Vに持っていったことでかなりきれいな波形となりました。 15.3μs(65KHz)の正弦波が発生できました。^-^ |
![]() |
|
| 振幅を2.5Vの1/3の0.8Vとしたときの正弦波です。 DAC出力の立上り限界が目立ってきています。ー_ー 7.4μs(135KHz)の正弦波が発生できました。 |
![]() |
|
| 振幅を2.5Vの1/3の0.8Vとしたときの正弦波です。 DAC出力の立上り限界が目立ってきています。階段波形です。T_T とりあえず、、、、 3.88μs(257KHz)の正弦波が発生できました。 |
![]() |
|
| 振幅を2.5Vの1/4の0.8Vとしたときの正弦波です。 DACデータは、0Vと約0.8Vです。単純に2値の繰り返し。 DAC出力の立上り、立下りそのものです。 とりあえず、、、、 700ns(1.4MHz)の正弦波じゃなく、パルス波が発生できました。 |
![]() |
|
| まとめ | DACによる正弦波の発生はDAC出力性能すなわちセトリング時間とそのデータを発生するデータ発生時間によって、その性能が決まります。 H8/3069F内臓のDACでは、C言語で実行する限り、1.4MHzの繰り返しが限界のようです。 この波形をローパスフィルターを通し、正弦波にできるかどうかです。 1.4MHzの繰り返し波形はデューティー50%ではありませんので、やはり、257KHzの正弦波もどきを源発振とするのがよいと思います。 ただし、257KHzの正弦波は、アマチュア無線の帯域ではちょっと使い道がありませんよね。ラジオの中間周波数455KHzにもとどきません。 ここでは、実用を重視するよりも、原理とその仕組みの理解ができたことが重要と考えます。 |
|
| 発展 | では、デューティー50%の方形波(水晶発振器の出力がそうですね。)をローパスフィルターにかければ、フィルターの性能によって、かなり高い周波数まで正弦波になるのでは、、、と考えるのは、ふつでしょう。 DDSの限界的な使用で、出力が正弦波にならないのであれば、DACなどやめてしまい、高速カウンタで方形波を発生し、フィルターにかける方が、さらに簡単ではないでしょうか! 最近は、FPGA(field-progammable gate arrays:内部回路を自由に組みかえられるIC)にも高速なPLLが内蔵されており、高速多ビットカウンタが簡単に構築できます。高速ローダブルカウンタとフィルターの組み合わせで、精度の高いVFO(バリアブル・フレケーシ・オシレータ)ができると思います。 電子工作室では、PLD(MAX7000:EPM7128SLC84−15)の実験が可能です。 ワンチップマイコンによるDDS実現実験に引き続き、PLDによる高速カウンタ出力実験を行いたいと思います。^-^ |
|