|
秋が日に日に深まっています。家の中にいる時間が増えてきました。
久しぶりに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(赤)の出力波形です。
確かに、90度(4分の1周期)ずれています。ただ、矩形波が出力されるはずなのですが、私のpico scopeが上限10MHzですので、波形がなまっているかもしれません。
回路図です。5Vを3端子レギュレータで3.3Vに落としていますが、Si5351Aだけなら3.3Vに直接接続してもOKです。
秋月のI2Cレベル変換モジュールPCA9306をArduino UNOとSi5351Aの間に入れました。(入れなくとも動作しますが、安全のために入れました。2017.10.16追記)
ブレッドボードです。
|

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- その他コンピュータ




位相も変えられるのですか?知りませんでした。
私の方はスプリアスの少ない 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 ]