実験の途中(何に仕上がるか?)@ |
謎の回路(笑)
見る人がみたらアホさかげんがわかっちまうけど(大笑)
<リンクコイルの巻き数> 【2012.6.17】
実は、自作を再開して、マルチバンドTRXを作り始めた頃、10Kタイプにコイルを巻くときには、リンクの巻き数が多いなぁと思っていました。参考文献としては、ふるーいCQ誌の1981年7月号のJA6BI 故 田縁昭 大OMの記事「3.5−50MHzモノバンドトランシーバー」に載っていた「FCZコイルとその巻き数」なる数表でした。
自作を再開した、1990年代後半は、この表のとおりに巻いて、4ポールのBPFを作るとロスが多く、特性が芳しくなかったので、時に応じて、リンクコイルの巻き数を減らして対処していたような記憶があります。しかしながら、当時は測定器といえば、自作のスペアナとオシロスコープしかなかったので、たまたまリンクコイルの巻き数を減らして、それっぽい特性になれば、「まぁ、いいか」とあまり考えないで、大量のBPFを作っていたことになります。
今回、真空管アップコンバージョンTRXを作るにあたって、TRX共用BPFを50Ωインターフェースでつくり、TXのプリドライバーの入力はハイインピーダンスの同調回路を使うことになりそうです。この昇圧のための単同調コイルのリンクの巻き数って、けっこうまじめに考えないと、インピーダンスマッチングが難しいだろうなぁ・・・と考えていました。
ということで、VNWAもあることなので、同調コイルの一次側からみたインピーダンスを測ってみることにしました。
各バンドのコイル達
50MHzは参考用
各バンドに同調させた状態で2次側には100kΩの抵抗(真空管の入力回路のつもり)を同調用のCに並列に抱かせました。一次側のリンクコイルにSMAコネクタをつけてS11についてみています。それぞれ、リターンロス(dB)、入力インピーダンス|Z|、Real|Z|、Image|Z|を併記してあります。同調CはFCZコイルの指定値です。巻き方ですが0.08mmのポリウレタン線で、まず同調側を一番下の溝に巻き込み、その上にリンクコイルを巻くという方法です。結合度を高める巻き方を採用しています。
以下がそれぞれの特性図です。
3.5MHz-2t
まずは3.5MHzですが、リンクコイルが二回巻きで|Z|は66Ωとほぼ50Ωに整合してしまいました。これは幸先がいいです。同調点ではImageが無くなるはずですが実際にはすこし残留している「ように」見えます。これは周波数分解能の影響でしょう。スパンを狭めれば、同調点でゼロ近辺になるのが分かるはずです。
このバンドではオリジナルのFCZコイルは一次側に7回巻きなさいと指示があるようですが、50Ωインターフェースとしては、多すぎます。2次同調側をTR回路の負荷回路にして、リンクコイルでTRのベースにインターフェースするという考え方で設計されていたのでしょうか?
7MHz-2t
次は7MHzで2回巻いた状態です。これだと|Z|は136Ωとミスマッチの様相を呈してきます。
7MHz-1t
というところで、一回巻きにすると、今度は低くて、|Z|は41Ωです。リターンロスを考えると、このあたりでも50Ωインターフェースとしては十分良好だと考えられます。
14MHz-2t
今度は14MHzの2回巻きでです。|Z|は152Ωで、7MHzと似たような値です。
14MHz-1t
というとことで、一回巻きにすると、|Z|は44Ωと、殆ど整合状態になります。めでたいことです(笑)。
21MHz-2t
次は21MHzの2回巻きです。うーん、|Z|は293Ωに跳ね上がってしまいました。これはきつい。
21MHz-1t
して、1回巻きにすると|Z|は86Ωとなって、ちょっと整合にはきついなぁーーということですが、これ以上、巻き数を減じられませんので、ここで手を打つことにします。リターンロスは11dB近辺ですから、追い込めているとはいえません。
50MHz-1t
参考までに50MHzも測ってみました。1回巻きでも200Ω以上になっちまって、「あれあれ」です。
50MHz-0.5t
ということで、おきて破りの0.5回巻きということで、半分巻いてピンは同調回路のつながる3本ピン側の真ん中ピンに出してみました。そうすると、なにやら、58Ωくらいまで来ますが、Image|Z|の対周波数非対称性が出てきて、すこしひしゃげています。でも使う上では問題はないのじゃないかと思います。
さて、VNAだけでなく、本当に整合しているのかを見たいのと、あとは、どのくらい昇圧比が取れるのか気になったので、SSGとオオシロを使って直接信号波形を観測しました。もちろん、オシロのプローブの入力容量の補正の調整はしてあります。
バンド | SSGオープン(Vp−p) | SSG接続時リンク側(Vp-p) | 同調側電圧(Vp-p) | 昇圧比 |
3.5MHz | 0.98 | 0.55 | 5.16 | 9.4 |
7MHz | 0.98 | 0.49 | 5.22 | 10.7 |
14MHz | 1.08 | 0.45 | 3.45 | 7.7 |
21MHz | 1.07 | 0.69 | 2.86 | 4.1 |
上表がその結果ですが、21MHzを除いて、オープン時の電圧がSSGをリンクコイルに接続したときの電圧の約2倍になっているので、おおよそ50Ωに整合していると考えていいのでしょう。21MHzは先のVNA結果(86Ω)からSSG接続時のリンク側電圧が高くなってしまうのは仕方がないでしょう。その結果、昇圧比もあまり取れなくなってしまうようです。
以上の結果をみるとVNAから求めたリンクコイルの対50Ω最適値は、公表されている値とずいぶん離れていることが分かります。今回は冒頭に書いたように、真空管アップコンバージョンTRXの共用フィルタが50Ωインターフェースなので、それから、プリドライバーに損失無く整合させるために、単同調回路のリンクについて、すこし突っ込んでみてみました。ただ、これは、いろいろなところに応用が利くので、TRXの項目からはずして、実験のページに置いておくことにします。
<リレーによるBPFの切り替えに関する実験> 【2012.12.22】
真空管UPC機の受信時にローカル信号のサイドバンドノイズに注意しなければならないことをここで述べました。これをやっつけるために、更なるBPFを追加して、受信感度を適正化することに着手しました。
あまり乗り気がしないのですが、これを突破しないと面白いアイテムに進めないので、なかば強制労働に、駆り出されるがごとく工作机に嫌々向かっています。
なんせ、このマルチバンドのBPFっちゅうのは作るのが億劫です。スペアナ&トラジェネがあれば、特性を整えるのはあっという間なので、この点は苦労がな
いのですが、コイル巻きがなんといっても気乗りしない工作の最右翼でしょう。特に、DWMさんフィルタだと、Lはインダクタンスが多くなりがちなので、
取っ掛かりでめげてしまいます。トロイダルコアに40回巻いた奴が1バンドで3つも必要なんて、悲鳴があがります。それをマルチバンドで作るって?いやーー大変です。なんとか楽しくやる工夫って無いもので
しょうかねぇ(苦笑)?
ところで、今回、今まで何の思い入れも無く作っていたリレー切り替え式のマルチバンドBPFブロックですが、少し原点に立ち返ってみようと思いました。と
いうのも、単独ではすばらしい特性を誇るDWMさんフィルタとかも、RFの特性保証の無いリレーで切り替えるとどの程度、特性が劣化するのかをある程度体感したいと思ったからです。
今回は、リレー回路でどの程度アイソレーションが取れて、その不全性が実際のBPFにどのように影響するのかを見ることにしました。というのも、切り替え リレー回路の配線はどうにもRF的には満足の得られるものではなく、インピーダンス整合もへったくれもないからです。今までに何度と無く、それこそ10ユ ニットでは足りないくらい、このリレー切り替えマルチバンド(5〜8bandsとか)のBPFを作ってきましたが、あまり注意を払っていませんでしたか ら。
仰向けリレーによる切り替え回路の写真
やにが取ってないので汚いですがあまり突っ込まないでください。
無水アルコールで取ればきれいになります(笑)
ということで、従来どおりの作り方の「リレー仰向け実装方式」(↑上図)と「リレー四つんばい実装方式」(↓下図)について特性を見ることにします。仰向け方式はいままで何度
となく作った工法です。リレー端子を上向きに配するので、配線そのものは楽になりますが、いかにもアイソレーションが悪そうな実装法です。四つんばい方式
では、信号配線を短く、それも、アースで囲まれたカッティングプレーンを作るので、生基板をカッターで切り抜く面倒さはありますが、配線も短く、なんとな
くスマートにまとまります。ただし、リレーと基板の間には、セラミックのバイパスコンデンサをあらかじめ+12VとE端子間に実装し、+12Vの引き出し
線も付けた上で、基板への実装順が制限されます。また、すでに実装したリレーの調子が悪くなると、交換が容易ではありませんね(笑)。
四つんばいリレーによる切り替え回路の写真
やにが取ってないので汚いですがあまり突っ込まないでください。
無水アルコールで取ればきれいになります(笑)
四つんばいリレー回路を軽くシールドした図
さて、追加ですが、上図は、後になって考えると、無用なことだと認識したのですが、当初は仰向け実装方式の場合、配線長が長いので、干渉を受けやすいのかと思い、シールドしてみた図です。少しはアイソレーションに影響するかと考えて、サクっと作ってみました。
仰向けリレーによる切り替え回路と同シールドした回路のアイソレーション
まずは仰向け方式とそのシールドした回路の比較です。、こんな簡単な切り替え回路のアイソレーション特性です。50MHzで-38dB近辺ですね。こんな回路でもHFでは40dBも取れているのですから、まぁ、周
波数をうまく選べば使えるSWだということができるでしょう。S11とかZinとかはこのあと考えていくことにします。んで、このリレー群にシールド
を施してみました。これは、主に、SW回路が、外部から干渉を受けないか、また、ここから不要波を発射しないかという観点で重要と思い、アイソレーションにはあまり影響がないかな?と思っていましたが、そのとおり、ちょっとは改善しますが、全域で0.3〜0.4dBほど改善するにとどまりました。上図は、実はシールド有り無しの特性の二本を表示していますが、重なってしまっていて差は殆どありません。
仰向けリレーによる切り替え回路と同四つんばいリレーによる切り替え回路のアイソレーション
同じように、リレー実装で端子面上向き(仰向け)と下向き(四つんばい)の差を見てみました。びっくりすることに、これも、殆ど同じなのです。殆ど重なってしまっています。0.数dB
はあるのですが、事実上差は無いと考えていいでしょう。ということは、作りやすい方を選べばいいわけで、今までは、端子面上向きで作ってきましたが、下向
きのほうが、基板カッティングの手間はありますが、配線が少ないので、製作時間はかからないような気がしています。
リレーのアイソレーションと全体回路のリークの関係
実はアイソレーションってどのようにBPFに利いてくるのか、漠然としか考えていなかったのですが、上の図のように因数分解してみました。あるBPFの帯
域外減推量がリレーのアイソレーションの劣化によってどの程度影響を受けるかを示しています。例えば、F=16MHzのBPF(7MHz用)で 周波数がFmのときの減衰量は、裸のBPFのときに比べてどのくらい劣化するでしょうか?これを実際に計算すると
BPF(3.5MHz用) のFmの減衰量はATT(@Fm)、SWのアイソレーションはISO(@Fm)*2
BPF(50MHz用) のFmの減衰量はATT(21)、SWのアイソレーションはISO(@Fm)*2
THROUGH の@Fmの減衰量は0dB、 SWのアイソレーションはISO(@Fm)*2
@Fmとは「周波数Fmにおいて」とします。
の合計の漏洩量になります。一番厳しいのは、当該周波数で減衰の無いTHROUGH系で、ISO(@Fm)の2倍の漏洩量(dB)が信号に加算され
て劣化することになります。それでも、例えばFmが100MHzのときは減推量は−32dBありますので−64dB程度の漏洩量(フロア)が加算されれることになります。他のBPF系からの漏洩量はそのフィルタの当該周波数の減衰が加わる(デシベル加算)ので、リレーのアイソレーショ
ン経由で漏洩してくる成分は無視していいはずです。
ということで、まぁ、THROUGH系がない場合は、このように漏洩に関してリレーのアイソレーションはあまり気にしないでいいのではないでしょ うか?ということが見えてきます。次にこれを実証するために、以下に、裸のBPFとそれを切り替え回路を経由した場合の特性の変化を見て見ましょう。
BPF単体の特性
上図は裸のBPFで中心周波数は50MHz(59MHzのつもりが、最初は50MHzにチューンしてしまった(笑))の場合のTG/スペアナ直結の場合の様子です。
BPFを切り替え回路に挿入した場合の特性
これは、そのBPFを切り替え回路に実装し、50MHz以外のBPFは実装しない場合です。先に書いたとおり、100MHzあたりにリークと思われる盛り上がりが出てきます。
外付けのLocal用BPF回路の様子
ということで、全体をシールドケースに実装してみました。各バンドDWMさん3連フィルタと14/21MHz用に関してはTHROUGHになっています。もちろん、TX時もTHROUGHになるようにロジックを組んであります。
外付けBPF(50MHz用)の総合特性と残留リーク
この状態で入出力をTG/スペアナで測ってみます。上図は50MHz用(Localは59MHz)ですが、まず、バンドを選ばない場合のリークを見ると上図のLeakという線に見えるように、80MHzまでは70dBほどのアイソレーションを確保していますが、90MHzになると−60dBくらいに劣化してまいました。まぁ、このレベルのリークは覚悟しないといけないのかもしれません。
外付けBPF(3.5MHz用)の総合特性と残留リーク
同じように、3.5MHz(Localは12.5MHz)の様子を示します。リークに関しては、50MHz用と同じ特性になります。これで、リレーのアイソレーションと、切り替え回路のリークの関係がなんとなく分かったような気がします。
今回の検討は他愛も無いことを長々と書きなぐってしまいました。一見つまらない作業でも、原点に返って検討してみると意外な発見もありますね。このように、何事も前向きに取り組んだほうが得られるものは大きくなるなぁ・・・という結論にしておきましょうか。
何ヵ月もTRX305の同じネタというのも飽きてきたので、寄り道を一つ・・・・・。昔に仕入れていたデバイスの話です。
Si570というチップが部品箱に眠っていました。これは、実は数年前にFPGAをいじり始めたころに、なんでも非常にpurityの高いクロック生成ができるデバイスとして、ダイレクトサンプリングのディジタルRXを作っていた界隈では、超有名だったようです。私も興味を持って、2009年頃だと思いますが、3個で1万円近くしましたが、デジキーから購入してありました。
その後、FPGA弄りが冬眠に入ってしまったために、殆どうっちゃっておいたのですが、実は、ここで、このSi570を弄ろうかと考えた痕跡があります。しかしながら、当時はゆっくりといじる余裕がなくて、「時間があるときに置き換えればいいや」と、APB−3の拡張器のローカルには、なんとクリスタルクロックモジュールの逓倍なんていう野蛮な荒業を採用していたのです。
Si570外観
Si570の中身に関しては、正直、今でも驚嘆しています。5GHz帯のDCOを内蔵のXOにディジタルPLLを掛けたと言ってしまえばそれまでですが、こんな小さなチップにこれらを一括して搭載してあるのは、まっことすごい仕掛けだと脱帽です。まぁ、本記事はSi570の称賛記事じゃないので、その辺で切り上げて、まずはこいつを使ってみることにします。
さて、懸案のTRX305の外回り製作も大詰めを迎えており、先が見えたので、この遊びに取り掛かるわけですが、Si570は、APB−3のローカルOSCとしては、これ以上のデバイスは無いという代物だと一時は思っていました(本当はSi571の方が同期系を作るには好都合ですが)。なので、まずは、ローカルとしての構成を考えてみます。
実のところ、ここでは、ローカルにクロックモジュールを逓倍しているので、ローカルとしての余計なスプリアス(80MHzの整数倍)が抑圧できていませんが、今回は、必要な80、160、240MHzを直接発振できるので、その点はかなりの改善が見込めると思っていました。
Si570実装図
左にAVR 右の銅板中央にSi570
回路図
ということで、いきなり回路図と外観に行きます。コントローラは100円AVRのAtiny2313で、これに、3ビットのバンド選択入力を持たせて、それに応じて発振周波数を変えるだけの単純な構成です。なので、AVRのポートも空き空きです。まずは、Si570の動かし方の基本を押さえましょうということで。AVRは3.3Vで動作させて、Si570へのI2Cインターフェース(5V⇔3V)を省いてしまって直接接続しています。このように、AVRに高速動作が要らないので、Si570と同じ動作電圧にすることでインターフェースの簡易化が出来ます。
外観も至ってシンプルで特筆すべきところは有りません。強いてあげるなら、制御AVRとSi570のアース系統を一点で接続したのと、SI570の接続されるアースの面積を確保し、また、あちこちのWEBに見られるようにSi570はひっくり返して実装したことくらいでしょうか?ノイズ混入を避けるために電源レギュレータはSi570とAVRで別系統としました。
さて、動作に移りますが、こいつは、けっこう面倒な周波数設定が必要になってきます。DDSのように、周波数制御はSiftout文一行で送り出せば、「一丁上がり」というわけにはいきません。おまけに、周波数変化範囲が大きい時は、都度DROをフリーズさせて設定条件変更をしなくてはなりません。そのあたりは、マニュアルとこの記事を参照すると大体のところは解ります。(しかし、なんでこんなに面倒なのかの理由はワカリマセン:笑) これをもとに、簡単に「動かし方」を下記に書いておきます。もっとも、先のHPの記述を始め、あちこちに先例があるので、そちらを参考にされたほうが、実際には役にたつと思います。私も、DCOフリーズと新F設定のくだりはこちらを参考にさせていただきました。
<<<周波数設定動作>>>
I2cadを&HAAに設定 (I2cをSlaveに、アドレスを&H55とする)
I2cregが137でI2cdataを&H10に設定 (フリーズ)
I2cregが7〜12で周波数データ書き込み
I2cregが137でI2cdataを&H00に設定 (フリーズ解除)
I2cregが135でI2cdataを&H40に設定 (新周波数アクティブ)
以上、I2C関係のコンフィグレーション、ピン設定は除く
で計算された周波数を書き込むことができます。
さて、単一の決まった周波数の設定ならば、面倒なレジスタ設定を数回行えばできるので、大したことは無いのですが、これをロータリーエンコーダー等で連続可変にするには、少々面倒です。なので、この検討は、基本的なSi570の実験が終わった後に実施したいと思います。
以下に各周波数におけるスペクトラムを示します。
80MHzの発振スペクトラム
SPAN:5kHz RBW:20Hz
80MHzの発振スペクトラム
SPAN:500kHz RBW:300Hz
80MHzの発振スペクトラム
SPAN:5MHz RBW:3kHz
80MHzの発振スペクトラム
SPAN:1GHz RBW:10kHz
160MHzの発振スペクトラム
SPAN:5kHz RBW:20Hz
160MHzの発振スペクトラム
SPAN:500kHz RBW:300Hz
160MHzの発振スペクトラム
SPAN:5MHz RBW:3kHz
160MHzの発振スペクトラム
SPAN:1GHz RBW:10kHz
240MHzの発振スペクトラム
SPAN:5kHz RBW:20Hz
240MHzの発振スペクトラム
SPAN:500kHz RBW:300Hz
240MHzの発振スペクトラム
SPAN:5MHz RBW:3kHz
240MHzの発振スペクトラム
SPAN:5MHz RBW:3kHz
これをみると、まず、第一に引っかかるのが、広帯域におけるスプリアスの存在です。+−5MHzくらいの周波数幅においては顕著なスプリアスが見当たらず、そのことは「Si570は近傍スプリアスが少ない!」とあちこちで言われている通りのようです。ただ、この図に見られるように、広帯域に目をやると、必ずしもDDSに較べてアドバンテージがあるのかどうか、良くわからなくなってきます。最初は、本当にSi570の生成するスプリアスか?と疑問を持って、制御CPUであるAtimy2313の動作を止めたり、挙句の果てには、制御CPU回まわりの電源を落したりしてみましたが、この様子は変化ありませんでした。尤も、Si570の内部構成がディジタルPLLなので、このようなスプリアスが発生する可能性は十二分にありますが。
一方、近傍のスプリアスは巷間言われているとおり、かなりきれいなものですね。これはDDSに対して明らかなアドバンテージがあります。また、Si570のスプリアスは、生成キャリアから数MHz離れているようなので、LCフィルタでも容易に抑圧できそうなのは、有為な安心材料です。
ことの序でに、Si570をHF帯で使う場合の参考として、生成周波数が20MHzにおけるスペクトラムの様子を見てみます。
20MHzの発振スペクトラム
SPAN:5kHz RBW:20Hz
20MHzの発振スペクトラム
SPAN:500kHz RBW:300Hz
20MHzの発振スペクトラム
SPAN:5MHz RBW:3kHz
20MHzの発振スペクトラム
SPAN:200MHz RBW:10kHz
周波数が低くなると、スプリアスは激減して、広帯域でもかなりきれいになります。ただ、ディジタルPLLなので、スプリアスフリー(ここでは高調波は除くとします)というわけにはいかず、予期せぬ周波数に発生することもあるので、これには注意が必要です。ただ、周波数、レベル的にはLCのBPFで抑圧が可能なレベルであることは確認しました。
さて、このようにスプリアスに関しては、おおよその知見が得られたのですが、この石を使うにあたり、少々懸念があります。というのは、この石の基準発信源の周波数確度が比較的緩いのです。基準発信源のXOは114.285MHzを発振することになっていますが、規格表を見るとこの確度は、なんと+/−2000ppmとなっています(規格表には極めて密やかに、かつ、しれっと書いてある:笑)。要するに0.2%の周波数誤差を持ちますよということです。これは、Si570がPLL構成なので、ダイレクトに生成周波数の偏差になります。例えば100MHzの発振では最大で+/−200kHzの偏差があるよと言っています。これって、かなり大きな偏差ですよね。
温度による変動は私のグレードでは20ppmですから、同じく100MHzでは+/−2kHzとなっています。これは一般的なXOとしては許容されるでしょうが、先に述べた確度は基準発信源そのものの偏差ですから、要は水晶発振子の製造偏差なのでしょう。こんな小さなパッケージに作りこむので仕方がないのかもしれません。実際、私のSi570も0.09%の偏差がありました。これで、240MHzを生成すると、真値から216kHzもずれてしまうことになります。Si570の実験を開始した当初は、240MHzの発振でなんでこんなにずれるのか腑に落ちなくて、往生しましたが、規格表を改めてみてみると、Fxtalのズレであることが解りました。
ではどうするかというと、もう、これは実測値から補正するしかないでしょう。マニュアルの周波数生成式を見れば、
Fo=Fxtal×RFREQ/(N1×HS_DIV)
ですから、Fxtalのずれている分だけ、RFREQをずらせばいいわけで、簡単に計算はできます。実は、この実験回路も、スペアナの周波数表示を信じて、ラフにSi570の発生周波数を合わせこんでいます。もともと、この親機のAPB−3も、基準発振は温度補償されていない、なおかつ、多分経年変動の規格も緩いXOなので、ここだけ目くじらたてて周波数を追い込んでも、あまり意味は無いと考えています。APB−3EXTENTIONは、狭帯域におけるキャリアのC/Nと2−トーンによるIMDが定量的に見られれば十分で、厳格な絶対周波数確度を求めているわけではないからです(負け惜しみに聞こえますが、そもそも、最初からそういうコンセプトです:笑)。
と、ここまで、Si570を弄ってみて、「さぁ、APB−3EXTENTIONのローカル交換だぁ!」ということになるのでしょうか??? 「?」を三つもつけたのは、実は、今回の用途にはSi570は若干問題がありそうだと思ったからです。以下に理由を示します。
それは、一にも二にも、Si570の広帯域スプリアスの特性が十分ではないからです。XOの逓倍を採用した今のローカルは、80MHzの整数倍のスプリアスがあるが、これは、バンドエッジなので、40MHz帯域のAPB−3の測定に影響を与えません。しかしながら、Si570のスプリアスは240MHz発振で、80MHzのような成分(APB−3EXTENTIONのローカルにある)は存在しないが、微小スプリアスが多く、APB3の測定に影響を与える恐れが極めて大きいからです。これでは、わざわざローカルを変更をするメリットが感じられません。
ということで、実験をしては見ましたが、わざわざ換装するレベルではないなという感触です。野蛮な方法であるXtal発振のクロックモジュールの逓倍のほうが本用途には適しているということです。
ただ今回は、ラフにいじっての感想なので、実装法や何か工夫でスプリアスを減じる対策があるのかもしれませんが、そもそもがSi570の利用例が少なく、測定データまで供しているところはさらに限られています。なので、有効な改善手段を見つけることができませんでした。もし、ここに上げたデータは「PWZのチョンボのため」だと、みっともない(まぁ、よくあることですけどね:笑)のですが、「このようにすれば大丈夫だよ」との知見があれば、是非ご教示いただければ幸いです。
もっとも、この石の本来の目的はフェーズジッターの極めて少ないクロック源ということですから、このパッケージの小ささで、すごい特性を実現していることは良くわかります。この点に関してはなにも言う事はありません。ただ、PWZ的な用途全般には、周波数コントロールの容易さ、基準周波数精度を外部から高精度化ができる等の点で、DDSの方が私の好みに合っています(←あくまで「私の好み」ですが:笑)。
もちろん、個別の用途毎に判断が異なってはくるとは思います。特に、小さなシステムで生成周波数が高くならないHFに使うような場合は、最大で2000ppmにもならんとする基準周波数偏差や、周波数設定の面倒くささを勘案しても、用途によっては使う価値はあると考えています。要は適材適所ということでしょうか?
Si570の周波数設定は一言で言って「面倒」です。それは、所与の周波数値(普通は整数の8〜9桁)から、RFREQを計算するのに、まずは、分周数であるN1とHS_DIVを設定して、RFREQが42.44〜49.613になる組み合わせを見つけ出します。この組み合わせが見つかったら、RFREQをSi570のデータに適合させるために、複数回の演算(乗除算)を行い、さらには、I2Cバスを通して、いちいちSi570のレジスタに8回も書き込む必要があるからです。BASCOMでAVRをコントローラとして用いると、DDSならば、周波数を指定して、位相データの算出のために、一回乗算のあとはShiftout文一行で周波数設定をすることができます。この違いは大きいですね。
ただし、これも、一回プログラムしておけば、あちらこちらで使うことができるので、面倒ではありますが、とにかくやっておくことにしましょう。
まずは、面倒なRFREQを生成するための演算です。前提条件として、一回の周波数変化範囲は+/-3500ppm以内とします。これは、例えば生成周波数が10MHz帯では35kHzになります。この範囲ならば、DCOをフリーズさせる必要がない範囲になります。これ以上の変化が一回で必要な場合は、大人しくDCOをフリーズさせてから、周波数設定を行います。
この場合、N1とHS_DIVはあらかじめ計算してある組み合わせを使います。例えば、ハムバンドのローカル等は、バンドごとにN1とHS_DIVは異なるでしょうが、それはバンドスイッチの値を読み込むときに、データを設定すればいいでしょう。一方、SSGのような用途の場合は、所与の周波数から、N1、HS_DIVのいずれも自動計算して、それから導かれるRFREQをSi570のデータに変換しなければなりません。
以上をまとめると、Si570の周波数設定の行程は大きく3つに分けることができます。
(1)所要周波数からHS_HIV,N1の組み合わせを決定する。
(2)上記の条件で計算したRFREQとHS_DIV、N1を7つのレジスタに配置
(3)Si570にデータ送出と同時に周波数表示モジュールにデータを送付
という過程をとります。それぞれ、見ていきましょう。
まずはRFRQですが、あまり考えないで「人間の計算するとおり」にプログラムします。アマチュア無線機のローカルのような使われ方であれば、バンド内の周波数変動では、N1,HS_DIVは変わらないとして、RFREQを計算します。で、一回設定した周波数からロータリーエンコーダ(RE)等の信号に応じて、周波数を連続的に変化させる場合は
@REから周波数加減パルスが入力されるたびに新しいRFREQを計算する。
AREから周波数変更パルスが入力されるたびに初期RFREQ値にΔRFREQ値を加減する。
の二つの方法があります。
@は周波数が与えられる毎に面倒な計算を繰り返すという、野蛮な方法です。しかし、直截的で解りやすい案でもあります。今回は、最悪どのくらいの時間がかかるのか試す意味で、まずは極めて頭の悪い方法@を試してみることにします(大笑)。
Aは、例えば、所要周波数変化幅に相当するΔRFREQ値を計算しておいて、初期RFREQ値に加減算するので、動作が極めて機敏です。ただ、ΔRFREQ値を精密に算出しておかないと、実際の所要周波数変化幅に対する発生周波数と表示周波数の偏差が累増して、「バンドエッジからバンドエッジまで動かした場合、生成周波数誤差を生じる」なんてこともあるかもしれません。但し、演算量が少なく演算スピードが上げられるので、注意して使えば実用性はあると思います。どのくらいの偏差が出てくるかは、演算精度にもよるので、興味のある方が計算で求めてくださいね。私も、もし必要になったら計算してみます(笑)。
ところで、BASCOM−AVRでは、豊富なデータフォーマットと演算命令が用意されているので、例え@でも、あまり考えなくても人間のやるような計算が可能です。しかしながら、Atiny2313でコンパイルしてみたら、なんと「FLASH USED 95%」なるコンパイル結果を得てしまいました。おいおい、演算だけで2kB近くもメモリーを食っちまうのかよ。これじゃぁ、この後工程が実装できないじゃないの?ということで、面倒でしたが、Atmega88を引っ張り出して、プログラムメモリー空間を8kBまで拡張しました。頭の悪い演算を力ずくで実行させようとすると、メモリーが犠牲になるということなのですかね?
Atmega88実装の写真
Atiny2313のISPや電源レギュレータを利用して、並列にAtmega88pを増設
各I/Oは並列接続なので、AVRはどちらかがソケットに挿入されれば
挿入されている方が動作することになる(笑)
演算の方法、I2Cレジスタへのマッピングは、先にも述べたとおり、一言でいえば、「人間のやるとおりの作業をCPUにやらせる」だけです。なので、プログラムはあまりにも冗長で、みなさんがご覧になったら「吹きだして」しまうでしょう。でも、これが一番確実なのです。要するに、
@生成周波数と適応できるN1、HS_DIVが決まれば、Rfreqが実数で計算できます。周波数のみからN1、HS_DIV、FREFを全て割り出すことも可能ですが、それの自動化は今後、必要になったら検討します(←後述のSSGとか作るには必須)。
ARFREQの整数部を計算し、また少数以下の値に2^28を乗じて、整数部を取り出します。
BこれらをI2Cレジスタマップ(←ちょっと変態的)に配置して、Si570に送信
で終わりです。そんなに難しくないので、みなさんがやってみてください。使う言語によっては、データの扱い方の違いで、思った値が得られないかもしれません。そんなときは、演算の途中結果を、デバッグ用にE2PROMに書き込んで検証とか、AVRの1byte出力、あるいはBASCOMならShiftout文で4バイト一括にデジタルオシロでキャプチャーする方法、で見る等、皆さんが工夫してデバックしてみてください。この過程も楽しまないと、他人のプログラムをコピーするだけでは、自作の意義が薄れますよ。
ちなみに演算時間は8MHzのクロックで、レジスタ配置まで含めても2.8mSでしたので、20MHzのAVRを少々オーバークロックで25MHzとかで使えば、1mS以下に抑えることができます。
大したことはない動作なので、本来はプログラム開示をすればいいのでしょうが、そうすると不特定多数からの質問に答える必要が予想され、これは私的には面倒なので原則やりません。ただ、もし、「お顔を存じ上げている方」からの申し出があれば、これはリスクがゼロなので個別に対応したいと思います。
さて、周波数の設定は
@初期の周波数設定(バンド設定に伴う動作とか)
と
ARE等からの周波数可変要求に対応
ではSi570の動作が異なってきます。
@は、以前、ここで示したシーケンスに従いますが、それで設定された周波数からバンド内チューニング等を行うには、DCOのフリーズ、デフリーズの動作が不要になりますので、留意ください。
まず、Aの動作の検証を行ってみます。結果が以下の図です。
スペアナでスロープ検波して周波数変化を見る
この図はちょっと説明が要るでしょう。スペアナをSI570の発振周波数「付近」でゼロスパンにして、タイムスイープだけ働かせます。こうすることで、スペアナは単一周波数の受信機とみなすことができます。そこで、スペアナのIFフィルタの肩の減衰特性を利用して、入力された、Si570の信号の周波数変化を振幅変化に「変換」しています。そのように、スペアナの中心周波数をSi570の発振周波数からオフセットさせておきます。これは、所謂、「スロープ検波」と呼ばれる古えのFM復調法で、AM受信機の(アナログ)IFフィルタの減衰域特性を使ったFM検波をスペアナで行わせているわけです。まぁ、FMの直線検波器なんてのがあればいいのですが、所有していないので、こんな便法でチェックをしているというわけです。
周波数が「設定された通りのパラメータで変化している」のを示すため、500Hzステップの変化を10回与えて、またもとの周波数に戻るという動作をスペアナに表示されているわけです。まずは様子を見るために、ゆっくりとスイープ(Si570の周波数変化もウェイトを入れてゆっくり)させたのが、この図です。まぁ、予定通り、面倒なSi570の周波数コントロールが出来ているという図に見てもらえればと思います。
しかし、ちょっと気になる現象も見てとれます。ステップ周波数変化の時に、周波数スパイクが見えるのです。これは捨て置けません。ということで、今、実現できる全速でSi570の周波数を変化させてみることにしました。
周波数飛びが発生している様子(FREEZE-M処理なし)
これはウエイト無しでSi570に周波数変化をさせた図です。ます、8MHzの内部クロックでの動作ですが、図に示すごとく、周波数スパイクが出るという事実が明らかになりました。これは深刻ですね。最初は、何か、おかしな動作をしている原因がよくわかりませんでした。しかしながら、QEXのSi570の記事を見ていたら、FREEZE-Mというコマンドがあることが書いてありました。Si570のレジスタマップにデータを書き込むときに生じるスプリアスを抑えるおまじないみたいです。具体的にはSi570の新周波数アクティブにするコマンドを設定レジスタに書き込む前にFREEZE-Mビットをアクティブにして、周波数データをSi570に書きこんだ後に同ビットをインアクティブにするというものです。これを実施してみると以下のようになりました。
最初の図は周波数が21MHz近辺において周波数を変化させた様子でFREEZE-Mのビット処理なしの状況です。
21MHzにおける周波数スパイク(FREEZE-M処理なし)
生成周波数が低いほうが周波数スパイクは小さめ
周波数変化ステップは200Hz
21MHzにおける周波数スパイク(FREEZE-M処理あり)
若干周波数スパイクが軽減されている
周波数変化ステップは200Hz
アトの図はFREEZE-Mの処理をいれた場合です。ただ、まだこれでも不要なスプリアスの発生は完全に抑圧されていません。少しは効果があるようなのですが。もっとも、これはディジタルPLLなのだから、周波数切り替え時にはなんらかの周波数スパイクの応答があっても、別に不思議ではありません。なので、この信号をSSB受信機で聞いてみると、思ったとおり、この周波数スパイクの影響は殆ど知覚できません。これは考えてみれば自明で、SSBの受信機のような帯域の狭い受信機にこのような短い時間の周波数スパイクが入力されても、受信帯域内に落ち込むエネルギーは通過帯域分のみですから、あまり妨害にならないのでしょう。なので、復調音も聞いてみましたが、このレベルでもSi570を無線機のローカルに使うことは可能だと判断しました。
ちなみに、数少ないSi570の測定例のある記事の中で、見つけ出してきたg4oepのサイトには、RF信号を見た写真が載っています。
RF信号の様子
2箇所のブランクは新周波数をアクティブにするときに発生
この写真は私が撮った周波数連続可変時のRF信号ですが、NEW周波数設定時に信号ブランクが発生しています。g4oepの記事と同じようなので、まぁ、こんなものなのかな?というところですかね。
ここまでいじってきて、Si570に関しては、以下のような感想を持ちました。
@近傍C/Nが良好なので、狭帯域な特性を重視するSSGの代替として有望。この場合、もしF安定度を重視するなら、Si571を使って、基準発信源に周波数ロックをする必要があるかもしれない。フリーランでは単独の水晶発振の安定度に留まる。
A小型な外形を生かして、小規模、あるいは小型な無線機のローカルにも有望。周波数安定度がXtal並みで良ければ(←HFなら十分でしょう)DDSに比べて比較にならないほどの小型化が実現できる。
Bもちろん本来の用途である低位相ジッターの発振器としても使い勝手はいい。
といったところでしょうか?私はいまのところ、@の用途に魅力を感じています。HF〜VHF帯のピュアな発振器(Si570)を厳重シールドして、無線機の感度測定ができるような極めて「漏れ」の少ないSSGを実現するのも一興かと思い始めました。というのも、メーカー製のSSGではマズ実現できない位相雑音特性なので、ちょっと面白いなぁとは考えています。しかしながら、果たして実現するのはいつの事やら???ですね(笑)。
残された課題は、演算、転送時間を含めて高速化し、まともなVFOにするかどうかというところですが、↑に述べたように、SSGとしての利用が面白そうなので、所与の周波数値のみから、Si570のパラメータの全てを決めるためのプログラムを作ろうかと思っています。私がVFO(周波数可変発振器!)として採用するのは、やはりDDSということになりそうですので。
<追加> 【2015.10.4】
今更ですが、メモとして追加で記述しておきます。
Si570でSSGとか作るときに、周波数関係の入力パラメータは、周波数値のみにしたいものです。所要とする周波数からHS_DIVとN1、RFREQなんかをエクセルで計算してから、RFREQのレンジを見て、適度な値を選ぶなんて作業を常に手動で行うのは現実的ではありません。なので、これらの動作も自動化しておきましょう。ここまでやってあれば、本気でSSGを作ろうと思っても容易にインプリできると思います。
アルゴリズムは難しくありません。収束条件はRFREQの許容レンジ(=DCOの周波数レンジ/内蔵クリスタルの発振周波数)になりますから、これを見つけ出すのが簡単でしょう。エクセルでやってることをAVRにやらせるだけと言っては実も蓋もない無いので、恥ずかしいですが、忘れないように埋め草のつもりで書いておきます。
RFREQの探索
上図のようにHS_DIVの範囲は7個と少なく、また、N1もせいぜいが64個しか変数として取りえないので、所与の周波数から、順にHS_DIVとN1を与えてRFREQを計算し、これが、規定の範囲(42.438〜49.613=Fdco/Fxtal)になったところで、計算を収束させて、これらのパラメータを固定することになります。
RFREQの値が複数発見できる場合もありますが、簡易的には最初に見つかったRFREQを採用すれば、余計な計算をする必要が無くなります。また、一方で、収束条件を満たすすべてのRFREQを見つけて、その中間的な値を採るというアルゴリズムも考えられます。試しに、条件を満たすRFREQで同一の周波数を生成して、近傍C/Nを見てみましたが、あまり変わるところが無かったので(もちろん、全ての可能性を見ているわけではありません。あくまで、「私」のトライした範囲では・・です)、前者の方法でも差支えないと考えています。これなら、やり方を選ぶと、そんなに時間のかかるものでもありません。
スキャンの方法ですが、まず、N1をパラメータにして、HS_DIVを変化させてRFREQを探す方(上図横矢印)が、逆の方法(上図縦矢印)より平均的には条件を満たすRFREQが早く見つかるように見えます(証明はしていませんが)。
この様にして、HS_DIV,N1、RFREQの組み合わせが決まれば、あとは、今までに作成した周波数生成プログラムにRFRQ,HS_DIV、N1を受け渡してSi570を動作させれば一丁上がりで、SSGとかを作る場合のコア部分が出来たことになります。実際にSSGを作るには、テンキー入力、ATT制御、RE入力(必要ならば)また、それらの表示の処理が必要なので、まだ、道半ばですが、これらはいずれも過去に作った資産があるので、簡単に移植が効きます。いずれにしても、入力された所要の周波数値からSi570の全てのパラメータを決めて、Si570を動作させることができたので、課題は達成できました。
なので、あとは、「SSGでも作るぞー」、と決心するだけなのですが、当座は他にやることが多いので、ここでSi570に関しては一旦切り上げたいと思います(最後はそれかい:笑)。
このところ、あちこちのサイトでSi5351の話題を見つけることができるようになりました。私は、だいぶ以前から、この素子の存在は知っていましたし、全く違う構成ですが、同じく高純度クロックを生成できるSi570に関しては、ここで、いろいろ弄っていました。Si570は、結論から言うと、「まー、無線機のローカルには使えなくもないな」という判断から、ローカルの諸特性としてはより好ましい「DDS」のAD9952を古の真空管RX/Exciterに採用しようと思っていました。
ところが、真空管RX/Exciterの製作が滞っているうちに、良く訪れている、SSTさんのブログとNKDさんのブログで、Si5351AのFBなローカルを用いた機器を見るにつけ、「おっと、このチップも一通りのことは理解してからでないと、いつまでもDDSにしがみついていては、時代遅れ?のおっさん呼ばわりされかねないぞ」と危機感を感じて、触手を伸ばすことにしました。
このチップの製造元のシリコンラボラトリーは、意欲的な製品を昔から出すことで有名でしたが、Si570を弄った限りにおいては、これを「私のお気にいり」にすることにはできず、Si5351も少なからず「食わず嫌い」的な印象があったのは否定できません。そうこうしてるうちに、アルディーノの世界では、まさに昔の「自作PC」を思わせるように、CPUモジュール、カラー液晶モジュール、Si5351モジュールを揃えて、スケッチと呼ばれるソフトをインストールすれば、ディジタルVFOが「ハイ出来上がり」という世界になっていました。世界中でディジタルキッズが夢中でソフトを開発してくれたのでしょう、スバラシイ世界になったなぁとびっくりでした。このように受け入れられた理由は、Si5351が安価で実装が容易であるばかりでなく、あまり無線的(?)な要素が無くて、「クロックジェネレータ」といういわば「PC的部品」な雰囲気で、ソフトを書けばそこそこ動いてくれる・・・・というチップだからなのでしょう。私みたいなアナログ(アナクロ?)オヤジからみると、こんな小さなオンチップVCOなんか、とても使う気ににならない・・・・なんて偏見を持ってしまうのですが(苦笑)、そんなことを気にする輩を、まさに「時代遅れ」と言うのかもしれません(笑)。
さて、一部の界隈では有名なフェルさんのように、本題に入る前に与太話をヒトクサレしないと気が済まない悪弊をここらで切り上げて、肝心の中身に進んでいきましょう。
Si5351Aの内部構成
Si5351はクロックジェネレータですが、Xtal発振器、オンチップVCO、小数点分周PLL、小数点分周器の組み合わせで、細かい周波数設定を可能としています。小数点分周器をPLLに使うと、位相比較周波数に較べて、微細なステップで周波数を生成できますから、便利な事この上ありません。さらに、VCO周波数を小数点分周器で分周して、出力を得ますから、PLLで設定できる周波数ステップ以上に微小な周波数設定が可能です。
この石はオンチップのVCOで周波数可変範囲は600〜900MHzとあります。実際には、この出力を分周して出力とするので、分周した分だけ近傍C/Nは良好になります。おまけに位相比較周波数は、多分、かなり高い(25MHzのクロックそのもの?)と考えられ、これもC/N劣化を防ぐ有効な手段です。実のところ、使ってみる前は、半導体のオンチップVCOなんて、近傍C/Nが悪くて、SSBの用途には全く使えないだろうという先入観がありました。これは実際に自分で信号を発生させてみるまでは、どうにも払拭できない「疑惑」でした。しかし、後述するように、この点に関しては、全く問題が無かったという、うれしい誤算に遭遇することになります。良く考えれば、近頃のディジタル処理のためのクロックのジッターは厳格になる一方なので、その要求を満足すれば、SSBに要求されるC/Nなんざ軽く凌駕してますよ!・・・っていう時代になっていたのでしょうね、私の知らないうちに(笑)。
さて、この石は小数点分周器を多用するために、なかなか面倒くさい周波数の計算をしなくてはなりません。Si570の時もそうでしたが、このあたりがこの石を使う上での一番のバリアーということが出来ます。なにせ、周波数設定のための計算が多く、また、その結果を多くのレジスタに書き込まなければなりません。Si570の時も辟易しましたが、今回はその比ではありません。データシートのレジスタマップを見ると、その多さに腰が引けてしまいます。なお、さすがにパラメータが多いので、アプリケーションノートAN619にはClockbuilderなる、パラメータ決定のためのツールが照会されています。この動作が「解れば」その通りにコントローラで計算をさせて、Si5351のレジスタに書き込めばいいはずですが、このツールのロジックはブラックボックスなので、そう簡単にはいきません。任意の周波数で厳密に1Hzの精度まできれいに生成しようと思うと(実はフリーランのXtalにここまでの精度を要求しても意味がありません:笑)、このツールのロジック?にお世話になるのがいいでしょうが、HAMが使うアプリケーション(主にVFOですね)の場合、ちょっと制限を掛ければ、簡単に計算、書き込みができるはずです。まずは、そのあたりを目指して、途中にいろいろ私の気になってる特性を取得していこうと思います。
チップ実装の様子
AVRのコントローラ基板への実装
上図は、いきなり実装の様子です。Si5351Aは秋月で150円で売っていますので、0.5mmピッチの10ピンから2.5mmピッチの10ピンの変換基板に実装しています。0.5mmピッチに関しては、昔、DDSのAD9952でこんなことをやっていますが、同じようにマウントしました。やり方は野蛮ですが、確実に仕上がるので重用しています(笑)。最近では最初からXtalも実装したモジュールが500円で売っているようで、今なら当然そちらを購入すべきでしょう。
また、AVR基板の方は、昔Si570で実験していたコントロール部分をそっくりそのまま流用しました。Si570を取り外して、そにまま、Si5351基板を取り付けています。こうして見ると、コントローラの方が馬鹿でかいですが、実は、もし、Si5351がまともな動作であれば、以前に真空管RX&エキサイターに採用しようとしていたAD9952基板をそっくりSWAPしてしまおうと画策しています。なので、LED表示モジュール(それもパラレルI/O!)も駆動したいので、ATmega168なんていう大きな28ピンAVRを使っています。最近はI2CのようなシリアルI/Oが主流なので、小さなAVRでも十分なのでしょうが、今回は既存部品を活用したため、こんな形になっています。
それでは、次に、単一周波数書き込みのシーケンスについて見て行きましょう。
Fout=Fvco/( (Div_a+Div_b/Div_c) *R) =Fxtal*(Pll_a+Pll_b/Pll_c)/( (Div_a+Div_b/Div_c) *R)・・・・@
Pll_a~c:Vcoを制御するPLLの小数点分周数値でAN619ではp3のa,b,cに相当
Div_a~c:VCOを分周するディバイダーの小数点分周数値でAN619ではp7のa,b,cに相当
R:低周波生成のための整数分周数値でここでは暫定的に1とする。
で決まります。例えば、この@で決まった各分周数値から、以下のように計算をします。但し、VCOはAのみ、また分周器は「0」系列のみの設定の場合です。B系列のVCOや別系統の分周器を使う場合も、それぞれ同じ計算になりますが、まぁ、最初は多周波数クロックの生成なんて止めた方がいいと思います。NETを見ると、とんでもないスプリアスの嵐に見舞われそうなので、ローカルとBFOを1チップで賄おうなんて欲張りなことをすると、まともな無線機の周波数源にはならなくなること必定です(笑)。
Msna_p1=128* Pll_a+int(128* Pll_b/Pll_c)-512 ・・・・・・・A
Msna_p2=128* Pll_b- Pll_c*int(128* Pll_b/ Pll_c)・・・・・・B
Msna_p3= Pll_c・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・C
Ms0_p1=128* Div_a+int(128* Div_b/Div_c)-512 ・・・・・・・D
Ms0_p2=128* Div_b- Div_c*int(128* Div_b/ Div_c) ・・・・・E
Ms0_p3=Div_c ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・F
さらにこの6つのパラメータ(20〜18ビット)をそれぞれバイトごとにレジスタにマッピングしてSi5351に書き込みます。まずは、レジスタに実際にエクセル等で計算した値をバイナリー変換して各レジスタに書き込んで、Si5351の単一周波数時の動作を見ることから始めます。レジスタに書き込んだ通りの周波数が生成されなければ、その先は何もできないからです。上記の式のうち、Pll_a~cとDiv_a~cの決め方によって、「無線用途に適した」周波数設定が可能になります。このへんのさじ加減については後述とします。
さて、肝心のデータ書き込みに関してですが、おおざっぱに言って以下の通りです。これはデータシートに書いてある通りなのでその部分のコピーを以下に示します。
ここで気になるのは、書き込んだ値を生成周波数に反映するためには、「ソフトPLLリセット」と「クロック出力のON/OFF」が必要であるということです。これはなんだかイヤな予感がしますね。連続的に周波数を変化させるVFOのような動作の場合、どういう影響が起きるのか・・・・・やってみるまでワカリマセン。もっとも、本来、クロックジェネレータってのは、一回周波数を固定したら、そう、頻繁にクロックのON/OFFなんてしないですから、これが、無線のVFOと一番大きく異なる点です。昔、Si570で不満であったのも、原因はこの辺ですから、座して看過することはできません。ま、これに関しては後程、精査していきましょう。
さて、単一周波数書き込みができるようになったので、特性を見ておきましょう。これは、もう、ネット上にくさるほど出ているのですが、PWZ的観点で、もう一度見直してみることにします。スペアナに関しては、抜群の近傍C/N特性を有するHP3588Aで測定します。これで測っておけば、近傍C/Nに関してはまずは間違いがありません。何せ−140118dBC/Hz@10kHzオフセットですから、100MHz以下の測定では右に出るモノがありませんかなりの上級レベルです(消し線部はド勘違いでした:笑)。世の中のWEB上では、Si5351Aに関して、無線の世界で重視する狭帯域の特性を見たものはあまりないので、いまさら感もありますが、掲げておくことにしましょう。
Si5153Aの近傍C/N特性
切りのいい周波数(Pll_b=0) | 左図周波数から1KHzオフセット(Pll_bは整数値) | |
10MHz | ||
30MHz | ||
60MHz | ||
110MHz |
周波数は、200MHzまで生成できるということですが、まず、この石で100MHzを超えるようなアプリケーションを作ることは(個人的には)まず無さそうなので、100MHz止まりにします。このようなキリの良い周波数の場合、PLLも出力分周器も整数になるので、生成周波数にジッターが少ないと考えられます。これを見ると、低い周波数においては近傍C/Nに関しては、文句がありませんね。食わず嫌いでしたが、半導体オンチップVCO+小数点分周PLLという条件が悪いわりには文句の無い特性が得られています。これには本当に脱帽&隔世の感があります。Xtalと見まごうばかりで、スペアナ波形上は、区別がつかないほどですので、SSB通信においては全く問題がないと言えるでしょう。実際はXtalに較べてジッターは1ケタ以上悪いという話ですが、その程度の劣化では、測定器で目に見えて変化が解るというものでもありませんし、ましてや、耳を澄ませて聞いても、その差が解るはずもありません(笑)。但し、100MHzを超えてくるとそれなりの劣化が生じて、復調音声帯域のノイズフロアも上がってきます。私は、このあたりだと使用を躊躇することになると思います。ただ、Pll_c(小数点分周の分割数)を1000000と大きな値にとっても、低い周波数では整数分周の時と殆ど近傍C/Nは劣化しないことがわかりました。これはすごいことです。
Si5153Aのスプリアス特性
広帯域 | 中帯域 | |
10.001MHz | ||
30.001MHz | ||
60.001MHz | ||
110.001MHz |
上図はPLLの分周のみ小数点分周にしてみました。出力分周回路は整数です。次回に記述しますが、VFO等を作る場合、出力分周器は小数点分周にしないほうが、計算&書き込み処理速度や、C/N、端数のない周波数ステップ等の関係で、有利になりますので、まずはこの制限をかけておきます。あまり厳密なことを言わなければ、アマチュアの機器程度ならば、この条件下で十分な周波数設定ができます。
広帯域スプリアスは生成周波数が高くなるにつれて倍加していきます。実は、チップの実装でピン変換基板を使っているので、アース引き回しが長くなっており、どうも、高い周波数ではうまくないようです。PLLに小数点分周を用いて、こういった必ずしも完全ではない実装を行う場合は、30MHz以下で使うのがよさそうです。
さて、単一周波数生成に関してはこの辺にしておきます。以下、周波数、Div_a、Pll_cを所与とした場合の単一周波数の書き込みプログラム(BASCOM)のソースファイル)に関しては、ご要望があれば、当方が存じ上げている方に限って、別途メールで提供する用意があります。公開しない理由は、有象さん無象さんの口さがないご意見に耐えられるほど完成度が高くないということなので、別にもったいぶっているわけではありません(大笑)。では、今回はこの辺にして、次回は周波数をVFOのように変化させてみて、いろいろ探っていくことにしましょう。
実は、前回の測定に際して、ちょっと困ったことがありました。それは50MHz〜50.05MHz近辺と100〜100.1MHzあたりで、局所周波数的に近接スプリアスが増加していました。PLL分周数が整数の時は問題ないのですが、小数点分周になる、ある限られた周波数範囲(上記の100KHz近辺)で動作がおかしいのです。その周波数を外れると問題が無くなるので、計算間違いではないとは思うのですが、まだ、この追及が出来ていません。なんだか、昔、シグナルハウンド社の10.7MHz帯スプリアス大爆発事象に似ていて気味が悪いです(苦笑)。また、これは、パラメータのPll_c値(=分割数で現状は1000000)を変更しても似たような動作なので、これについては更なる追求が必要です。単純なPWZのミスだといいのですが。
***** スプリアスと発振用クリスタルの偏差補正について *****
さて、話題変わって、生成周波数の精度に関しては、発振器の25MHzのクリスタルの発振周波数の誤差をもろに受けます。今回は、25MHzで3kHzの偏差がありましたが、これはクリスタル発振器の発振周波数そのものを補正するか、あるいは、生成周波数をクリスタルの偏差分だけ、オフセットさせる手法もあります。あるいは、クリスタル発振としないで、なんとかして、「外部からの正確な基準信号をSi5351Aに突っ込む」ことができれば、解決します。
負荷容量と残留周波数偏差(Fxtal=25MHz)
上図は、Si5351Aの水晶発振器に負荷Cを噛ましたときの生成周波数が生成周波数が20MHzにおける偏差です。ちなみに、このグラフによれば、下図に示すような負荷コンデンサの15PF程度を噛ませれば(内臓の負荷Cは8PFに設定時)、ほぼ発振周波数が25MHzジャストになるので、最初は、周波数補正なんて簡単だなぁと思っていました。ところがどっこい、このように周波数を下げるるために「過度に補正をかける」と、Si5351Aのクロック出力の負荷条件によっては、生成信号がむちゃくちゃなスプリアスに見舞われるケースがあります。要するに、発振が異常に不安定になる「こと」がわかりました。なので、何事も過ぎたるは及ばざるがごとしということでしょう。チップ外部に負荷Cをつけなければ、この不安定さは解消することができます(って当たり前ですけど)。
実は、水晶発振器に細工するより、周波数精度を上げるいい方法があります。そうです。外部から基準信号をぶちこんでしまうのです。まずは、SSGで25MHzの信号を下図のように入力します。
外部から基準周波数を入力?
クリスタル発振部は、たぶんC-MOSインバータとかで構成されてるのだろうから(←まったく根拠は無いです:笑)、水晶発振子が繋がる端子のどちらかに信号を突っ込めば、うまくいくだろうと考えたのです。乱暴ですが15dBmくらいの正弦波を突っ込むとあっさり所要の信号が出力されます。このレベルだと、いずれのピンでもちゃんと動作するのですが、もし、仮定のようにこの発振回路がインバータだとすると、インバータの出力側に外部信号を突っ込んではいけません。最悪のケースでは発振回路が破壊されます。
なので、外部信号を−5dBmくらいに絞って印加すると、XA(Pin-2)から入力した場合は、出力が出ますが、XB(Pin-3)だとまともな周波数が出力されません。ということは、発振回路がインバータだと仮定した場合、Pin-2が入力側であろうと推定できます。但し、これは保証はまったくありませんので、もし、外部信号をSi5351Aに入力する場合は、オウンリスクで実施してください。PWZは一切責任を持ちません。
但し、もし仮定が正しくて、外部から基準信号入力が可能であれば、これはたいへんに用途が広がります。場合によっては、VCXOをOCXOやあるいはGPSで位相同期させた信号を外部からSi5351Aに入力すれば、飛躍的に安定度と周波数精度が向上するからです。ま、いずれにしても、実施する場合は、しつこいですが皆様のリスクでお願いします。
***** 周波数設定パラメータの決め方とデータ書き込みについて *****
実は、Si5351Aの周波数を決めるには、ここで示した各パラメータを決める必要があるのですが、これは一意には決まりません。使用条件によって、ある種「決め打ち」をしてやる必要が生じます。主な制約となるのは、
(1)内臓VCOの発振周波数が600〜900MHzであること。
(2)Pll_b、Pll_cの値は0〜1048575であること
に注意すればいいでしょう。今回は使用する周波数帯域を100MHz以下として、以下のごとくパラメータの制限をしてみました。
周波数とパラメータの関係
Div_a | 周波数(MHz) | 周波数帯分割(MHz)の例 | 最小分解能(Hz) | 周波数ステップ(Hz)の例 |
100 | 6〜9 | 6〜9 | 0.25 | 5 (20) |
80 | 7.5〜11.25 | 9〜11 | 0.3125 | 5 (16) |
60 | 10〜15 | 11〜12 | 0.4166666 | 5 (12) |
50 | 12〜18 | 12〜18 | 0.5 | 5 (10) |
40 | 15〜22.5 | 18〜22 | 0.625 | 5 (8) |
30 | 20〜30 | 22〜24 | 0.8333333 | 5 (6) |
25 | 24〜36 | 24〜35 | 1 | 5 (5) |
20 | 30〜45 | 35〜45 | 1.25 | 5 (4) |
15 | 40〜60 | 45〜60 | 1.6666666 | 10 (6) |
10 | 60〜90 | 60〜90 | 2.5 | 5 (2) |
8 | 75〜112.5 | 90〜112.5 | 3.125 | 25 (8) |
注:周波数ステップ欄の(内)はPll_bの値を示す
↑は各生成周波数帯と分周数をマッピングするための表ですが、まず、ここでDiv(=最終分周数に同じ)は整数かつ5または10の倍数と決め打ちしてしまいます。100MHz帯ではDiv=8としていますが、ここで、Divに適当でない値を採用すると、最終分解能が無理数になったりして(上表のDiv_a=60,30,15)、扱いが面倒です。最終的にSi5351Aのレジスタに書き込む値は整数値ですから、計算してみると解るのですが、切り捨て時の小数点以下の値によっては、周波数ステップ値が変動したりします。なので、Div値はそうならないような数値を選ぶのが楽だと思います。それから、出力回路の分周器に小数点分周を採用するのも避けた方がいいと思います。それでなくても、スプリアスの多い小数点分周PLLを採用せざるを得ないのですから、出力回路の分周器に小数点分周器を用いて、さらにスプリアスを増加させるのは得策ではありません。このへんの事情はアプリケーションノートAN619にも記述があります。
今回は、Pll_c(小数点分周回路の分解能を決める)を1000000に固定化してみました。素子の制限が、20ビットなので、1048575が上限ですから、それ以下のキリのいい最大値という見立てです。これとDiv値で最終的な周波数分解能が決ります。上記の表にPll_cが1000000としたときの最終分解能を示しておきます。この中で最終分解能はPll_b=1としたときの値ですが、Divが30とか60とかのあまりきりのいい数でない場合は、最終周波数分解能が無理数になってしまいます。この場合、Pll_bの最小値をうまく選んで、周波数分解能がキリのいい値にするのがいいでしょう。上記の表では、周波数ステップが適度な整数値になるようにPl_bを選んでみましたが、これを100Hzとかにするには、
周波数ステップ=最小分解能周波数×Pll_b
になりますから適宜Pll_bの値を選定することになります。、
この関係はエクセルで周波数、Div_a~c,Pll_a~bを求める計算表を作っておくと解りやすいです(逆にこれを作らないで式ばかり睨んでいても直感が働きません:笑)。
周波数が与えられれば、上表によってDiv_a Pll_a,bが求まりますので、BASCOMで計算をさせます。ここまでくれば、あとは式A〜Fを計算して、さらに3バイトに分割し、おのおの対応するアドレスにバイトごとに書き込みます。こう書くと簡単に見えますが、実際は逆方向からデバッグしていきました。まずは、計算されたバイナリーをレジスタに書き込んで周波数が正しく出ることを確認した後に、先のプロセスを逆に遡って、最終的には「周波数が与えられればレジスタに全部のデータを書き込む」というプログラムにしました。
***** 出力信号のオンオフとデータ書き込みスピードに関して *****
ここまで来ると終局が見えてきます。あとは、ロータリーエンコーダをインプリすればいいのですが、その前にSi570で問題となった、周波数変化時の周波数飛びや出力ON/OFFの様子を見ておきましょう。すでにオシロで出力を観測するまでもなく、先の周波数書き込みシーケンスでクロック出力をオフしたあと、レジスタに書き込んで、PLLをソフトリセットを実施し(=新周波数反映)たあとで、クロック出力をONしろという御宣託がありますから、出力のON/OFFは周波数変更時は必須なのかもしれません。こうなると目の前が真っ暗になっちまいます。何故って、ON/OFF時のノイズが周波数変更に伴って発生することは不可避だからです。まぁ、ローカルに使う場合は、また状況は違ってくるのですが、まずは、信号の様子を見ておくことにします。
Si5351Aの周波数設定時の出力の様子 (1ms/Div)
上:Si5351A出力
無信号時はデータ書き込み中。完了と同時に再書き込みされるので出力信号はオフされる
下:周波数書き込み完了時トグルする信号
上記は周波数をトグルさせた(2周波数を交互に書き込んだ)時の出力の様子です。見事に出力がON/OFFされていますね。しかもこれは標準の書き込みシーケンスを無視して、レジスタに周波数データを書き込む前に、@クロック出力をオフし、PLLソフトリセット後にAクロック出力をオンするという、@とAの命令を実行させて「いません」。勝手にデータをチップに書き込んでPLLソフトリセットだけの動作を繰り返しています。それにも関わらず、書き込みと同時に出力がオフされて、PLLソフトリセット後に出力がオンされています。不思議な動作ですが、出力信号を出しっぱなしでPLLの周波数のみを変えるという動作が出来ないように見えています(本当にできないのかなぁ?)。
上図から、周波数変化のためのデータの書き込みスピードを測ることができます。AVRのクロックが24MHzでオーバークロックし(規格は20MHz)て動かした場合、周波数書き込みだけで 2.3ms程度かかっていることが解ります。これは、周波数データを与えてその他のパラメータは全て計算させて書き込んだので、これ以上書き込みが遅くなることはないでしょう。VFOの場合は、周波数変化幅が少ないために、書き込み時間を短縮化するために、「変化しないパラメータは書き込まない動作」にすれば、これ以上に高速化することもできますが、そういったチューニングは、「実際にSi5351AをVFOとして使う決定」を経たあとにしたいと思います。
ここで分かるのは、RE検出、LED表示(パラレル!)への書き込み時間が合計0.8mSくらいかかるので、トータルのVFOとして、3mSくらいで1周波数データの全書き込みが終了することになって、まぁ、秒間300回くらいの書き替えは可能じゃないかと踏んでいます。そうなると、まぁ、DDSよりは時間がかかりますが、Si570と似たような時間です。Si570の時は、演算が面倒でけっこうこれに時間を取っていたのですが、Si5351Aはパラメータは多いですが、演算は単純なので、この辺で済んでいるのだと思っています。これは大きな収穫でした。なにが言いたいかというと、このスピードならば、200〜300パルス/回転のロータリーエンコーダでも、動作を追随させられそうだからです。スムーズなチューニングフィールを得るためには、周波数ステップとして最低10〜20Hzを実現したいのですが、それにも対応できそうなのは収穫でした。
***** 周波数変化について *****
と いうところで、まずは、周波数可変時のSi5351Aの生成周波数の軌跡を見て行きましょう。
周波数変化時のスパイク
以前のSi570の時に取得した、スペアナをFM検波器と見立てた場合の、周波数連続変化時の特性です。条件は同じようにして、Si570と比較することにします。200Hzの階段上の周波数変化を10回繰り返して、また、元の周波数に戻ると言う動作を継続させます。これをスペアナで周波数検波したのが上図です。この測定の意味に関してはここに書いてあるのでご参照ください。あまり早いスピードではない周波数変化ですが、Si570と同じようなスパイク状ノイズが出ています。まぁ、これは十分に想定されたことなので、早く、実際にローカルとしてインプリしてみる必要がありますね。
周波数変更時振幅スプリアス
黄色は周波数固定時でスプラッターは出ない
青色はロータリーエンコーダで周波数を変化させた場合のスプラッター発生
なお、しつこいようですが、ロータリーエンコーダをインプリして、周波数を動かしたときに出る断続的なスプリアスを観測してみましょう。Si570と同じような図を得ることができました。普通の感覚だとこれをローカルに用いるのは「かなりの勇気」がいるのじゃないでしょうか?とマジに書くと、すでにローカルに使っている方々から、「何をそんな心配してるの?普通に使ってるよ」との声が聞こえてきそうです(笑)。では、ということで、お待ちかね、Si5351Aをローカルに使ってみることにします(わー、やっとここまできたか、ドンドンドン、パフパフ〜〜〜:笑)。
まずは、ローカルとして気になる、周波数変更時の信号オフオンによる復調音を見てみましょう。上図のように、Si5351Aをローカルとして用いたクリコン(Si5351Aはクリスタル発振のクロックジェネレータだから、この構成は「クリコン」と呼んでいいのかな:笑)を作ってみました。次の段階で古い真空管RX/エキサイターへの適用を考えて受信周波数を3.395MHz(=このクリスタルフィルタと同じ)にして、7MHzを受信してみます。
するとどうでしょう?
ある条件下では、ロータリーエンコーダを回しても、スプラッターによるプツプツ音は観測「しずらい」です。
そんなこと、とっくに解ってるのに、何をいまさら?と思われる方(←実際にアルディーノ制御のSi5351A発振器をお使いの方々)も多いでしょう。しかし、一旦これを見てしまうと、周波数変更時、ローカルがオンオフされるのに、受信音になんの影響も無いと考えるのは少々無理があるのではないでしょうか???
なので、ブツブツ音が発生「しずらい」理由を、一応は考えてみることにしました。以下は勝手な私の推論なので、間違っていたらご指摘ください。
まずは、ミクサーの構成図と周波数切り替え時の時間波形を眺めてみましょう。ローカルが周波数変化に伴って、振幅がオンオフされるなら、それによってIF周波数成分が生成されれば、復調されて妨害と認識されるはずです。なので、このSi5351Aモジュールの出力をIF帯にて観測してみることにします。
周波数変更時のIF帯におけるスプラッター
上図の@の部分
上図はSi5351Aの出力をIF帯域で観測した図です。発振周波数は10.495MHz近辺で受信周波数が7.1MHz、IF周波数が3.395MHzを想定しています。発振周波数をロータリーエンコーダー(RE)で100Hzステップで可変して、その時の過度応答を見たものです。黄色はREを静止した状態(ローカルの発振はしている)で、これは殆どスペアナの雑音レベルと等価で、このことからSi5351Aの雑音は、少なくともスペアナの残留雑音以下にはなっています(まぁこれは当然ですが)。青の表示は、この状態からREを回したときのスプラッターを示しています。けっこうなレベルの雑音なので、これがIF帯域に「すり抜けたら」当然、ブツブツという復調信号になるはずです。
周波数変更時のIF帯におけるスプラッター(出力フィルター挿入時)
Si5351Aの出力BPF
IF帯(3.395MHz)における減衰量は75dB!
では、ということで、Si5351Aの出力に3ポールのBPF(上図)を挿入して、その出力を同じように観測したのが、これです。表示された波形の色の関係も先の図と変わりません。これを見ると、3.395MHzにおけるBPF(上図)の減衰量(75dBもありました)によって、Si5351AのIF帯域における雑音は大きく減衰しています。絶対値レベルでみると、スペアナなので感度が悪いですが、−110dBm程度にはなっているようです。これは、かなりの減衰が得られるということですね。しかし、このスペアナ残留雑音以下になっているのが確認されたからといって、受信時の妨害にならないという保証はありません。IF以降の受信機の感度が高ければ、それでも妨害となってしまうからです。
但し、さらなる救いの手があります。それは、ミクサーのローカルtoIFアイソレーションで、DBMのそれは30〜40dBも得ることができるものがあります。この減衰があると、雑音発生をかなり抑圧できると考えています。
以上のような考察から、受信機の条件によっては、Si5351Aのスプラッターは実用上問題ないレベルまで減衰させることができるようです。事実、この構成で、200パルス/回転のロータリーエンコーダを周波数ステップが100Hzで「がしがし」連続的に回す(←これ、かなり厳しい条件)と「うっすら」とスプラッター音である、「プツプツ」という音を聞ける程度でした。実運用上は気にならないレベルといって差支えないでしょう。
いままでの考察が正しいとすると以下のようなSi5351AをVFOとして使う上での「キモ」が見えてきます。それを以下に示します。
@発振周波数とIF周波数が離調されるほど、IF帯域に落ち込むスプラッターは抑えられる。 |
ということが導きだされます。
さて、長々と書いてきましたが、結論を言うと、
Si5351Aは「特性を理解して用いるならば」、SSB機器のローカルとして適応性がある
と判断しました。なお、蛇足ではありますが、以前、試していたSi570も同様の傾向ということになりますね。いずれにしても、このあたりは実際に古(いにしえ)の真空管を使った受信機&エキサイターを作って、確認することになるでしょう(もっとも、Si5351Aの動作・特性は大体見切って一段落してしまったので、飽き飽き病を発症して(笑)先に進むのにまた時間がかかるかも)。そうなるとDDS、DDS+PLL、Si570、Si5351Aといった中で何が最良ローカルの選択肢になるのか??? という比較に興味が移ります。それについては、また、回を改めて検討してみようと思います。
PS
しかし、周波数書き込み時に信号のオフ・オンが生じないチップというか、Si5351Aでもそういうモードがあれば、スプラッター問題はたいそう楽になると思うのですが、・・・・もしかしてPWZがそういうコマンドを見落としていただけ?なんて笑い話にはならないだろうなぁ(苦笑)。
その後の追加です。
まず、前回の冒頭に書いた、50MHz、100MHz近辺のスプリアス増加ですが、もしやと思ってAVRのクロックを見てみたら、あちゃー、25MHzのXtalが搭載されていました。たしか、このXtalは24MHzのものを買って、その後25MHzのものが手に入ったのはいいのですが、同じ小ビニル袋に保管していたようです。この25MHzとSi5351の25MHzのXtalの発振周波数差による干渉がスプリアス増加の原因でした。基板へ搭載する時に、表示周波数を良く見なかったのが敗因ですね。ということでAVRのXtalの発振周波数を変えれば一件落着です。ただ、今回は、低い生成周波数(10〜17MHz)で使うので、スプリアスの増加を心配する必要がないので、Xtal換装も不要なのですが、せっかくなので手持ちの20.345MHzの水晶に換装しています。
それから、発振Xtalの周波数誤差の補正について書きましたが、もっと簡単な方法があります。
Fout=Fvco/( (Div_a+Div_b/Div_c) *R) =Fxtal*(Pll_a+Pll_b/Pll_c)/( (Div_a+Div_b/Div_c) *R)・・・・・・@
の式の中でFxtalの値に25MHzという値ではなく、実際のずれた発振周波数(e.g.25.003MHzとか)を用いて計算した結果をSi5351Aに書き込めば、出力周波数の補正をすることが出来ます。これは考えてみれば、当たり前の話で、今はとりあえずこの形で運用しています。なのでこれも一件落着っと(笑)。
さて、Si5351Aの発振モジュールについてはあらかた分かったので、これを一応使える形に仕上げないといけません。もちろん、古(いにしえ)の真空管RX/EXに用いるためです。しかし、ここまで書いてきてちょっと迷いが出ています。
というのも、前回の記事を見た方から、やはり周波数変更時のポップノイズが気になって仕方がないという御連絡を戴きました。多分、その方のRXには、前回書いたキモの部分が多少とも当てはまるのではないかと思いますが、私のいにしえ管RX/EXも、良く考えるとIF以降(AFも含めて)のゲインが多いので、もしかするとドツボにハマルかもしれないなと思い始めました。これって、自分で、使い方のキモを書いておいて、そのルールから逸脱した機器を作るのでは「アホ丸出し」ではないですか(大笑)。
なので、ローカルの第一選択肢は、当初の予定通り、スーパーなDDSであるAD9952(400MHz14ビット)を軽く使う(クロックが130MHz近辺)ほうが、トラブルフリーになりそうだと結論しました。しかし、Si5351Aも後ろ髪をひかれるので、表示インターフェースと基板の大きさをコンパチブルにして、DDSと交換して比較してみる方針にします。従って表示器にインターフェースを揃えることが必要です。
そんなことは簡単だろうと思うでしょうが、実はちょっと面倒なのです。いままでのDDS回路は、書き込みスピードが速かったので、REの状態検出にちょっとサボリ気味の状態検出ロジックを使っていたのですが、今回のSi5351Aは、それだと書き込み時間が長いが故の誤検出が多いので、ちゃんと割り込みを使ってプログラムしています。ところがこれが曲者で、いままでのDDSモジュールではPORTDを1バイト出力とし、それで、表示インターフェースを構成していました。
ところが、RE検出に割り込み(PORTD.2)を使うようにしたので、この便利な1バイトインターフェースが使えなくなり、PORTD.4〜7とPORTC.0〜3に分割するというややこしい形になってしまいました。これに伴って、表示回路のロジックを大幅に書き換えたので思わぬ寄り道をしました。せっかくAtmega88系(28ピンAVR)で1バイト揃っている唯一のPORTDに、良く使う割り込みピンなんか設けなくても良さそうな気もするのですがねぇ。これで、バイトインターフェースが使えなくなって(まぁ、割り込みと表示インターフェースを共用する手段も無いわけでは無いが、面倒!)、しなくていい苦労をするのですが(怒)。
と、ブツブツ言っていても先に進まないので、大人しく諦めて、表示器とインターフェースしてみたのが下の写真です。
表示器と発振器の仮組み
LEDドライバ基板の下にロータリーエンコーダが固定されている
このパネルに使ったアルミ板は、RXに搭載するときの補助板です。これは前面パネルの裏からRXに搭載されます。AD9952−DDSや、Si5351Aの基板は、表示基板の上部に「亀の子」方式で固定しようと思っています。これなら、比較のための交換も容易になります。
最近はアルディーノとカラー液晶の組み合わせが大流行ですが、今回の機器の場合、真空管機器なので、ガタイが大きく、旧来の無線機イメージを残したい理由もあって、昔ながらのLED表示器を使うことにしました。もっとも、今、カラー液晶を使おうと思ても、アルディーノに移行しなくてなナラナイので、ちょっと時間を食いそうです。なので、当面はLED表示で行くのかもしれません。ただ、小形機器を作ることがあれば、カラー液晶に手を伸ばすかもしれませんが。
さて、御託ばかり並べていないで、肝心の動作確認です。下図は200パルス/回転のロータリーエンコーダをめいっぱい回したときの表示器への書き込みパルスを示します。要するに、速いスピードでの書き込みが、当初に期待通りの時間で行われているか確認しています。これを見れば、わざわざ動画にしなくてもSi5351Aと表示器の動作が正常であることがわかります。
ロータリーエンコーダを高速で回したときのLED書き込みパルス
黄色はLED表示器への6桁分の書き込みパルス
(6桁分の6パルスが重畳して1パルスに見えている)
紫色はSi5351Aの出力信号
(相変わらず書き込み時に信号ブランクが発生)
これを見ると、割り込みがかかってSi5351Aに周波数設定し、表示器に書き込む時間の合計はCPUクロックが20.345MHzのときで3.4mS(図中に儿で表示されている)でした。これなら、秒間300パルスのロータリーエンコーダで回しても、追随するので、実用上十分なスピードで動作することがわかりました。めでたしめでたしです。
ということで、そろそろSi5351Aのネタも尽きてきました。最後に、各種の発振器の特徴についてまとめておきましょう。
表 各種発振器の特徴の整理
評価項目 | 回路規模 | 動作周波数 | 近傍C/N | 狹帯域Spur. | 広帯域Spur. | F変更時Splatter | プログラム(自作) |
DDS+PLL | × | ◎ | 〇 | ○ | ○ | ◎ | 〇 |
DDS-AD9850 | △ | △ | ◎ | △ | △ | ○ | ◎ |
DDS-AD9952 | × | ○ | ◎ | △ | △ | ○ | ◎ |
Si570 | ◎ | ○ | ◎ | 〇 | × | × | × |
Si5351A | ◎ | ○ | ◎ | 〇 | × | × | × |
これは私の勝手な価値基準で評価していますが、物理的な特性はともかく、プログラム難度は、自作しないで公開ファイルを流用するのであれば評価はまったく異なってきます。これを見ると、シリコンラボ軍団は、さすがに無線VFOは本来の用途ではないので、項目によっては評価が大きくバラつきますが、このあたりはある程度割り切って使うのであれば、無線用途「にも」魅力的ということになるのでしょう。
実は、最初は各評価項目ごとに点数をつけてみようと思ったのですが、項目ごとの点数の割り当ては、その項目をどれだけ重視するかが、個人の価値観に依拠するので、点数をつけてもあまり意味がないと思ったので、止めることにしました(笑)。
こうやって見直してみると、私の好みはなんといってもDDSです。それも400Mspsで14ビットのAD995xがいいですね。最近は1GspsのDDSもありますが、さすがに使うためにはバリアーが高いです。よって、いにしえ真空管RX/EXのローカルはDDS-AD9952に決定したいと思います。
<大陸由来(クソ)放送除去用フィルタ> 【2017.3.18】
今回のトピックは息抜き的ではありますが、実はけっこう有益な情報です。
以前にSSTさんのブログに、こちらのトップフィルタの記事が出ていまして、いたく興味を持ちました。支那からの7MHzの妨害電波は本当に醜いので、なんとかならないかとは思うも、なんせ、バンド端から至近距離にS9+40dBオーバーの強度で攻めてくるのですから、如何ともしがたい状況でした。通常のLC-BPFではさすがの切れ味を誇るDWMさんフィルタでも、この糞放送の抑圧はお手上げ状態です。
昔は、確かクリスタルフィルタで7MHz帯のものを数個切り替えて使うアプローチがあったかと記憶していましたが、さすがに特注水晶を用いたXF、それも10個単位で用意しないとバンドのフルカバーが不可能なので、これは、限られたお大尽のお遊び程度に考えていました。従って、大陸糞放送の妨害を低減するためには、ひとえにフロントエンドのIM特性を上げるしか手が無かったわけです。
それがどうでしょう?今までこちらの検討に気が付かなかった不徳を恥じる次第です。作ってみると、極めて廉価でかつ良好な特性で、素晴らしいアプローチであることがわかりました。これも、実際に手を動かさないと分からないものですね。
さて、こちらではいろいろな検討例があったのですが、とりあえず7205kHzの大陸糞放送をできる限り減衰させ、それ以上の7220kHzの同じく糞放送は撲滅、それ以上の周波数のものはほとんど聞こえなくするフィルタを作ってみることにしました。最初は、再現性がどれだけあるのか心配でしたが、出来た後にトラジェネで追い込めばいいだろうとタカをくくっていました。(その割にはTCとかで調整ができるような配線パターンにはなってないのですが、これはご愛嬌ということで。)
配線図はこちらの項番fのものを使わせていただきました。オリジナルと違うのは、マッチングトランスをFB801に、また2.7μHのRFCが無かったので1μHと1.5μHのシリーズ(2.5μH)にしてしまったことです。その他のコンデンサは「表示」されている容量だけは設計と同じになるように選んででみました。また、効果が瞬時に実感できるように、スルーとフィルターを切り替えるスイッチもつけてみました。
回路図
実装図
実装は上図のようで、いつものカッティング-ランド工法(笑)です。オリジナルは、セラミック素子の配置が、ちょっといただけない(結合しやすい?)感じがしたので、出来る限りライン状になるようにしてみましたが、こうすると、今度は部品のアースがとっ散らかってしまったので、共通インピーダンスによる結合が生じるかもしれないという、ディスアドバンテージもでてきてしまいました。実際のところ、CF素子の配置とアースの分散では、こんな低い周波数においてはどちらが悪影響があるのかは、良くわからなかったので(まぁ分離は不可能でしょう)、実現特性で確認するしかないでしょうね。
まずは、2時間で組み上げた回路をTGに掛けてみます。
作りっぱなしの狭帯域特性
出来上がりはこんな感じで、それっぽく出来てしまいました。挿入損失は3〜4dB、7205kHzにおける減衰は18dBくらいとなります。7100kHz以上は少し損失が多かったり、7205kHzにおける減衰量が少なかったりといった点はありますが、まったく部品を選別しないで、調整も無しでここまでの特性再現する「設計」は「大したもの」だと思います。具体的には、各コンデンサをトリマー+固定Cにして追い込めば、設計値まで追い込むのは難しくないと思われます。ただ、それよりは、何も考えないで配線すれば、この程度は実現できてしまうというのは、大きなメリットではないでしょうか?起案者に拍手喝采です(パチパチ)。
作りっぱなしの広帯域特性
上記のごとく、保証減衰量は65dB程度となりました。騒がしい大陸糞放送は7250kHz以上にもかなりあるので、そいつらの電圧が1/1000以下になるっちゅーのは非常に気分がいいです。いままで、この糞放送がわが物顔にのさばっていて、これらの混変調(うわー懐かしい言葉)、相互変調で妨害されていた影響が無くなるのは非常に気持ちのいいことであります。
とはいっても、このフィルタ、構成素子がセラミックです。それも6段もの素子を使ってるので、リニアリティが気になります。え?受動素子なのにリニアリティって何よ?と仰る方は、少し、どこかで勉強しておいてください。なので、というわけでもないですが、IMDを測っておきました。さっそく、新規シグナルアナライザのMS2830Aのお出ましです。
IMD特性(参考)
入力は2.8dBm×2(中途半端ですが、たまたま、ATT抜けでこの値だったので、まぁ、レンジとしては大きく外すことはないだろうと思って、そのまま測った)で、得られたIM3のキャリアに対する相対値は52dBですから、IIP3は29dBm程度になります。まぁ、この簡易法ではIMの出方が理論通りであることを仮定しています。ところが、セラミック素子の場合はそうじゃないかも・・・なんて懸念も(大いに)ありますが、まぁ、其処のところは、気になる人が追試してください。最初に述べたとおり、あくまで、ここは「息抜き」ですから(笑)。
で、もとに戻って、これだと、35dBm以上のIIP3を持つ半導体アップコンバージョン機以外では、フィルタの特性がpoorなことでIM影響が起きることはありません。実際に、いにしえ真空管機、TRX305につないで聞いてみると、夕方近くの時間帯(糞放送の勢力増大時間帯)の弱い信号認識には確かに効果があるようです。もっとも、フィルタ入れた場合のノイズの減り方は、単にフィルタ挿入損失(3dB〜)のせい?なんて意地悪な見方もできますが、弱い信号が聞きやすくなる効果は「ある」と思います。
特にTRX305はフロントエンドが若干弱めなので、聞いた感じの改善効果は真空管機より大きい感じです。これが、トップに小信号FET等を用いた自作機ならば、その効果の実感度合はより多いのではないかと思います。なので、真空管機やHigh−IPな半導体を用いた機器よりは、簡易な自作機にこそ有用なのではないでしょうか?
厳密に比較するなら、フィルタのあとに3dB程度のノートンアンプ(Gain=6dBのアンプに3dBのATTをかますとか)とかを入れて比較してみるといいでしょう。その場合のアンプのIIP3は35dB程度あることが望ましいですが。
さて、最後に面白い図をお見せしましょう。
通り抜け???
このフィルタを0〜40MHzで周波数スイープさせたのが上図です。なにやら19MHzくらいのところに大きな「通り抜け」があるように見えます。これはいただけませんね。しかし、どういうメカニズムでこんなに大きな通り抜けができるのか、良くわかりません。もしかして測定ミス???なんて思ってしまいます。まぁ、実際に19MHz近辺の信号をこのBPFに通過させて、別のスペアナで見ても、このレベルの信号(通り抜け)が確認できますので、もしかすると、SW回路からの回り込みの可能性?もあります(このような低い周波数ではちょっと考えにくいのですけど)。しかしながら、この帯域ならば受信機の方の入力BPFで十分阻止できるはずなので、問題にはならないと思いますが・・・・なんだか不思議です。
<プログラマブルアッテネータ(の残骸)> 【2017.5.24】
今回は恥ずかしながらうまく行かなかった事例のアップです。備忘録ですので、興味のない方はスルーしてください。
昔購入したプログラマブルATT
大昔に、ハムフェアで↑こんなATTを購入してありました。USジャンクを専門に扱っていた、おじーさん?のやっていた埼玉の会社からだったと思います。確か、この販売元を直接訪ねたこともありましたっけ・・・・。実は、このATTは買ってからかなりの期間放置しておいたのですが、何を思ったか、ロータリーエンコーダでATT量を可変してやるモジュールユニットに仕上げようと考えたのです。この部品の特徴は、127dBものATTを1dBステップで制御できるというところに有ります。127dBなんてアッテネーション量が、廻り込みなくこんな小さなユニットで実現できるのかどうか?も含めて興味がありました。
このATTはバイナリーでATT量が規定されているので、ドライブするのは極めて簡単になりそうです。1バイトの変数を、入力されたロータリーエンコーダのUP&DN信号に応じて増減して、その値をATTにそのまま出力すれば、以上終わりだからです。もちろん表示もさせる必要がありますが、これも簡単に済みます。
制御回路のブロック図
上記の機能をブロック図にまとめると、こんな感じになりますが、簡単に実現できそうですね。事実、会社から帰って寝るまでの短い時間を使っても、3日で骨格は作り上げることができました。
全体写真(動作中)
PWZにしては珍しく?LCD表示です。私の場合LCDは、あまり好みではないのですが、収容ケースを大きくしたくないので仕方なしに白抜きのLCD表示器を選んでみました。
プログラムは簡単すぎて、80ラインで終了です。動かしてみると、殆ど一発で動作OK。まぁ、やってることが簡単ですからねぇ。とここまでは順調でした。では、ということで、127dBもの減衰がまともなのかいな?と精密に測定を始めたのが運の尽きでした(苦笑)。運の尽きとはよく言ったもので、「まともに動く」という幸「運」が尽きる・・・・すなわちATTユニットが故障してしまったというわけです(苦笑)。
というのも、動作確認をしているうちに、なんと1dBのブロックが誤動作を始めました。制御電圧印加時は1dBのATT量のはずなのですが、このユニットだけで20〜30dBの減衰が起きるようになってしまいました。最初は何回かこんな動作に落ち込んだ「だけ」だったのですが、調査で何度もON/OFFを繰り返すと、最終的には20〜30dBの減衰量が定常的に表れるようになってしまいました。
こうなると、もし、1dBのユニットだけに不具合が発生したのなら、このユニットは外してしまって、分解能を2dBにしてしまえ!と乱暴なことを考えて、ATTステップを2dBにプログラムを書き換えました。ところが、今度は2dBのブロックというかユニットでも上記と同じような現象が出始めました。
全く持って厄介ですねぇ。この調子だと、このATTの全ユニットで同じような不具合が起きることになるのかもしれません(苦笑)。購入の時点で、すでに製造後かなりの時間が経過しているように思われたのですが、購入後からも10年が経過しています。さすがにもう経時的にリレーの接点寿命なのでしょうか????
ということで、接点復活を期待して、多数回接点「摺動」試験を実施してみました。
内部リレーの接点を何度も接触させることで、接触不良の度合いが改善される(酸化物が剥がれる?)かもしれないと考えました。なので、AVRで接点オンオフ(=ATT量可変)を繰り返すプログラムを作って動作させていました。あまり回数が多いと、リレーの寿命にも関わってくると思って、まぁ300回くらいON/OFFさせてみたのですが、結果は散々でした。接点復活はおろか、良好だった接点も劣化してしまったようで、全ユニット8つのうち、6つのユニットがダメになってしまいました!これで、このATTはまったく使用不能になってしまったわけです。
これには、まさしく「あんぐり」です。もともと古いジャンク(どのくらい使われたか不明)の購入であり、さらに購入から10年も経っているので、仕方がないのかもしれませんが、Made in Americaにちょっと不信感を持ってしまったことも事実です(うちの車なんか13年間トラブル無しだぞ:笑!)。今でもこの会社のプログラマブルATTは、Ebayでかなり拾えるのですが、こんな状況を見ると、さすがに取り寄せる気はおきません。
ボックスに収まったコントロール回路
さて、今後どうするかですが、先に書いたようにWineschelのアッテネータを新たに調達する気は起きないのですが、もしこのまま強引に先に進めるのであれば、ATT部分の自作ということになりますでしょうか?帯域を欲張らずに500M〜1GHzくらいのものなら、同軸リレーを使えば何とかできそうな気もしますが、今すぐには、今回のWineschelショックから立ち直るのは無理です(笑)。時期を見て、やる気になったら上記の玉手箱を開いて、自作を試みようかと思っています。