複数のDDSチップAD9851の出力波形を同期させる
背景
アナログデバイセズのCMOS 180 MHz の DDS/D/AC シンセサイザ「AD9851」は、 任意の周波数を発生させてたい際に便利な ICです。今回は、これを二つ同時に起動して、波形を同期させるアプリケーションの開発時にハマったことを記事にしてみたいと思います。
同期できるよね?
AD9851のデータシートには、2個のAD9851のDDSを同期させるアプリケーションとしての記述があります。同期させつつ、位相もずらす事もできようです。結構優れものですね。
共通のRESETコマンドを送出すると、別々の2つのW_CLKが8ビッ ト・データ・バスまたはシリアル入力ピンを使って各AD9851の40 ビット入力レジスタのプログラミングを可能にします。プログラミ ングが完了した後に共通のFQ_UDパルスが送出されて、指定された 周波数と位相で両発振器を同時に選択動作します。
AD9851データーシート(日本語)7頁
ということで、RESETを同時にすれば、同期するようです。早速ためしてみましたが、なかなかそれだけでは同期せず、起動するたびに位相がばらついてしましました。
本当に同期できるのか?と疑いたくもなりましたが、わざわざデータシートに書いてある以上できて当然。何か見落としていないか手探りの調査を行いました。
代理店経由でメーカーに問い合わせすれば早かったかもしれませんが、昨今ネット通販で買って試作する事が多いのでやむなしです。
シリアル接続がダメなのか
今回は配線の節約もあり、パラレル接続は採用せず、シリアル接続で実現させようとしました。
シリアル・モード(図17)へは、パラレル・モードから入ります。 パラレル・モードはデフォルトとしてRESETアサート後に選択され ています。パラレル・モードからシリアル・モードへ遷移するとき は、先頭の8ビット(ワードW0)にシーケンスxxxxx011を書込むだけ で済みます(図17)。W0プログラミング・ワードを8ビット・デー タ・バスを使って転送するか、図18に示すようにハードワイヤ接続 によることもできます。シリアル・モードに入ったら、図19に示す プログラミング・シーケンスに従う必要があります。
注: シリアル・モードの開始後、直ちに有効40ビット・シリアル・ ワード(図 19)の書込みを行い(全バイトがゼロの場合でも)、 続いて、FQ_UDの立上がりエッジで"残りの"データをDDSコア に書込むことを推奨します。W33がロジック0である任意のワー ドが有効な40ビット・シリアル・ワードです。
AD9851データーシート(日本語)11頁
とありますが、パラレルでないと同期できなのかとも疑ったのですが、内部ブロック図を見る限り、わざわざそんな違いをもたせるはずもないと思われ、他に原因がありそうです。RESETしたのち、直ちに有効40 ビット・シリアル・ ワードの書込みを行う必要があるのですが、ここを見てみいきます。
RESET直後の40ビット・シリアル・ワード
RESET直後に40ビットをオール0で書き込んいましたが、なにかやれるとすれば、ここを変更するぐらいです。
W32:6× REFCLK乗算器のイネーブルを1にして起動してみしたが同期しませんでした。
W33:ロジック0 は「常に0にせよ」と書かれていますので、なにもできません。
W34:パワーダウン を1にして起動してみました。
「おおーーーー」同期した!!
同期した波形
パワーダウン=1にして起動を開始する事で、美しい同期波形が出力されるようになりました。何度起動しても同期できていることも確認できました。
結論
AD9851の起動時はパワーダウンから始めるのが良いようです。何でもいきなりぶっこんではダメですね。データシートに書いてほしい事項ではあります。
あとがき
同期アプリケーションは、世の中で少ないのか、この問題に関する記事がなかなかなく、それなに調査に時間が掛かってもたついてしまいましたので、記事にして書き残します。