Computer & RF Technology

DDS AD9859とGNURadioでVNAを作ってみる(1.動作原理解説)

DG8SAQによるQEX誌記事”A Small, Simple, USB-Powered  Vector Network Analyzer Covering 1 kHz to 1.3 GHz”を読み、その構成のシンプルさと強烈なアイデアにある種の感動を覚えました。この記事で取り上げられた自作のVNAは、VNWAという名称でsdr-kit.netから頒布されていました。当初はキット配布で、チャレンジしてみたいと思っていたのですが、途中から完成品の販売のみとなってしまいました。完成品ではおそらく物足りないだろうと思いましたので、いっそのこと自分で作ってみることにしました。(一応念のためですが、VNAとはQEX記事タイトルにもあるように、ベクトルネットワークアナライザのことです)

製作に踏ん切るもうひとつのきっかけはGNURadioです。たとえVNAのハードウェアを作れたとしても、計測の中心は信号処理のソフトウェアで、一から作るのは一筋縄ではいきそうにありません。有り難いことにGNURadioには必要なビルディングブロックがいろいろ揃っているようでしたので、VNAもなんとかなるのではないかと考えました。

ハードウェアについてですが、残念なことにVNWAの回路は公開されていません。キットや製品を購入した人には回路図などの詳細情報が提供されているようです。公開されていない事情は、完成品の販売の兼ね合いもあると考えられます。とはいえ、雑誌QEXは”A Forum for Communications Experimenters”ですから、読者が記事を読んで実験することは趣旨に合致したことであるはずです。ここはひとつ、QEX記事やマニュアルから読み取れる情報から回路を検討して、適当に使いやすいようアレンジして設計することにしました。

実は回路設計と基板レイアウトは昨年の10月の段階で一段落しており、すでに基板試作ができあがり、実装も開始していたのですが、ちょっとDDSのコントロールに手こずっていたり、RTLSDRなど他のことに時間を費やしていて、VNAの製作について書くのが遅くなってしまいました。忘れる前にすこしずつ書いておきたいと思います。

image

今回作成したVNAのフロントエンドの構成は以下のようになっています。まずはVNAの基本原理を簡単に説明します。

image

二つのDDSでRF信号とLO信号を発生させます。RF信号を抵抗ブリッジに与え、TXポートからDUT(Device Under Test)に接続します。TXポートから出たRF信号がDUTで反射して、ブリッジの平衡出力に出てきます。これをDBM SA612で受けて、LO信号で低周波信号に変換します。これが反射信号となります。これと同時に、ブリッジを通さないRF信号をDBMとLO信号で低周波信号に変換します。これが参照信号となります。反射信号の振幅と、参照信号との位相差は、TXポートからDUTを見るインピーダンスに対応しています。SパラメータでいえばS11です。

一方、RXポートにはDUTを通過してきた信号を入力し、同様にDBMでLO信号で低周波信号に変換します。これが通過信号となります。この振幅と、参照信号との位相差を合わせると、SパラメータでいえばS21となります。

このようにして得られた低周波信号はPCのサウンドカードで入力し、GNURadioを使って処理します。このために、LO信号とRF信号の周波数差を、サウンドカードで取得可能な音声帯域になるように設定する必要があります。サウンドカードに入力できるのは同時に2chなので、反射信号と通過信号をアナログスイッチで切り替えて、参照信号と共に取り込みます。

DDSやアナログスイッチの制御は、FT232RLのBitBangモードで制御します。インピーダンスの周波数特性を得るために、発生する周波数をスイープさせるようDDSを制御しますが、その際にRF信号とLO信号が一定の周波数差となるように制御します。これをPCからUSBを介して行います。

ここまではVNAとしての基本原理そのものです。ここからは、VNWAの驚異のエッセンスについて、解説を試みたいと思います。QEX誌記事の本旨でもありますので合わせてご参照ください。

DDSには動作上限周波数があります。例えばAD9859のように400MHzクロックの場合、発生する信号は160MHz程度が実用上の上限周波数となります。ところが、QEX記事には1.3GHzまでカバーするとあるように、この限界を超えています。実は二つの手段で周波数帯域を拡大しています。

一つめは単純で、DDSをオーバークロックで用いることです。AD9859は400MHzが仕様の上限ですが、実際に動作させてみると倍近い800MHz付近で動作させることができます。AD9859はPLLクロック逓倍機能を持っており、次数を最大20まで設定することができます。水晶から40MHz(記事では37MHz)を与えて、800MHz付近まで逓倍動作させることができています。

もう一つの手段が、これが実に驚きなのですが、DDSが発生するスプリアス信号を積極的に利用することです。DDSで信号を発生させた場合、基本波だけではなく、ナイキスト周波数を中心に対称の位置に信号が出ています。例えば800MHzで動作しているDDS(ナイキスト周波数はその半分の400MHz)で、360MHzを発生させた場合は、440MHzの信号も出ています。強度は下がってしまうものの、さらにその上の周波数760MHz, 840MHz, 1160MHz, 1240MHzにも出ています。通常はこれらのスプリアスはLPFで除去してしまいますが、VNWAではLPFを設けず、あえてスプリアスを残したうえで、これらサブナイキストの信号成分を利用しています。

さらに巧妙なことに、二つのDDSのPLL逓倍次数をずらし、DDSクロックに差を設けることで、たくさんのスプリアスから特定の成分のみを、ナイキスト次数で選択的に取り出すことを可能にしています。RFとLOは周波数差をもって信号発生させるため、ナイキスト次数の違いが差成分の周波数の違いとして現れ、FFTまたはフィルタ信号処理で特定の成分を取り出すことができます。

また、DDSで信号を発生させる場合、ナイキスト周波数付近は強度が減衰してしまいます。この強度の変化はsincカーブで示されます。VNWAでは、この信号減衰を避けるためにナイキスト周波数付近の信号発生を避けるようサンプリング周波数を切り替えます。これもシンプルにPLL逓倍次数の切り替えで行います。

このように、VNWAはDDSのクロック逓倍PLL機能を最大限活用して、1.3GHz付近までの計測を可能にしています。理解の一助のため簡単に説明しましたが、詳細はQEX誌記事を参照していただきたいと思います。

解説ばかりで長くなってしまったので今回はここまでにします。

現状動作している様子の写真をちょっとだけ。PythonスクリプトでDDSの周波数をスイープし、GNURadioで信号処理しMAG/ARGを計算しています。それをgnuplotでグラフ表示しています。

先端解放の60cmくらいの同軸ケーブルによる反射が、信号の周波数に対応してケーブル長さで位相が回る様子がグラフからわかります。この写真では0-200MHzの範囲でスイープしており、160MHz付近で位相が一周しています。このことから電気長が90cm強となり、短縮率を考慮すると60cmの同軸ケーブルとして妥当なところかと思います。校正など課題はありますが、それっぽく動作しているようです。

image

今回製作したハードウェアの回路図や基板レイアウトなどの設計情報ですが、VNWAのそれが公開されていないことから、オリジナル作者の意図を尊重して、とりあえず現時点では公開を控えたいと思います。一方、ソフトウェアについては、実験レベルですがご参考として提示していきたいと思います。目標は「美しい」Smith Chartを描くことです。というわけで、以後続く予定です。

リファレンス

comments powered by Disqus