90度位相差の信号を生成するために、ジョンソンカウンタを考えたけど、クロックが1/4になってしまうので、結局従来のSi5351Aを5MHz以上で使うことにした。
AMのSDRの実験をしたくて電波が安定して受信できそうな中波の受信機を考えていたけど、短波でもラジオNIKKEIとか大陸の強力な放送局とかあるので、何とかなるだろう。
VCOの下限は600MHzということなので、600MHz付近のVCO周波数を設定するようにソースを変更した。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
divider = 600000000 / freq; if(divider % 2) divider++; pllFreq = divider * freq; if(pllFreq < 600000000) { divider += 2; pllFreq = divider * freq; } mult = pllFreq / xtalFreq; l = pllFreq % xtalFreq; f = l; f *= 1048575; f /= xtalFreq; num = f; denom = 1048575; setPLL(Si_PLL_A, mult, num, denom); setSynth(Si_MS0, divider, 0); TWI_Send_Register_(Si_CLK0_PHOFF, divider); setSynth(Si_MS1, divider, 0); TWI_Send_Register_(Si_CLK1_PHOFF, 0x00); |
逓倍数を一旦偶数にしているけど、どうせ分数が追加されるので意味がないかも。 下から3行目と一番下の行で、90度ずらしている。
これで、1.2MHz以上で、90度位相差の信号が発生できた。