デジタル回路の同期設計

デジタル回路の同期設計

 デジタル回路設計の基本方針として、同期設計と非同期設計があります。FPGAはすべて同期設計を基本としていますので、必ずマスターしてください。

 同期設計とは基準となるクロック信号の周期の間にすべての論理ゲートを配置する設計方法です。論理ゲートとはAND,OR,NOT,ExORを組み合わせて作った回路です。

 例えば、クロックを10MHzとすれば、周期は100nsecになります。なので、100nsecですべての回路を設計します。

 「100nsecですべての回路を設計する」というのがイメージしにくい部分だと思います。それには、論理ゲートに信号通過時間がある。ということを知る必要があります。まず言葉の説明を先にしましょう。素子の中を電気が通過する時間のことを「遅延」や「ディレイ」といいます。

 最近のFPGAで構成される論理ゲートの中の通過時間は、数psec程度です。

  このような回路において遅延が生じるのはT1,T2,T3の通過です。T4の時間はDFFの遅延になりますので、別の機会に説明します。

 T1の通過はnot1の回路です。notの機能は反転ですが、信号が入力して反転して出てくるまでに数psecかかる。というのがT1の時間になります。

 同じように、T2とT3の通過に数psecの時間がかかります。

 and2に着目してください。and2の入力に1と2の番号をつけました。すると、and2の1と2で時間が違うのが気がつくでしょうか?

 and2の1はswitchin_Bが直接なので、遅延ゼロです。でも、and2の2はinput_selにnot1を通過しているので、T1時間分遅延しています。

 それでは、抜粋した回路図とタイミングチャートを並べてみます。

 and2の前後波形を青く記しました。and2-1とSwitchin_Bの信号は線でつながっているだけなので、同じ信号(遅延ゼロ)です。not1の前後ではT1の遅延がありますし、その信号はand2-2になるので、and2-2にはT1分の遅延が入っている事になります。さらに、and2-3はand2の出力信号なので、T2の遅延が発生しています。input_selから見るとand2-3はT1+T2の遅延が発生している事になります。

 ここまで、andやor,notの遅延を説明しました。FPGAの場合この遅延量は数psecです。でも、andやorなどの素子をいっぱい重ねていくと、かなりの遅延が発生します。この累積された遅延量をクロックの周期以下にする必要があります。 

 それではどのように設計するのかを説明します。次の絵を見てください。
 DFF1とDFF2の間に論理回路があります。このようにDFFで前と後を挟んでしまいます。

 こうすることによって、DFF1とDFF2は同じクロック信号が入っているので、定期的にクロック周期でDFFが効く事になります。これが同期設計です。DFFで挟めば良いだけです。ただし、DFF1とDFF2の間はクロックの周期分しか時間がありません。その周期の時間内で論理回路が動作しなくてはなりません。

 クロック周波数を上げると周期はその逆数ですから、短くなります。つまり、短い時間で論理回路を構成する必要が出てきます。