クワドラチャDDSを作ろうと思う

もう2年くらい、LEDを使った簡単な光通信などの体験を大学3年生向けの授業でやっています。

もともとはロックイン検出の概念を勉強してもらうというような趣旨で、例題として水の濁りを光の透過量で検出する装置を想定しました。LEDの光を点滅させ、受光した光信号をLEDを点滅させている信号とかけ算してローパスフィルタに通すとDC光の影響が無くなりますよね、というような実験でした。ちなみに水を濁らせるために使ったのは飲み会で余ったマッコリでした。

LEDの点滅装置とかなんだとか用意しているうちにだんだん欲が出て、ホモダインとスーパーヘテロダインを体験できるようにしようということになり、アナログ乗算器などを使ったセットが3班分できました。

ところが、もともと水の濁りを検出するというような目的だったためLEDの変調は方形波でスイッチングしていました。そのため、ホモダインとかヘテロダインの話は正弦波で説明するほうが説明しやすいけれど実験のところで方形波になるという煩わしさがありました。それに、方形波どうしをかけ算してもスパイクが出たり、実際は方形波でも正弦波でもない波形に鈍っていたりします。

そこで、今年はクワドラチャDDSを作ろうと思います。DDSというのはディジタル的に正弦波を生成する回路(Direct Digital Synthesizer)で、クワドラチャDDSは正弦波と余弦波を同時に出せるとDDSということです。DDSは位相発生器と波形生成器(正弦変換または余弦変換)に分けられます。位相発生器というのは、クロック毎に定数を足していく積分器です。

画像


加算回路とレジスタから成ります。クロック毎に加える定数を仮に5とすると、一段あたりの高さ5の階段状に積分値が増えていきます。加算器とレジスタの幅がたとえば8ビットだとします、そして現在の積分値が253だとします。定数5を足すと258ですが、8ビットでは255が最大値ですから、256ではなく0に、257ではなく1に、そして258ではなく2になります。このようにして近くで見ると階段状、遠くで見ると鋸歯状の波形がディジタルデータとして生成されます。

つぎに積分値の0から最大値を角度と見なし、0から2πに対応させて正弦波に変換します。周波数がクロック毎に足し込む定数に比例する発振器になります。普通は正弦変換か余弦変換だけですが、両方もっているのがクワドラチャDDSというものです。

画像


クワドラチャDDSはアナデバなどからICになって販売されていますが、なぜ自作するかというと、周波数ゼロヘルツや負の周波数まで出力できるようにするためです。クワドラチャDDSをいじってみれば、正弦波は回転ベクトルを虚軸か実軸に投影したものであることが理解しやすいでしょう。さらに負の周波数まで出力できればオシロスコープのxyモードを使うと回転ベクトルが右に回転したり左に回転したりする様子まで見られます。つまり、教育用に特化したDDSを作ろうと思います。ちなみに負の周波数と言ってもサインとコサインの位相の進みと遅れの関係が逆転するだけなので、両方出ていないと分からないというわけです。

ディジタル部分はFPGAで作り、高速なDA変換器で出力する予定。FPGAはSpartan3のXC3S50から400のどれかを使います。それより大きくなるとボールグリッドアレイになるので、両面のプリント基板加工機で作った基板では実装できません。

そういえば、先日東京エレクトロンデバイスの方がどんな使い方をしていますかというので訪ねてこられました。細々ながらCPLDとFPGAを使っていることを伝え、BGAばかりになると鳩歩堂は困りますと言ったら、Spartan6にも2種類だけQFPがあることを教わりました。なんかひと安心ですね。

さてDACはDAC5662AというTIのを使うことにしました。これは2個の275MSPSの12ビットDACが1パッケージに入っているのでちょうどいいです。またパッケージの下に露出パッドが付いているのは実装が面倒ですが、このDACは高速なのにそういうのが付いていません。DACやADCではTIが良いもの出してますね。

このクワドラチャDDSにはFM変調機能を搭載する予定です。それによってFM通信の経験ができるからです。変調信号は200kSPSの14ビットADC、アナデバのAD7894を使います。ADCは100 kHzのサンプリングレートで使います。一方DACは100 MHzのサンプリングレートで、10 MHzあたりまで出力できるようにしようと思います。

そういうわけで1000倍にオーバーサンプリングしなければなりません。ディジタルシグナルプロセッシング(DSP)の専用開発ツールなど持っていないのでCICの肩特性もシミュレーションできません。そこでCICフィルタを使わずFIRフィルタで2倍オーバーサンプリングと4倍オーバーサンプリングを繰り返して1000倍まで持って行こうと考えています。その準備を2月頃からやってきました。

現在は基板の設計を開始したところ。ときどき進み具合を報告しようと思います。

追伸:正弦および余弦変換はブロックメモリを使わずCORDICで行います。QFPパッケージのFPGAは比較的サイズが小さいものしかないため、乗算器とメモリを節約しようという意図もありますし、CORDICだとサインとコサインが同時に出るので好都合というのもあります。DACの精度が12ビットなので12段のパイプライン方式とし、12クロック遅れるものの、クロック毎に出力が出るようにします。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック