Si5351Aを検討する その2
- 2016/03/04 15:05
- カテゴリー:make:
前回は,Si5351Aと26MHzのTCXOを買い込み,設定値をツールで作り,I2Cにはmbedを使って試して見ようというところまで書きました。今回はその続きです。
ともあれ,回路を作らねばなりません。SI5351Aは10ピンのSOPですので,0,5mmピッチの変換基板にのせて,DIPに変換します。こういう場合,0.1uFのパスコンをチップで一緒にのせてしまうとよく効くし,綺麗です。
ついでに,TCXOものってけてしまいましょう。裏側にベタGNDがありますから,ここにTCXOをハンダ付け,ちょこっと配線をして完成です。さらにI2Cはプルアップ抵抗もここに取り付けてしまいます。
これをブレッドボードに差し込み,mbedのI2Cと繋ぎます。
mbedのサイトを見ていると,同じmbedのNXPのチップ用に,Si5351の設定プログラムがアップされていました。ありがたいことです。早速使わせてもらうことにし,STM32F401用に修正してコンパイルしました。
動かしてみたところ,I2Cは動いているようなのですが,Si5351Aは黙ったまま。おかしいなあと見直して見ると,なんとVDDとVDDOが繋がっていません。VDDOというのは,出力ポートの電源で,本体のVDDとは分離されています。これで,クロックを与える相手の電源に合わせる事が出来るのですが,ここをうっかり配線するのを忘れていいました。
繋いで見ると,あっけなく波形が出てきます。本当にあっけなくです。0.4ppm程のズレがありますが,それは原発の26MHzのズレがそのまま出ているようですので,気にしても仕方がありません。計算すると,とりあえず10MHzも9.765625MHzも,ちゃんと出ているようです。
26MHzの原発:25.999988MHz
10MHz:9.99999586MHz
9.765625MHz:9.76562085MHz
こんな感じです。どれも-0.4ppm程度です。
ただし,オシロスコープで周波数を計ってみると,10MHzの周波数は変動しないのに,9.765625MHzはふらふらと周波数が変動するんです。
どうやらこれが,分数分周の副作用のようです。
分数分周というのは言葉の通り,分周比を分数で設定出来るものですが,普通にカウンタを回していたら2のn乗しか設定出来ません。
これ,わかりやすく言うと,10段の階段を3回で登るにはどうするか,という話です。3-3-3で飛ばして登れば,1つ余ってしまいます。そこで3-3-4という具合に,1度だけ4段飛ばすんですね。そうすれば10段の階段を3回で登ることができます。
しかし,3段と4段とでは飛ばした段数がちがいますので,3段と4段は同じ長さではありません。長い目で見れば10段分の長さですが,1回ごとに見れば,長さが違うわけです。
今回の分数分周も同じような話で,長い目で見れば(つまり平均では)9,765625MHzなんだけども,短い目で見れば(つまり1周期や2周期では),9.765625Hzではないのです。これはつまり9,765625MHz以外の周波数成分,すなわちスプリアスを含んでしまうということです。
最近は無線でこの技術がよく使われるため,特にスプリアスのない綺麗な波形が必要ですから,なんとデルタシグマを使ってスプリアスをぱーっと高い周波数に追いやったりするそうですが,Si5351Aがそういう高度なことをやっているかどうかは,わかりません。
とはいえ,私の場合,周波数カウンタのタイムベースに使いたいわけですから,長期的な精度が出ていれば全然OK。分数分周の問題は,私にはあんまり関係ないと,逃げる事にしました。
さて,ここでまた一区切り。ここまでで分かった事は,
・Si5351Aは外部クロックを入力しても動く。
・レジスタの設定値はSi5351Cで作って,ちょこっと修正。
・I2Cで書き込めば,さくっとお望みの周波数が出てくる。
です。私は高周波をやりませんので,波形の純度はあまり関心がなく,長期レンジにおける精度だけ気にしていれば良いという,気軽なご身分ですので,基礎検討はここまで。
あとは,これを実用的なシステムに完成させる検討です。そう,mbedをそのまま組み込めません。そもそも,100バイトほどのレジスタ設定をI2Cでやった後はなにもすることがなく寝ているだけなのですから,mbedはもったいない。
ここは,安価なマイコンにやってもらうことにしましょう・・・続く。