FPGAデジタル回路のクロック信号

FPGAデジタル回路のクロック信号

  FPGAを使うにあたって、クロック信号は必須です。デジタル回路の基本ともいえる回路です。しかし、FPGAの入門書にはクロックを入力する。という事だけが掛かれていて、その回路設計の説明が省かれている事が多いようです。

 クロックの回路設計について手順を追って説明します。

 クロック信号は上図のように連続した方形波形です。一般的にFPGAで使用するのは数MHz~数十MHzです。実用的なのは10MHz~40MHzぐらいでしょう。50MHzになると結構高いなぁ。という感じを受けます。FPGAによっては100MHzでも良い場合もありますが、初心者が扱える周波数としては20MHz以下を目安にしてください。それ以上のクロック周波数ですと安定動作にテクニックが必要になったりします。

 方形波というのは、フーリエ展開を学んだ方なら理解できると思いますが、基本波の最低でも5倍程度の周波数成分が要求されます。つまり、10MHzのクロック信号の方形波は50MHz以上の帯域が必要になる。というわけです。

 もしオシロスコープで10MHzのクロック波形を観測する機会があれば、サンプリング速度は50MHz以上ないとクロック波形の観測はできない。という事です。

 初心者が20MHz以下がいい。というのは、これが理由です。20MHzのクロック信号を扱うには、5倍の100MHz程度の周波数を扱う事になるからです。アナログ信号で100MHzの信号を扱おうとすると、かなりのベテランになります。

 20MHzのクロック信号を作る時に、100MHzの周波数帯域を意識して設計する必要がある。という心掛けなので、ベテランのスキルを求めている訳ではありません。

 クロックというのはクロックという電子部品があるわけではないので、最初は戸惑うかも知れません。クロックは何らかの素子で設計するのですが、一般的には水晶を使用します。水晶の他にもシリコンやセラミック等がありますが、FPGAのクロックとして使うのであれば、まずは水晶から検討するべきです。

 一言で水晶と言ってもいろいろあるので選ぶのに悩んでしまいます。種類としては以下のようになります。

 安価な方から水晶発振子、水晶発振器、温度補償水晶発振器、恒温槽付き水晶発振器があります。この他にも種類はありますが、だいたいこの4種類があるという事を知識として理解しておけば、購入する時に困らないと思います。

 価格による差は性能の差になります。OCXOが一番効果で数万円します。安価な水晶発振子や水晶発振器は数百円~数千円です。

 FPGAに使うのであれば、水晶発振器から選択するのが良いと思います。水晶発振子でも良いのですが、初心者が水晶発振子を使いこなすのには難しいからです。よほどのコストの制約が無い限り、水晶発振器を使うようにします。

 もちろん、TCXOやOCXOも使えますが、これらは測定器を作るとかいうレベルの精度が要求される場合に使用します。

 よく「水晶発振子」と「水晶発振器」の違いを質問されますが、水晶発振子に付加回路(インバーター、コンデンサ、抵抗)を付けて1つのパッケージに入れたものが水晶発振器です。なので、基本は同じです。下記のような関係になります。

 水晶発振子を選んだ場合には、上記のようにインバーターやコンデンサなどの回路素子を使って発振回路を設計する必要があります。コンデンサの定数を選んだり、プリント基板設計もコツが必要などの面倒さがあります。

 水晶発振器を選んでおけば、これらの面倒さから解放されて、電源を入れればほとんどの場合上手く発振してくれる回路が手に入ります。

 以上のように、水晶発振器を選んだら、設計の要求事項に安定度や周波数誤差等が水晶発振器のスペックで満足できるのか。という事をデータシートから読み取ります。

 選ぶ水晶発振器の振幅がFPGAの入力ピンに合っているのか? 回路上に水晶発振器で使う電源があるのか? などの検討も忘れずに行います。だいたいの水晶発振器は周波数偏差で±100ppm~±20ppmぐらいの精度ですので、この範囲で足りなければTCXO等の検討に移ります。

 簡単に発振してくれる水晶発振器ではありますが、その信号を綺麗な状態でFPGAに入力するまでには、いろいろと工夫が必要です。

 まず、水晶全般に言えることですが、振動に弱いので常に振動する箇所では注意が必要です。たとえば、車載とかモーターの近くとかです。このような用途で使う場合には、水晶発振器のメーカーに相談するのが良いでしょう。振動対策品もありますし、その程度であれば通常でも良い。などのアドバイスを貰える場合があります。

 水晶発振器には電源が必要です。そして、水晶発振器の電源ピン+側とGND側の間にはデカップリング用のコンデンサを配置します。セラミックコンデンサで良いです。0.01uF~0.1uFの値が一般的です。これは水晶発振器は信号を出す源であるが故にノイズ源とも成り得る為です。クロックがノイズ源になると非常に厄介な事が起こります。

 水晶発振器のメーカーでは、水晶パターンを用意しているメーカーがありますので、それを参照して回路設計をしてください。これもノイズ源にならないようにする工夫の一つです。

 FPGAまではなるべく短距離でクロック信号を接続します。がしかし、水晶発振器はノイズ源になりやすいので、他の回路からは離します。このあたりが、部品配置の難しさです。

 クロック信号は数個のICで使う事が多いのですが、接続する数は数個にします。10個以上の接続が必要な場合には、クロックバッファ等のデバイスを使うようにします。

 クロックを3個のデバイスに供給する例としてNGな例とOKな例を示します。クロック信号の接続方法を見てください。NGな例はスター接続といわれている接続方法で、ごく一般的に接続する方法です。この方法は信号の乱れが大きくなる傾向にあります。良い例は数珠繋ぎやディジーチェンといわれている方法です。一筆書きともいわれるように、なるべく1本の線でつなぐようにします。

 このように3個のデバイスに接続する場合においても、トータルの信号線長さは数十cmに収めるようにします。30cm以下が良いでしょう。それ以上の長さになると、かなりクロック信号が乱れます。クロックの周波数が高くなればなるほど、トータルの信号線長を短くする必要があります。

 さらにクロック信号の品質を上げるために、ダンピング抵抗や終端抵抗を接続する場合があります。

 ダンピング抵抗は10Ω~50Ωの間で使うことが多いのです。終端抵抗はいろいろな方法があります。一番良いのはクロック信号レベルの1/2の電圧で終端するのが良いのですが、なかなかそのような電源を用意することもできないので、上図ではテブナン終端にしてあります。

 だいたい、プリント基板の場合には伝送路を200Ωぐらいに見立てて終端することが多いのですが、この場合400Ωの抵抗を2つ下図の終端抵抗に使って、Vcc/2の電圧に終端します。電流的には800Ωの抵抗が電源とGNDの間に挿入された形になり、常に800Ωに電流が流れます。

 テブナン終端する場合においてもある程度は信号波形を見ながら抵抗値を決めていく必要が生じます。また、テブナン終端にしても終端に電流を流すので電源回路の容量なども計算する必要があります。

 上記のようにプリント基板の配置をしても、うまくパターンを引くのが難しい場合があります。そこは基板設計のエンジニアとの打ち合わせになりますが、できる限りクロック信号にビアを使わないようにします。クロック信号にビアが入るとかなり基板設計の難易度が上がります。

 例えば、水晶発振器がラジアル(足が出ているタイプ)の物を選択した場合、FPGAは大体が表面実装部品になるので、水晶発振器からの信号線は裏面を通って、FPGAに接続するまでに必ずビアを通過することになります。

 このようにクロック信号と一言で言っても、FPGAに接続するまでに気を付ける事が多くあります。

 最後に、FPGAにはクロックの専用ピンが用意されている場合がありますし、内部のグローバルバスに接続できるピンが限定されている。また、PLLに接続することができるピンが決まっている。等制約があります。回路設計を行う前にFPGAのデータシートを良く読んでクロックの入力方法を研究する事を怠らないようにしましょう。