MastHead

PLL の勘どころ


PLL は安定で、任意の周波数の信号を作るのに便利な回路です。
これについて少し考えてみましょう。

PLL 回路はアナログとデジタルの境界に位置する種類のものですが、私の頭の中ではそういった境界はほとんどなくて、すべて「電子回路」のくくりになってしまいます。

さて、PLL を作る時に重要なことは次の3つでしょうか:
     1. かならずロックすること
        (もちろん VCO の周波数範囲で)
     2. 素早くロックインすること
     3. ジタの少ないこと
        (C/N比の良いこと、ともいえます)

位相弁別器に使うようなときは、もっと別のことも必要でしょう。
図1に典型的な回路を示しましたが、PLL の重要構成要素は、位相比較器とローパスフィルタと VCO です。 参照クロックとは異なる周波数を出すときは、分周器を S1 か S2 かあるいはそれら両方にかませます。


位相比較器:
図1の例では、位相比較器の出力は次段のスイッチ(チャージポンプともいう)を、電源につなぐか、グラウンドにつなぐか、両方から切断するかの3つの状態の管理しています。
「必ずロックすること」 という命題が与えられたとき、位相比較器の回路構成は重要な意味を持ちます。  たとえば、単なる RS FF の様な回路ですと、特殊条件下では出力の方向が逆転してしまうことがあり、それを避けるために別の制限回路を持ち込むといったこともあります。
私が感心したのはモトローラの MC4044 という TTL の PLL IC に使われたものでした。  CMOS 4046 (正確には MC14046)にも受け継がれています。
     

4046 には 2種類の位相比較器が入っていますが、その2番の方です。
中身は FF 4組を使ったステートマシンで、入力パルスの立ち上がりを見て、出力が3つの状態の間を行ったり来たりする様に作られています。  (ステートマシンは大型コンピュータではよく使われる手法です)
S1とS2が順序よく来ている間は、出力は上下どちらかに行ったあと、瞬時にハイインピーダンスもどって切れます。  片方の入力が2回続けて来るようなことがあると、出力は High (または Low)に長時間接続されます。
ですから、入力の位相や極端に違う周波数といった条件にとらわれず、かならず周波数(=パルス頻度)に応じた出力がでることが保障されるわけです。  当時、これは画期的なことでした。


A のリップル:
「ジタの少ないこと」 を実現するには、もちろん VCO への入力にリップルがあってはいけません。 A 点の電圧です。 

1. R1、C、R2 はローパスフィルタを形成していますが、前段のスイッチが一瞬上下したときに、R2 の分だけスパイクがでます。  これを避けるため、スパイクの高い周波数をバイパスさせる小容量のキャパシタで A をグラウンドに落としてやるといいでしょう。

2. もともと A になぜリップルが発生するかを考えてみますと、VCO がふらついていることも、一つの原因となります。  これは短時間変動のことです。  VCO をふらつかせないためには、例えば、コイルを使っているなら、機械的な振動は与えないような構造になっているでしょうか。  浮遊容量も同様に機械的な構造が大切です。 
また、電源電圧で周波数がふらつくようなら、そもそも電圧依存性のある設計はしないようにすることです。 
バラクタダイオードにバイアスが与えてあるなら、そこのリップルは大丈夫でしょうか。
なにがなんでも VCO の裸の C/N を上げておくことが重要です。

3. また、C に蓄えられている電荷がリークして低下するか、電源側からのリークで上昇するかしますと、VCO が反応し、位相ずれが起き、それを補正する様に比較器からの充電が発生します。
ですから、A 点はハイインピーダンス時は絶対に漏れ電流がないように設計しなければなりません。  VCO の入力インピーダンスは十分に(MΩぐらい)高いですか? これがこつです。
おっと、忘れていました。 ハイインピーダンスにすると、電界を拾うようになります。  しっかりと電界シールドをして、近くにあるパルスや商用電源のフィールドの影響を受けないようにしてください。 同様に、ガード電極を PC 板上に配置して、近所からノイズの漏れ電流を持ち込まないように。

4. ここの周りはアナログですが、周囲にはデジタルを扱う回路が取り囲んでいます。 上で述べた静電シールドやガード電極とともに、グラウンドも大切です。
VCO の入力はその内部の参照となるノード(グラウンドにつなぐべき点)がありますので、そこへ R2 の下側をつなぎます。  アナロググラウンドを独立させるためです。
そして、C、R2、参照ノード、VCO 入力端子(A) のループは最小面積になるようにします。  もちろん8の字型になるようにしてフラックスを相殺するのもいいですが、近所ですからそんな小細工はあまり効きません。


A のクランプ:
「かならずロックすること」 を実現するためには、VCO に予期せぬ電圧が入力されても発振していることが必要です。 
A 点の電圧は前段のスイッチがで決まりますが、端まで行ってしまっても VCO は大丈夫ですか?
クランプして制限を掛けることが要るときもあります。


Tri-state SW:
ハイインピーダンスモードになったとき、ローパスフィルタを完全に切り離しておかないと、リークによって A の電位が変動します。  これは C/N の悪化になります。


フィルタ:
R1 と C の1次フィルタでも良いのですが、ロックインの早さが犠牲になりますので、R2 によって進み分を加えてやります。
逆に、R2 があるとスイッチからのパルスが R2/(R1+R2) だけ VCO に与えられてしまいますから、ノイズになります。  私はそれを避けるため、小さなキャパシタを追加して A をバイパスさせることをやります。

また、フィルタをアクティブ素子で構成したようなとき、入力インピーダンスが低いと、リーク電流によって片側からの充電電流が常に発生し、ノイズになります。  モトローラの MC4044 はダーリントントランジスタのフィルタを持っていましたが、この点では若干の問題がありました。


S1、S2 の周波数:
「素早くロックインすること」 を実現するためには、できるだけ頻繁に位相比較を行い、また、ローパスフィルタの時定数(ときていすう)を短くしてやることが必要です。  ですから、S1、S2 はできるだけ高い周波数に持っていきましょう。
また、もう一つ重要なことは、ループの時間反応です。
リンギングを起こすようなループ伝達関数を設計したり、逆に無用に長い時定数を持ったフィルタを入れたりしないことです。
適切な位相比較間隔と、フィルタの時定数の選択が重要です。


プログラマブルダウンカウンタ:
プログラマブルダウンカウンタを使うと、N の値を任意に選択できますから、周波数を変更することができるようになります。
このとき、若干使いにくい点があります。  それは、All Zero の出力を見てカウンタを指定値に設定する回路ですが、これがプロパゲーションディレイがあるため高い周波数に追いついていけないという問題です。
私は、この問題に対処するために回路を追加したことがあります。
1の桁以外の出力の OR を取り、それが無くなったら次のパルスは 0 用である、と解釈して、クロック と AND を取って All Zero の代用としました。
これはちょっとしたアイデアです。  スワロゥカウンタの様な複雑なものまで持ち出さなくてもすむ場合もあるということで、、、