JH7UBCブログ

アマチュア無線、マイコンなど趣味のブログです。

全体表示

[ リスト ]

 秋が日に日に深まっています。家の中にいる時間が増えてきました。

 久しぶりにArduino UNOを引っ張り出してきて、実験を始めました。

 まず、昨年12月にやっていた3チャンネルクロックジェネレータSi5351Aの実験の続きです。

 出力の位相を制御する実験です。昨年は、これがあまりよく分からなかったのですが、JA2GQP局のブログとそこで紹介されているTj Labのサイトを見て、ようやく理解できました。

 Si5351Aの位相制御(遅延制御)は、レジスタ」165(CLK0),166(CLK1),167(CLK2)のbit4〜bit0の値で行います。

 その値は、次の式で与えられます。(マニュアルAN619 p10より)

 CLKx_PHOFF[4:0] = Round(Desired Offset (sec) × 4 × Fvco)  (FvcoはPLLの周波数)

 設定値をN,遅延時間をtdと書くと

 N = td * 4 * Fvco ・・・(1) ( 0<= N <=127 )となります。

 CLK1をCLK0に対して位相を90度遅らせる実験を行います。

 位相を90度遅らせるということは、出力信号の周期をTとするとT/4遅らせることです。

 出力の周波数をFoutとするとT=1/Foutですから

 td = 1/(4*Fout) ・・・(2)

 (2)を(1)に代入すると

 N = 1/(4*Fout) * 4 Fvco = Fvco/Fout となります。

 つまり、Fvco/Foutの値をレジスタ165〜167にセットすれば良いことになります。

 具体的に実験します。

 当ブログのSi5351その9(マルチチャンネル化の実験)のプログラムを利用します。

 Fvco=PLL周波数は900MHzとし、Fout=10MHzとするとN=900/10 = 90 となります。

 スケッチの中では、dividerの値になります。

まず、
#define CLK0_PHOFF 165
#define CLK1_PHOFF 166
を加えて、setup()を次のように書き換えます。

void setup(){
  Wire.begin(); // Arduino is Master
  Si5351_init(); //Si5351 initialize
 
//PLLAのセット 900MHz,CLK0=10MHz
  frequency = 10000000;
  divider = 900000000 / frequency;
  if (divider % 2) divider--;
  PLL_Set('A',frequency,divider);
//CLK0の設定
  Si5351_write(CLK0_CTRL,0x4C); //CLK0 Sorce PLLA
  MS_Set(0,divider);
  Si5351_write(CLK0_PHOFF,0);//CLK0 delay 0
 
//CLK1の設定
  Si5351_write(CLK1_CTRL,0x4C); //CLK1 Sorce PLLA
  MS_Set(1,divider);
  Si5351_write(CLK1_PHOFF,divider);//CLK1 delay T/4 (90degree)
 
  Si5351_write(PLL_RESET,0xA0); //Reset PLLA and PLLB
}

 最初、PLL Resetをしないで実験をしたら、位相が変わりませんでした。
 CLK0,CLK1の設定の後、PLLをリセットしたら、位相が変わりました。

 CLK0(青)とCLK1(赤)の出力波形です。

イメージ 1

 確かに、90度(4分の1周期)ずれています。ただ、矩形波が出力されるはずなのですが、私のpico scopeが上限10MHzですので、波形がなまっているかもしれません。

 回路図です。5Vを3端子レギュレータで3.3Vに落としていますが、Si5351Aだけなら3.3Vに直接接続してもOKです。

 秋月のI2Cレベル変換モジュールPCA9306をArduino UNOとSi5351Aの間に入れました。(入れなくとも動作しますが、安全のために入れました。2017.10.16追記)

イメージ 3


 ブレッドボードです。
イメージ 2


 なお、以上をまとめて、JH7UBCホームページに掲載しています。


 

閉じる コメント(6)

顔アイコン

位相も変えられるのですか?知りませんでした。
私の方はスプリアスの少ない 1Hzステップに嵌っています。
ボケ防止に最適かと思います。

2017/10/10(火) 午後 7:12 [ JA1QVM ]

顔アイコン

> QVMさん こんばんは
そうなんです。位相を変えられます。
今回は、90度ですが、いろいろ変えられます。
90度の位相差は、いわゆるIQ信号ですので、これで何かできないかと考えています。

2017/10/10(火) 午後 9:25 [ JH7UBC ]

顔アイコン

綺麗なI,Q信号でしたら、当然イメージリダクション・ミキサー(直交ミキサー)のローカルオシレータとして使えますよね!
まさにアマチュアとして理想なミキサーが出来上がります。
・・・題目の数字が Si5251Aで一つ少ないんだよな〜・・・ぼそぼそ

2017/10/10(火) 午後 10:37 [ JA1QVM ]

顔アイコン

> QVMさん
あ! タイトル間違ってました。失礼。
直しました。

2017/10/11(水) 午前 11:24 [ JH7UBC ]

顔アイコン

Si5351Aで位相の異なったClockを生成しようとやってみたのですがなかなかうまくいかず、悩んでいたところこのページにたどり着きPLL Resetが必要なことを認識しました。おかげさまで安定動作するようになりました。ありがとうございます。

2019/4/17(水) 午前 0:38 [ ts ]

顔アイコン

> tsさん
おはようございます。ブログを読んでいただき、ありがとうございます。
そうなんです。位相制御の場合は、Resetが必要です。
制御がちょっと難しいですが、Si5351Aは、便利なモジュールです。Hi

2019/4/18(木) 午前 9:21 [ JH7UBC ]


.
JH7UBC
JH7UBC
男性 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

よしもとブログランキング

もっと見る

[PR]お得情報

ふるさと納税サイト『さとふる』
実質2000円で特産品がお手元に
11/30までキャンペーン実施中!

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事