自作VNAについて前回からのつづき、ハードウェア(フロントエンド)の設計と製作編です。
回路は基本的にブロック図のとおりです。原典の通り、DDSはAD9859、DBMはSA612、アンプとしてTLV2462です。これらを並べて適切に配線します。サウンド出力はミニジャックで出すことにします。クロックは水晶モジュールで簡単に済ませます。電源はUSBを使います。このVNAの一番肝心なブリッジは0.5%の49.9Ωの薄膜チップ抵抗を並べて作成します。アナログSPDTスイッチはアナデバのADG719にしました。チップ部品は基本1608サイズを使いますが、レイアウトは2012サイズを前提にして余裕あるようにします。信号の回り込みを防ぐために、GNDパターンは、デジタル部、DDS1, DDS2,TX,RXをそれぞれ分離してみました。それらをまたぐ信号や電源の配線にはFBを入れています。部品は原則として片面だけに搭載するようにしました。
回路と基板はいつものようにEagleで設計して、FusionPCBに発注しました。
- 10/13 注文
- 10/18 発送
- 10/31 受領
18日で受領することができました。この少しあとの他のオーダーはトラブルで製造が遅れたらしく、MFTの展示に向けて製作を進めていたDIY界隈の方々は大分やきもきされたようです。
見た目にはちゃんと製造されていますが、何ぶん最初の試作ですし、何かしらの修正は必然と思われます。
試作ですので実装は段階的に進めます。まずは電源とFT232RLモジュールまわりから。
レギュレータICや、パスコン、LEDを実装して、最初のチェックをします。5V, 3.3V, 2系統の1.8Vの電源電圧、電源LEDの点灯を確認します。これがOKなら、FT232RLをPCから制御して、もう一つのLEDをによりLチカしてみます。
続いてDDS周辺です。水晶モジュールとパスコンを実装して、40MHzが出るか確認します。これも信号は出たのでOKと思ったのですが、ちょっとここで気になることが。スペクトルを見てみるとかなり幅が広がっています。秋月で販売していた40MHzの水晶モジュールを使ってみたのですが、どうもこれは信号の純度が無いタイプのようです。データシートにはジッタ等の記載がありません。残念ながらこの選択はハズレだったようです。別の水晶モジュールを調達しなければなりませんが、とりあえずはこのまま使います。
CLKがOKなら、次にDDS周辺のC、RやFBを実装して、ピンに正しい電圧が来ていることを確認してからDDSを実装します。AD9859は、LQFP-48パッケージでピン間は0.5mmピッチです。裏面には放熱兼用の大きなGNDパッドがあります。
基板レイアウトについてここで最初の失敗に気がつきました。DDSの裏面パッドにハンダ付けするために穴を空けておいたつもりが、単なるViaになっていて穴が小さすぎ、しかも裏面のレジストをマスクしなかったのでレジストで埋まっていてハンダを流すことができませんでした。なんとかしようと次のような手順をやってみました。Via穴内のレジストを清掃、パッドに呼び水代わりにわずかにハンダ載せておき、Via穴に細いハンダを詰めておき、フラックスを多めに垂らしておいてから、四辺のピンを先にハンダ付け、そして裏面から詰めたハンダを溶かして流す作戦としました。なんとか付けることができたと思うのですが、果たしてどうでしょうか。
さて、DDSが実装できたら、前の記事に書いたDDSコントロールスクリプトを使って信号を発生させてみます。DDSBASEボードとはFT232RLの信号アサインが違っているので、コードをちょこっと修正します。発生した信号の取り出しには、先にアッテネータやブリッジの一部に部品を実装して、信号がSMAコネクタに出てくるようにバイパス経路を作っておきます。
正常に信号が出ることが確認できたら、二つ目のDDSも実装します。ここで問題発見。二つのDDSを同じ水晶からのクロックで駆動するために、DDSのCRYSTAL OUTを二つ目のDDSのREFCLKとして使っていたのですが、 DDSをオシレータとして使わない場合にはCRYSTAL OUTからは信号が出ないことがわかりました。たしかにデータシートの機能ブロック図を見るとそうなっています。残念ながらパターンカットして配線を修正します。
実は二つ目のDDSから思い通りの信号が出るようになるまで実は時間を要しました。なかなか二つのDDSを確実に100%動作させることができるようになりませんでした。原因は設定のシーケンスでリセットが相互に邪魔していました。結局は順序を変えることでとりあえず解決できしました。
二つのDDSは同じクロックですが、独立して動作しているので、周波数は独立に設定できます。たとえば1Hzだけずらして、100MHzと100.000001MHzを発生させて、オシロに入れて並べて見ると、一秒毎に位相がずれていく様を眺めることができます。
コマンドラインから下記のようにDDSを設定しています。引数の一つ目が100MHz, 2つめが1Hzの意味です。コードの詳細はまたの機会に説明したいと思います。
$ ./vna.py 100e6 1
同時に二つの信号が出せるようになったら、今度はDBMを実装して周波数変換動作を確認します。まずは参照信号用のSA612とTLV2463、そしてその周辺のCRを実装して動作を見てみます。先ほどのようにDDSで周波数をずらした2つの信号を発生させると、DBMからはずれた分の周波数の信号が出てきます。オシロで眺めてみるとひずみの見えない正弦波です。近傍にスプリアスの殆ど無い高い周波数どうしをミキサーに通すと、差の成分だけが出てきますので、極低周波でも低歪みの出力となります。低周波信号生成の方法として、高い周波数から落として生成することもありですね。VNAとしては、この差成分が音声信号として適切な周波数になるようにDDSを制御します。
下のオシロ画面は、DDSで生成した100MHzと100.0001MHzをミックスして生じた100Hzです。
続いてブリッジを実装します。抵抗を並べるだけなので簡単です。本当はレイアウトなどに工夫が必要なところだとは思いますが、まずは一度作ってみてから検討することにします。ブリッジから反射信号を取り出してからは、さきほどと同様の回路ですので信号を確認します。とりあえず、SPDTアナログスイッチはバイパスさせて、ミニジャックから信号が出ていることまでを確認します。この状態でインピーダンスブリッジとして動作させることができるはずですので、ひとまずブリッジの微調整や、S21用の受信部の実装は保留しておいて、一旦実装を一段落とします。
ここまででいくつかトラブルや改善したい点がありました。メモとしてまとめておきます。
- DDS裏面パッド用ハンダ穴
- 水晶モジュールの信号純度(交換予定)
- CRYSTAL OUTピンが使えなかったためリワーク
- ミニジャックのピン間違いのためリワーク
- RESETピンの配線(トラブル解消に時間を要した。とりあえずそのまま)
- AD9859のパスコン不足(レジストを剥がして追加)
- USBの電源ノイズが想像以上に多い(フィルタ追加または別電源要)
- 電源1V8Dと1V8Aのシルクが反対だった
次回はGNURadioによる信号処理と、pythonによる制御についてです。
- 原典 https://sdr-kits.net/DG8SAQ/VNWA/Baier_VNWA2_QEX.pdf
- Handicraft Diary「AD9859 DDS ハードウエア篇」AD9859やDDS基板の設計についてノウハウがたくさんあります。ボーデプロッタの設計例もサイトにあります。https://www.koka-in.org/~kensyu/handicraft/diary/20060331.html
- VNA用のDDS制御スクリプトvna.py https://github.com/edy555/dds-ctrl/blob/master/vna.py