マイコンと組み合わせればVFOとして十分実用になるし安価に手に入るため、お手軽な発振器として従来のDDSにとって代わってしまったようです。
自分もVNシリーズの発振源として重宝していますが、そろそろ新しいプロジェクトということで高い周波数の発振テストを行いました。以前50MHz台のテストを行い問題なく設定周波数で発振したのを確認したので今度は144MHz帯を狙いテストしたところ、なぜか90MHz台と設定値と異なる出力周波数でした。
いろいろと設定周波数を変えながら検証していくと、どうやら80MHz以上を設定した場合ダメらしいことが分かりました。
そこで原因を探るべくまずはSi5351Aの設定パラメータの関係と、周波数設定の考え方について以前の記事をみながら再度おさらいすることにしました。
Si5351Aの周波数設定式
1.VCO周波数設定(PLLA, PLLB)
fvco = fXTAL x (a + b / c)
a...15~90, b...0~1048575, c...1~1048575, fXTAL = 25MHz or 27MHz
fvco = 375MHz~900MHz
2.VCO分周設定(MultiSynth0,1,2,...)
fout = fvco / (d + e / f)
d...4~900, e...0~1048575, f...1~1048575
3.設定周波数とパラメータ値の関係
a(16~32(36)) | c | d | R | |
80~180MHz | 2F | 500000 | 5 | 0 |
40~80MHz | 4F | 250000 | 10 | 0 |
36~40MHz | 8F | 125000 | 20 | 0 |
16~36MHz | F | 1000000 | 25 | 0 |
8~16MHz | 2F | 500000 | 50 | 0 |
4~8MHz | 4F | 250000 | 100 | 0 |
2~4MHz | 8F | 125000 | 200 | 0 |
1~2MHz | 16F | 62500 | 400 | 0 |
0.5~1MHz | 16F | 62500 | 400 | 2 |
0.25~0.5MHz | 16F | 62500 | 400 | 4 |
0.125~0.25MHz | 16F | 62500 | 400 | 8 |
62.5~125kHz | 16F | 62500 | 400 | 16 |
31.25~62.5kHz | 16F | 62500 | 400 | 32 |
15.625~31.25kHz | 16F | 62500 | 400 | 64 |
8~15.625kHz | 16F | 62500 | 400 | 128 |
さてこれらのパラメータの設定値、一見問題なさそうに見えますが、あらためてSi5351Aのレジスタマップ説明書AN619でおそらく最新版Rev.0.7の記述をたどってみると・・・
なんと2.でいうところの d + e / f 値は8以上でないとダメだということです。つまり分周比を整数にするため e / f を0にすると、d値は8以下を設定できないことになります。これは気が付きませんでした。つまりいままでの設定アルゴリズムでは80MHz以上の場合d値が5と設定できない値であったため、期待どおりの周波数が出力されなかったというわけですね。
では80MHz以上設定するにはどうしたらいいでしょうか?
この設定でd値を4とすることによって200MHzまで設定が可能になるということです。
以上を踏まえ改定版設定表を作ってみました。
(追記(2019.11.1):80MHzから100MHzまでの設定を変更しました)
(追記(2019.11.1):80MHzから100MHzまでの設定を変更しました)
a(16~32(36)) | c | d | R | |
100~200MHz※ 80~100MHz |
4/25 F 8/25 F |
625000 312500 |
4 8 |
1 1 |
40~80MHz | 4/10 F | 250000 | 10 | 1 |
36~40MHz | 8/10 F | 125000 | 20 | 1 |
16~36MHz | F | 1000000 | 25 | 1 |
8~16MHz | 2F | 500000 | 50 | 1 |
4~8MHz | 4F | 250000 | 100 | 1 |
2~4MHz | 8F | 125000 | 200 | 1 |
1~2MHz | 16F | 62500 | 400 | 1 |
0.5~1MHz | 16F | 62500 | 400 | 2 |
0.25~0.5MHz | 16F | 62500 | 400 | 4 |
0.125~0.25MHz | 16F | 62500 | 400 | 8 |
62.5~125kHz | 16F | 62500 | 400 | 16 |
31.25~62.5kHz | 16F | 62500 | 400 | 32 |
15.625~31.25kHz | 16F | 62500 | 400 | 64 |
8~15.625kHz | 16F | 62500 | 400 | 128 |
注:36MHz以上は10Hzステップ
※・・・2.の条件に依らずP1=0, P2=0, P3=1, MSx_INT=1, MSx_DIV4=3に設定
この設定表を基にコードを書き直し実機でテストしてみました。(144.10000MHzに設定)
というわけで、設定どおりの周波数で出力できました。(右上の青い周波数値)
こんばんは。こちらはLF/MFの移動運用はお休みしています。最近Si5351もいじり始めました。ところで改定版設定で80~200MHzのa=4F/25だと80MHzでVCOの発振周波数が320MHzとなって仕様の375MHz以下になってしまうのでは?あと改定前の設定でR=0はもちろん改訂版と同じR=1ですよね?良さそうなので何に使おうかと考え中です。
返信削除JH1GYEさん、こんばんは。コメント&ツッコミありがとうございます。
削除仰る通り改定版の設定表では80MHzのVCO周波数が低すぎますね。後ほど追記するつもりでしたが、80MHzから100MHzまでは、a = 8F/25, c = 312500, d = 8に設定するとVCOの発信周波数範囲におさまります。また、Rについては改定前の“0”は間違いで“1”が正しいです。
修正したコードをコンパイルしてインストールしましたら、一応8kHzから200MHzまで発振可能になりました。是非ご参考になさってください。
了解です。あとでプログラム教えて下さい。高い周波数で使う時、周波数確度を上げるためにデーターシートをよく見たらX'tal端子から外部入力できますね。でも25~27MHzでないとダメそう。GPS DOの10MHzからではちょっと工夫が必要です。X'tal端子のところにバリキャップを入れてVCXOにできればFBですが・・・。
返信削除コードはVNシリーズの流用でC言語でPIC用に書いたものですが、I2C通信が出来ればほかのマイコンでも動くと思います。当該部分を抜粋したファイルをメールでお送りすることは可能です。
削除