秋が日に日に深まっています。家の中にいる時間が増えてきました。
久しぶりに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
#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);
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
}
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ですので、波形がなまっているかもしれません。
接続回路図です。
ブレッドボードです。