高性能なPLL発振器って? 2019.4.2
すこし前にこんな投稿をいただきました。
Si5340はジッタが90fsと優秀です。
他と比較すると、簡単な水晶発振回路だと1.5ps、ジッタクリーナにつかったSi5317で300fs、
DAI4392やDAC9038SにつかったSi514で250fsです。それらに比べるとおよそ1/3程度に精度が向上しています。
どういう用途に使うかですが、ASRC(非同期サンプルレートコンバータ)あたりが面白いかな?
もうすこし調べてみましょう
データシートの最初のページにはまずはアプリケーションが書いてあります。
Si5340は複数のクロック出力が得られることから、それらの用途らしいものが書いてありますが、
あまりピンとこないな〜。でも、SRCとDAIを搭載する場合は、このSI5340だけですべてのクロックがつくれそうです。
IC内部の構造は下記のようになっています。Si5340では基準となるクロック入力が4つ、
クロック出力は4つとなっています。
パッケージがすこし小さい(QFP44)
さて、まずはどんなものを使ってみたいとは思いますが、いかんせんパッケージが小さいようです。
0.5mmピッチのQFP44です。こんなものは変換基板がなければつかうことができません。
パッケージが小さいです。
ICはDIGIKEYあたりで調達できますが、またまた変換基板を探す必要があります。
変換基板はどうしよう?
変換基板の在庫が多いaitenndoさんのHPでQFP44で探してみると、これがヒットしました。最大QFP144までつかえるようですが、
ちょっと難があって、Si5340裏面のパッド用の穴がありません。どうしようかな?
AITENDOさんのこの変換基板がつかえそうですが・・・Si5340の裏面半田用のパッド穴がありません。
変換基板をどうするかは、すこし悩みそうです。
変換基板はQFNでした 2019.4.4
変換基板を勘違いしていました。
といことでamazonでQFN44で検索してヒットしたもので、早く届きそうなものを入手しました。
これが早くとどきそうです。ちゃんと注文はできたのだけど、さきほどみたら在庫切れになっていました。
ちゃんと、とどくかな?
部品到着 2019.4.9
注文していた部品がamazonとDIGIKEYから到着しました。
変換基板はQFN44とQFN48の兼用になっています。表裏でパターンが異なっています。
Si5340です。結構大きめのパッケージです。
まずはデータを揃えましょう!
Si5340を動かすにはデータシートは必須ですが、本体のマニュアルにはコントロールの方法が書いてありません。
いちいち、ネットで探すのも面倒なので関連しそうなファイルをダウンロードして保管しておきましょう。
Silicon Labのサイトから”Si5340/41”で検索して、とりあえずところかまわずダウンロードです。
Si5340D-B-GM.pdf
AN947.pdf へのリンク
AN1006-Si534x-8x-RevB-RevD-Differences.pdf
an1035-timing-solutions-12g-sdi.pdf へのリンク
an1093-achieving-low-jitter-using-an-oscillator-reference.pdf
ClockBuilder-Pro-README.pdf
PB-1507101-Si5347-46-45-44-42-41-40-v1.0-datasheet-release.pdf
si534x-8x-9x-recommended-crystals-rm.pdf
Si534x-Applications-Notice-Part-Per-Trillion-Frequency-Offset.pdf
Si5341-40-D-DataSheet.pdf
ug286-clockbuilderpro-dongle.pdf
あ!
これも必要そうです。でも、上のリストと同じような名前のものだけど違うのかな?
Si5341-40-D-RM.pdf
ClockBuilder PROが必要〜 2019.4.15
とりあえずデータシートとリファレンスマニュアルを印刷しておきました。時間のあるときに眺めて、どうやって使うかを勉強していきましょう。
いずれもPDFファイルなので、画面上で見ることができるのですが、やはり印刷してあるほうが読みやすいです。これも年かな〜。
マニュアル類はデータシートとリファレンスで約150ページです。
でもマニュアルをみていても、よくわからないです。情報がかなり欠落している感じです。
というのも、この手の素子をつかうにはマニュアルをみて定数を設定するというより、専用のアプリソフトを動かして必要な情報を得るというのが
一般的なようです。そこで、必要になるのが「ClockBuilder PRO」というソフトのようです。
ということで、SiliconLabのWEBサイトからソフトをダウンロードです。
このソフトの容量は55MB程度なので、ダウンロードならびにインストールにはさほど時間がかかりません。
最新バージョン?
さっそくインストールしましたが、バージョンの日付は2019/4になっています。ひょっとしてダウンロードした日付がでているだけかと思いましたが、
この日付のバージョンのようです。ということは、つい最近バージョンが変わったということですね。
かなり最近のバージョンをインストールすることができました。
動かしてみましょう!
うごかすと、このような画面がでてきます。ここからCreate New Projectを選択して各種の設定を行っていきます。
これが起動時の画面です。
入力は入力からはじまって、出力周波数の設定をそれぞれの画面ですすめるだけのようです。これは簡単です。
この画面は入力クロックの設定です。
最後には、レジスターマップを表示させることができます。すなわち、ここで表示されたデータを素子に書き込むということなのでしょう。
しかし、書き込む量は結構多いです。だいだい300データくらいは書き込む必要があります。もっとも、デフォルトの値もあるので、
実質必要なのは数10程度でしょうが、まあ何がデフォルトで何が書き込み必要かを区別するのは大変ですから、
すべてを書き込むことになるのでしょう。
レジスターマップを得ることができます。これを書き込めばいいのでしょう。
実際に動かしてみましょう!
まずは、ICのピンに加える信号線を書き下しておきます。これにもとづいて配線をしていくわけですが、
書いていて色々と気づきました。
・GNDピンがない・・・・どうやらGND PADがすべてのGNDのようです。ということはGND PADの半田付けが
不十分だとまったく動かないということですね。十分に半田付けをしなくっちゃ。
・SCKはどこ?・・・・・SCLK(pin14)がSCKのようです。
動作電圧は3.3Vと1.8Vが必要です。3.3Vはいいとして1.8Vはどうやってつくるかな?簡単にLM317あたりで作りましょう。
まずはICの周辺の配線をイメージします。
次は、いよいよ半田づけです。
0.5mmピッチのQFN44ですが、半田付け自体はさほど難しくはないのですが、なにが神経をつかうかといえば、
ICの位置あわせです。これがすこしでもずれた状態で半田付けを開始してしまうと、リカバリーが大変です。
まずは表面の半田付け。そして裏面の半田付けです。
裏面の半田付けが終わったら、導通しているか一応確認です。Si5340のクロック入力端子は内部でプルダウンされているので、
その入力端子とGND PAD間での抵抗を測定しました。測定したところ「9.8kΩ」とでたので、GND PADの半田付けは大丈夫そうです。
まずはICのピンマップつくりです。 2019.4.16
変換基板にのせて配線をするのですが、変換基板のピンだしが2列になっているので、ボケ〜と配線をしてしまううと
絶対にピンを間違えてしまいます。そういったことを防ぐために、事前にエクセルでピン配置を書いておきます。
こうすれば、かなりミスをする確率がすくなくなります。
エクセルでピン配置を事前に書いておくと、配線時のミスがすくなくなります。
半田付けするぞ!
まずは変換基板の裏面側にできる限りのパスコンを集中配置しておきます。あとは、GND PADからGND線を出せるように
変換基板のあまりの端子にGNDを接続しておきました。
変換基板の裏面側の様子です。
変換基板を小さ目の基板にのせて、評価用のボードを仕上げます。ICの消費電力は約0.5Wに昇るので
RasPi用に買っておいた小さい放熱板の貼り付けることにしました。
まずはこんな感じで評価用の基板を作りました。水晶発振器は49.152MHzのものを仮につけています。
この評価基板をどのように使うかですが、電源としては3.3Vと1.8Vの2系統が必要になります。
そこで、1.8VのレギュレータがのっているDAC4497-2.1を流用するのが便利そうです。DAC4497-2.1には
3.3Vのレギュレターも搭載されていますし、またLCDものっているので各種のチェックが簡単にできそうです。
DAC4497-2.1と接続して評価することにしました。
さて、プログラムを書いていきましょう!
まずは入力のクロックは49.152MHzですが、出力は10MHzに設定したレジスタマップを作成します。
そして、そのデータをSi5340にI2C通信で書き込むプログラムを作成しました。
これで、無事10MHzの出力がでればOKなはずです。
まずはプログラムをコンパイルしてPICに書き込み電源ON!
まずはI2Cエラーとかは発生しないので、SI5340との通信は問題ないようです。
そして恐る恐るSi5340の入力端子にオシロのプローブに接続します。
動きました!
無事に10MHzの出力が得られていることが確認できました。
一発で動くとは思っていませんでしたが、結構嬉しい瞬間です。
恐る恐る出力端子にオシロのプローブを接続です。
無事出力が確認できました。
出力も計算どおりの10MHzです。
高周波対応のオシロで波形を確認です。ダンピング抵抗もないので
リンギングが残っています。
いろいろと試してみましょう! 2019.4.18
SI5340は基準となる発振子に外付けのクリスタルが使えます。
ということで、秋月で48MHzの水晶振動子を調達してとりつけてみました。もちろん、
ソフトウエアの設定は変更します。
動かない〜・・・
外付けの水晶振動子に換えたのはいいのですが、全然動きません。
おかしいな〜。
単純にクリスタルをつけましたが動かないです。
動かない原因としては、用いる水晶振動子のタイプがデータシートに記されているものと
違うこともあるでしょうが、ちょっと腑に落ちないです。念のために外付けでさらに負荷キャパシターを
追加してみましたが、それでもうまく動かないです。
こりゃすこし宿題が発生してしまいました。
負荷キャパシタを追加してみましたが、動かないです・・・・
ここは気を取り直して、もとの49.152MHzの発振器の出力を供給することで動作の確認を行いましょう。
複数の周波数の発生
Si5340の特徴としては、最大4つの出力を出すことができます。
ということで、それを確認してみました。
OUT0に1.6MHz、OUT1に1.5MHzと互いに中途半端な値を入れてみました。
2つの異なる周波数を入れて出力させてみましょう。
それぞれの出力から異なった周波数がでていることが確認できました。
これなら、たとえば48kHz系と44.1kHzのマスタークロックの両方の出力を得ることができそうです。
意外の便利な発振器かもしれません。
2つの異なる周波数を同時に得ることができます。
基板もそろそろ考えていきましょう 2019.4.19
まずは想定される部品をSTDサイズの基板に配置していきます。
意外と必要になる部品が多いので、結構密度が高くなります。
すべてチップ部品にすればいいのですが、入手性がわるいので
抵抗がフィルムコンデンサはリード品が使えるようにしました。これらが結構面積をとります。
まずは必要になりそうな部品を載せてみました。
大まかに配線もしてみました。 2019.4.24
どの程度の配線密度になるかの確認も含めて、ざっとワイヤーを引っ張ってみました。
まだ、入力クロックの分周機能や制御用のワイヤー線はつけていません。
Si5340の入出力は、のちのちの拡張を考えて一応すべてつかえるようにしてみました。
パターンをボチボチ描き始めています。
回路図も
部品番号やピン配置はこれから変わっていきますが、暫定的に描いていきましょう。
とくにPICとの接続は、配線が簡単になるように臨機応変に変わっていきます。
回路図作成途中 → SI5340_GENERATOR_SCH.pdf
ほぼ完成?
まだ部品番号を振っていませんが、パターンとしてはほぼ完成です。
あとは部品番号を振って完成かな。あ、ベタも塗らないと。
たぶん完成? 2019.4.26
ベタを塗って、ほぼ完成です。
あとは最終チェックをして、機会をみて試作してみましょう。
発振周波数はどうするか?
この基板は基本はクロックジェネレータなのですが、どのような周波数を発振させるかのテーブルを考えてみましょう。
オーディオ用なので、使用する周波数はほぼ限定されますが、サンプリング周波数とその倍率で結構な数になります。
おおまかに、テーブルをつくるとこんな感じになります。
黄色部分が発振周波数になり、全部で27の組み合わせになります。
現状のDACのマスタークロックはおよそ100MHzが最高周波数なのですが、
最大で200MHzを想定したテーブルを考えればでしょう。
でも27テーブルを準備するのも大変だし、素直にBlockBuiderPROからでる
データテーブルを素直につかうと、あっというまにPICのプログラムエリアがなくなってしまいます。
というのも、1つのテーブルに必要なバイト数が約1kBになるので27テーブルで27kBです。
PIC18Fシリーズのもっともプログラム容量が大きなもの(64kB)を使えばはいりますが、
なんとなくスマートではないです。最悪は、その手をつかうとしても、
もうちょっとスマートな方法を考えたいものです。
ところで発振周波数は?
Si5340の発振周波数は次式でもとまります。
Fout=(Fvco×Nx_DEN)/(NX_NUM×R)
そのため、NX_DEN,NX_NUM、Rの値をうまく設定すれば任意の周波数がつくれることになるのですが、
色々な組み合わせがあります。どういう値の組み合わせにすればいいのか、マニュアルでは書いてありません。
Si514にはそのあたりが書いてあるのですが、参考になるやらどうらやらです。
さらに、FVCOがどのように決まるのかもなかなか読み取れずににいます。およそ14GHzあたりの値になるようなので、
正確にはわかりません。
まあ、ここはすこし値を読み解いていきましょう。
適当に計算してみる!
まずは入力周波数を49.152MHzで、出力周波数10MHzとした場合のNX_DEN,NX_NUM、Rをみてみましょう。
NX_DEN = 2147483648,0x80000000
NX_NUM = 1425929142272, 0x14C00000000
R = 0
となりました。R=0はおそらく2のべき乗を表すので実質R=1なのでしょう。NX_DEN,NX_NUMはそれぞれ44ビットの値で
整数部12Bit、小数部32ビットなので、およそ 2^32 で割った値になります。
ということで、読み替えた値にすると
NX_DEN = 0.5
NX_NUM = 332
R = 1
と考えてみましょう。として、Fvco=14GHzと仮定すると
Fout=(14GHz × 0.5) / (332 × 1) = 21.084 (MHz)
ちょっとあわないですね。おそらくR=2なんでしょう。そうすると
Fout=(14GHz × 0.5) / (332 × 2) = 10.042 (MHz)
となり、かなり近い値になります。そこで、FVCOを反対に計算してやると
FVCO=Fout×(Nx_NUM×R)/Nx_DEN = 10MHz × 332 × 2 / 0.5 = 13.280GHz
さて、ここでFVCOは一定の値として、周波数1MHzでのパラメータを計算すると
NX_DEN = 2147483648,0x80000000 (これは同じ)
NX_NUM = 7096696038400 (ちがう)
R = 1 (ちがう)
となりました。どうように44bitの値であるとして、実数に読み替えると
NX_DEN = 0.5
NX_NUM = 1652.328306
R = 4 (おそらく4かな?)
となるので、Foutを計算すると
Fout=(13.280GHz × 0.5) / (1652.328306 × 4) = 1.00464296 (MHz)
1MHzにちかいけど微妙に違うな〜。ひょっとして、FVCOが違うのかもしれません。
やっぱりFVCOを決定するパラメータを探し出さないとだめでしょう。
ここで、すこしブロック図をながめて答えを探ることに。
ブロック図をみると、どうやらPLLの中でMn/Mdという定数がクロックに掛けられています。
ブロック図ながめるとPLLの倍率はMn/Mdできまるようです。
そこで、このMnあるいはMd関係するパラメータを探すと、ありました!
Mn=M_NUM、Md=M_DEN
のようです。で、レジスターファイルから中身をみてみると先の計算でFout=10MHzとした場合
M_NUM = 870318080000(44Bit) = 20.26367188
M_DEN = 3224225472(44Bit) = 0.75
この値を源発振49.152MHzに掛けると
49.152MHz × 20.26367188 / 0.75 = 13.28GHz
となります。ちょうど、推定したFVCOにピッタシあいます。 あとは原発振のあとにあるPxaxbが気になるけど、
ここはおそらく1なのでしょう。
ということで、再度整理です。発振周波数は下記でもとまることがわかりました。
Fout=(Fvco×Nx_DEN)/(NX_NUM×R)
Fvco=XTAL×M_NUM/M_DEN
しかしながら、NX_DEN,NX_NUM、RならりにM_NUM.M_DENがどのようなルールで決まるのかは、
相変わらずのわからずじまいです。
まあ、ここだけ変更すれば周波数が変わるということでしょうから、データとして持つべき容量はかなり減りそうです。
必要なのは1つの周波数あたり約23バイト程度なので、27テーブル用意しても621バイトとかなり小さくなりそうです。
それぞれの周波数における変更必要なパラメータを計算しておきました。
Sampling | *fs | CLOCK | 0x0206[1:0] | 0x0235[43:0] | 0x023B[31:0] | 0x0250[23:0] | 0x0302[43:0] | 0x0308[31:0] |
(kHz) | (MHz) | PXAXB | M_NUM | M_DEN | R0_REG | N0_NUM | N0_DEN | |
32 | 64 | 2.048 | 0x0 | 0xC980000000 | 0xC0000000 | 0x0 | 0x64C00000000 | 0x80000000 |
32 | 128 | 4.096 | 0x0 | 0xC980000000 | 0xC0000000 | 0x0 | 0x32600000000 | 0x80000000 |
32 | 256 | 8.192 | 0x0 | 0xC980000000 | 0xC0000000 | 0x0 | 0x19300000000 | 0x80000000 |
32 | 384 | 12.288 | 0x0 | 0x8680000000 | 0x80000000 | 0x0 | 0x10D00000000 | 0x80000000 |
32 | 512 | 16.384 | 0x0 | 0xC980000000 | 0xC0000000 | 0x0 | 0xC980000000 | 0x80000000 |
32 | 768 | 24.576 | 0x0 | 0x8680000000 | 0x80000000 | 0x0 | 0x8680000000 | 0x80000000 |
32 | 1024 | 32.768 | 0x0 | 0xCA00000000 | 0xC0000000 | 0x0 | 0x6500000000 | 0x80000000 |
32 | 2048 | 65.536 | 0x0 | 0xCA00000000 | 0xC0000000 | 0x0 | 0x3280000000 | 0x80000000 |
32 | 4096 | 131.072 | 0x0 | 0x8800000000 | 0x80000000 | 0x0 | 0x1980000000 | 0x80000000 |
44.1 | 64 | 2.8224 | 0x0 | 0xA7E3200000 | 0xA0000000 | 0x0 | 0x49180000000 | 0x80000000 |
44.1 | 128 | 5.6448 | 0x0 | 0x865E000000 | 0x80000000 | 0x0 | 0x24900000000 | 0x80000000 |
44.1 | 256 | 11.2896 | 0x0 | 0x865E000000 | 0x80000000 | 0x0 | 0x12480000000 | 0x80000000 |
44.1 | 384 | 16.9344 | 0x0 | 0xAA8B000000 | 0xA0000000 | 0x0 | 0xC600000000 | 0x80000000 |
44.1 | 512 | 22.5792 | 0x0 | 0x89D0000000 | 0x80000000 | 0x0 | 0x9600000000 | 0x80000000 |
44.1 | 768 | 33.8688 | 0x0 | 0x89D0000000 | 0x80000000 | 0x0 | 0x6400000000 | 0x80000000 |
44.1 | 1024 | 45.1584 | 0x0 | 0x89D0000000 | 0x80000000 | 0x0 | 0x4B00000000 | 0x80000000 |
44.1 | 2048 | 90.3168 | 0x0 | 0x89D0000000 | 0x80000000 | 0x0 | 0x2580000000 | 0x80000000 |
44.1 | 4096 | 180.6336 | 0x0 | 0xAE90000000 | 0xA0000000 | 0x0 | 0x1300000000 | 0x80000000 |
48 | 64 | 3.072 | 0x0 | 0x8650000000 | 0x80000000 | 0x0 | 0x43280000000 | 0x80000000 |
48 | 128 | 6.144 | 0x0 | 0x8660000000 | 0x80000000 | 0x0 | 0x21980000000 | 0x80000000 |
48 | 256 | 12.288 | 0x0 | 0x8680000000 | 0x80000000 | 0x0 | 0x10D00000000 | 0x80000000 |
48 | 384 | 18.432 | 0x0 | 0x86A0000000 | 0x80000000 | 0x0 | 0xB380000000 | 0x80000000 |
48 | 512 | 24.576 | 0x0 | 0x8680000000 | 0x80000000 | 0x0 | 0x8680000000 | 0x80000000 |
48 | 768 | 36.864 | 0x0 | 0x8700000000 | 0x80000000 | 0x0 | 0x5A00000000 | 0x80000000 |
48 | 1024 | 49.152 | 0x0 | 0x8700000000 | 0x80000000 | 0x0 | 0x4380000000 | 0x80000000 |
48 | 2048 | 98.304 | 0x0 | 0x8800000000 | 0x80000000 | 0x0 | 0x2200000000 | 0x80000000 |
48 | 4096 | 196.608 | 0x0 | 0x8800000000 | 0x80000000 | 0x0 | 0x1100000000 | 0x80000000 |
やっぱりFVCOを決めるM_NUMとM_DENは設定周波数毎に微妙に異なるな〜。いったいどういうルールかな?
FVCOを固定にしてしまって、Nx_NUMだけを変更して周波数を変えても良さそうな気がするのだけど・・・・・
まあ、それも試してみましょう。
基板パターンを完成させましょう!
パターンの最終確認です。抵抗も表面実装部品がとりつけられるようにしてみました。
これでひとまず完成です。
回路図も修正しました → SI5340_GENERATOR_SCH2.pdf
基板のほうもできてきました。 2019.5.27
CLK5370基板です。
さて、いつ着手できるだろう????
まずは 2019.6.12
必要でない部品も含めて実装してみました。
さて、これから通電して動作確認です。この最初の通電がもっとも緊張する時間です。
ちょっと時間をおいて落ちつきましょう(笑。
まずは必要でない部品も含めて実装しました。さて、通電が緊張するな・・・・
再開! 2019.7.9
ようやく作業再開です。まず先月末は引越しの荷造りもあり、作業環境が消失してしまったのと、
今月はじめは、その荷物を開封して再度構築するのに時間がかかってしまい、結局のところ
この基板は3週間ぶりのご対面です。
で、問題は3週間も経つとなにがなにやら忘れてしまっていることが多い・・・・まだ認知症にはなってないとは思いますが・・
久しぶりのご対面です。すっかり何をどうしていたのか忘れてしまいました。
まずは動作確認から!
そういえば、まだ電源すら入れていなかったこともあるので、最低限のプログラムを書き込んで
動作の確認から行います。実は、この作業が一番緊張します。動作に問題なければ、あとは
プログラムを組み上げる作業に集中できますが、動作に問題があれば、まずはその問題探しから
はじめないといけないので、かなりの労力をつかうことになってしまいます。
まずはLCD周りのテストです。次は、Si5340の動作テストです。緊張するな・・・
LCD周りが動くことを確認したら、次はSi5340の動作テストです。
以前に10MHzの発振出力でのプログラムを組んであったので、それをそのまま書き込んで
テストです。
まずはSi5340も動くことを確認できました。
ほっ!
まずはコアな部分については動作確認ができました。残りはソフトを組みながらボチボチとチェックしていきましょう。
ソフトの仕様を決めましょう!
このクロック発振器基板の基本的な機能は下記の2通りを考えています。
@手動で周波数を設定して出力(固定的な周波数の出力でつかう)。
A外部の周波数を計測して、同等の周波数を低ジッタで出力する。
上記の2つの機能の詳細を、ジャンパースイッチで設定するか、あるいはLCDを用いたメニュー方式で設定するかです。
考えてみればそれほど多くの機能があるわけではないので、基本はジャンパーだけの設定で済みそうな気がします。
せっかくLCDや操作スイッチもとりつけられるようにしたのですが、LCDは動作の確認用に活用するとして、操作スイッチは
将来の拡張性のためにリザーブになりそうな気がしてきました。
まあ、操作スイッチは細かい仕様を決めるうえで必要になってきそうならば使うことになるのかな〜。
そもそもこの基板にある表示用のLEDとジャンパーは下記の通りです。これを利用して色々な機能を設定することになります。
大まかに各LEDとジャンパーの機能を検討していきましょう。
機能を検討! 2019.7.16
この3連休で基本ソフトが完成しました。
まず動作モードとしては3つのモードで動作します。
@固定周波数出力(SW設定)
・基板上の4つのタクトスイッチを操作して出力周波数を設定します。
・周波数はベース周波数とその倍率で設定します。
ベース周波数は32kHz、44.1kHz、48kHzの3パターンから選択します。倍率は64,128,256,384,512,768,1024,2048,4096の9パターンから設定します。
スイッチでベース周波数と倍率を設定して周波数を選択しますので、合計で3×9=27通り(厳密には重複もあるので26通り)の周波数を出力することができます。
もっとも低い周波数はベース周波数32kHz、倍率64の場合で32kHz×64=2.048MHz。そして最大周波数は48kHz×4096=196.608MHzになります。
・設定値はLEDおよびLCDに表示されます。LCDはあれば詳細が表示されますが、LEDと情報量は同じです。
・設定値はEEPROMに記録されますので、次回の電源投入時には前の値を再現します。
A固定周波数出力(ジャンパー設定)
・上記のSW設定と同じですが、SWでの設定の代わりにジャンパーにて設定します。
・ベース周波数をW5,W4で設定し、倍率をW3、W2,W1,W0で設定します。
・設定値はLEDに反映されると同時に、LCDにも表示されます。
B入力周波数追従型出力
・入力周波数を計測して、その測定値に対する規定の周波数を出力します。
・規定値はベース周波数32kHz、44.1kHz、48kHzの3パターンと倍率64,128,256,384,512,768,1024,2048,4096の9パターンの掛け算です。
最低周波数は2.048MHzで最高周波数は196.606MHzです。
・概ね誤差2%以内の周波数を受信した場合に、規定値を出力します。
たとえば、24.3MHzを受信した場合は、出力周波数は24.576MHz(48kHz×512)となります。
まず、ジャンパーの機能を整理しておくと、
ジャンパー機能
OPEN | SHORT | 備考 | |
W7 | 固定周波数出力 | 入力周波数追従型出力 | |
W6 | 固定周波数出力(SW設定) | 固定周波数出力(ジャンパー設定) | W7=OPEN時のみ有効 |
W5 | ベース周波数B1 | B1 B0 ベース周波数 − − 不定 − ○ 32kHz ○ − 44.1kHz ○ ○ 48kHz −:OPEN ○:SHORT |
固定周波数出力 (ジャンパー設定) のみ有効 W7=OPEN W6=SHORT |
W4 | ベース周波数B0 | ||
W3 | 倍率S3 | S3 S2 S1 S0 倍率 − − − − 不定 − − − ○ 64 − − ○ − 128 − − ○ ○ 256 − ○ − − 384 − ○ − ○ 512 − ○ ○ − 768 − ○ ○ ○ 1024 ○ − − − 2048 ○ − − ○ 4096 ○ − ○ − 不定 以降不定 |
|
W2 | 倍率S2 | ||
W1 | 倍率S1 | ||
W0 | 倍率S0 |
次にLEDの表示機能です。
LED表示
固定周波数出力 (SW設定) |
固定周波数出力 (ジャンパー設定) |
入力周波数 追従型出力 |
|
F3−F0 | SWでの倍率設定値 | ジャンパーでの倍率設定値 | 入力周波数の倍率値。 ただし入力周波数が規定値以外の場合は 全点灯。 |
M1,M0 | SWでのベース周波数設定値 | SWでのベース周波数設定値 | 入力周波数のベース周波数値。 ただし入力周波数が規定値以外の場合は 全点灯。 |
M2 | Si5340が内部で出力値を校正している間は点灯(約300ms) | ||
M3 | 消灯 | 点灯 | |
S1 | LOSS OF AXBX時に点灯(入力信号が途絶えた場合) | ||
S0 | LOSS OF LOCK時に点灯 |
ソフトのチェック!
ソフトのチェックの時にはジャンパーの設定を色々と変更しながら進めますが、LCDとジャンパーがやや重なることもあり
ジャンパー設定がしやすいようにLCDはすこし浮かしてとりつけました。このときに便利なのが、連結ピンです。
これを途中に2つかますことでLCDを浮かしています。
連結ピンをつかってLCDを浮かしてとりつけています。
これでジャンパーピンの設定がしやすくなりました。
入力周波数追従型出力のテストにはSRC4137を使いましょう!
固定周波数出力の部分についてソフトのチェックが完了しました。入力周波数追従型出力の部分のチェックにはいりますが、
そのためには外部からクロックをき供給する必要があります。
テストのためのクロック源にはSRC4137を使うことにします。SRC4137のクロックは原発振に49.152MHzと45.1584MHzの水晶発振器を
もっており、それらを1/2、1/4、1/8、1/16分周する機能がありますら広い範囲での周波数を得ることができます。
SRC4137のクロックは黄色の矢印部分から失敬しました。
SRC4137と連結させて動作チェックをしている様子です。
入力周波数追従型出力の動作も問題ないことを確認しました。
ちなみに表示はこんな感じになります。
入力周波数追従型出力時の表示モード。
上段が入力されている周波数の判定結果で、下側に発振しいてる周波数が表示されます。
なお、入力周波数が規定値でない場合は、現状の周波数(概略値)と
入力が有効でない旨の表示をおこないます。
入力周波数の測定はPIC内部のカウンタをつかって計測していますが、それほど精度はでませんので
計測器としてつかうには無理がありますが、それでも想定されう誤差は0.1〜0.2%程度に収まっているのかな〜
と思ったりです。一度正確にはかってみましょう!。
入力が規定値でない場合の表示例です。
出力波形は?
出力波形はCMOSレベルでの矩形波になりますが、差動出力になっていますので
2位相の出力が得られます。普通につかうにはどちらでつかってもいいでしょう。
出力はコンプリになります。
もう1台を作る!
動作チェックはできたのですが、チェックした範囲が入力周波数追従型出力時で最高周波数が49MHzだったので、
もっと高い領域でも問題ないかを確認しておこうと思います。高い周波数の発振器は手元にないので、
もう1台のCLK5340を作ることにしました。これだと現状のソフトで最高で約190MHzの出力を出すことができます。
Si5340を回収!
ただ、もう1台をつくるにも肝心のSI5340が手元にありません。それに結構高いICでもあるので、
動作確認につかったICを再利用することにします。これからが、少々乱暴な外科手術です。
動作確認に使用した基板から必要なICを回収します。
変換基板のみを取り出して、できるだけ周囲の部品を取り除きます。
ICの周囲に熱伝導を助けるためのリード線を巻いて、たっぷりと半田を流し込みます。
ICは裏面のパッドにも半田がありますので、裏面からの熱供給を行うために
もう一本の半田ゴテを卓上のバイスにとりつけて取り外しのスタンバイです。
取り外しのときのコツは
@タップリと半田をつかい、十分に加熱する。
A半田が溶けて、ICが浮くまで加熱しつづける。
BICが浮いたと思ったら、一気に基板に衝撃を与えてICを取り外す。
Bを実行すると、溶けた半田がどこかに飛んでいきますので、机の周囲は片付けたうえで行います。
溶けた半田が他の基板にでもへばりついたら、それはそれで面倒なことになります。
取り外したICにはヤニがべったり。これはアルコールで除去すれば綺麗になります。
もう1台も完成!
とりはずしたSI5340と水晶発振器を活用して、もう1台を組み立てました。動作に必要となるもの以外は
とりつけていません。とくにSI5340の入出力には多くの抵抗とコンデンサがとりつきますが、必要なところだけを
とりつけています。そのため、極めてシンプルないでたちになりました。
もう1台のCLK54340が完成しました。取り外したSI5340が動くかどうかが心配ですが・・・・
動きました!
SI5340を取り外すときには大量の熱量を加えているので、ICが壊れないかどうかが心配の種ではあります。
でも、いままでの経験から熱でICが壊れたことって、ほとんど記憶がないので大丈夫だろうと思っています。
まあ、特性がすこし劣化しているかもしれませんが・・・・それについては・・・わかんないです。
とりあえず、電源をいれてみたところ問題なく発振していることが確認できましたので、
SI5340は動いているようです。
再生させたSI5340をつかったCLK5340の動作テストです。緊張するな〜!
無事動作しました。
2台の連結動作!
もう1台のCLK5340が完成したところで、高い周波数でも入力周波数追従型出力が動作するかを確認しておきましょう。
2台を連結して高い周波数での動作テストです。左側が発振側、右側が受信側です。
入力周波数196MHzでも問題なく動作しました。
196MHzで動作は確認できましたが、クロック周波数は74LVC74というロジックICでうけているのですが、
その動作周波数の最高値が標準で250MHzで、、最低保証値は150MHzにしかなりませんので、
実際に安定して動作させるのは150MHz以下と考えたほうがよさそうです。
ただ、現時点でのDACでのシステムクロックの最高周波数は100MHz程度なので、問題のないところでしょう!
実際のシステムに組み込んでみる!
長くなってきたので次項に移ります。
(PART-1おしまい。PART-2へ)