デジタル回路
デジタル回路(デジタルかいろ、digital circuit - ディジタル回路)は、アナログ回路に対比してデジタル表現された電気信号の論理演算、相互変換、蓄積及び伝達などを行う、離散的な電位範囲などを情報の表現に用いる電子回路で、論理回路の実現法のひとつである。信号レベルが公差、減衰、ノイズなどで若干変動したとしても、しきい値の範囲内ならば無視され、いずれかの状態として扱われる。許される範囲に間隔が設定されていて、「いずれの状態でもない」という異常として検出されるといった場合もある。
まず2状態を前提として説明する。2000年代の多くの機器では、0Vに近い電圧と、5Vや3V、1.2Vといった電圧を、2種類の状態に対応させている。これらはそれぞれ「Low」「High」、「L」「H」などと表現される。Lowを0や偽、Highを1や真に対応させる正論理と、逆に対応させる負論理は、相互接続などではどちらかに決めないといけないが、内部的には適宜使い分ける(回路的にはANDやORよりもNANDやNORのほうが作りやすいといったこともあり、適宜使い分けないと非常に効率が悪い)。かつては15V程度までは使われることもあった。以上は集積回路ベースの現在広く使われている回路の場合で、いわゆるディスクリート部品の時代や、真空管による回路の時代にはもっと高い電圧が使われていた。また、2010年代に増えてきたMLCのフラッシュメモリなどのように、多値論理に相当する、2よりも多くの状態を利用している素子や機器といったものもそれなりにある。
正確に連続な値の変化を再現する必要がなく、いくつかの既知の状態だけを扱えばよいので、アナログ回路よりも扱いが容易なことも多い。一方、電流の合計などとして加算を扱うことができる、といったように、アナログ的なほうが扱いが簡単な場合もある。デジタル回路は、その機能に応じて様々な回路が考案されている。以下の代表的なデジタル回路については、それぞれの項目に詳細な説明があり汎用ロジックICにこれらの製品に関する説明がある。
アナログ回路と比較したときのデジタル回路の利点は、伝送された信号がノイズによって劣化しても、あらかじめ見込んだ許容範囲内ならば、ディジタル的に表現された情報は劣化することなく伝送できるという点である。例えば、連続な音響信号も1と0の並びとして伝送すれば、ノイズが1と0を区別できなくするほど大きくない限り、誤りなしで元の音響信号を再現することができる。アナログ記憶されているLPレコードが直径12インチ (30cm) で収録時間30分に対し、直径12cmのコンパクトディスクには約1時間分の音楽を録音でき、その記録は約60億個の1と0で構成されている。
デジタルシステムでは、より正確に信号を表そうとするとより多くのビット数を必要とする。すると信号を処理するのにより多くのデジタル回路が必要となるが、個々のビットの処理に必要なハードウェアは同種のものである。アナログシステムで分解能を上げようとすれば、回路の線形性やノイズ特性といった根本的な改善が必要となる。
コンピュータ制御のデジタルシステムはソフトウェアで制御され、ハードウェアを改造しなくとも機能を追加できる。この場合の機能追加は工場の外で行われ、製品のソフトウェアをアップデートすることで行われる。製品設計に問題があったとしても、顧客が自分の手で後から修正することも可能となる。
情報の格納はアナログよりもデジタル回路の方が容易である。デジタルシステムのノイズ耐性により、格納して取り出す際にもデータが劣化しない。アナログシステムでは、経年劣化や磨耗によってノイズが蓄積し、格納されている情報が劣化する。デジタルシステムでは、そのようなノイズが一定のレベル未満であれば、情報を完璧に復元できる。
場合によっては同じことをするアナログ回路よりもエネルギーを多く消費することがあり、結果として発熱も多くなる。携帯型のバッテリー駆動のシステムでは、このことがデジタルシステム利用の制約になることがある。
例えば、携帯電話は基地局との無線通信のフロントエンド部(増幅や同調)に低消費電力のアナログ回路を使うことが多い。一方、基地局は通常の電力網から電力供給されるので、電力消費が大きいが非常に柔軟なソフトウェア無線を利用できる。その場合、無線の規格変更にもプログラムの変更で柔軟に対応可能である。
デジタルシステムの多くは連続なアナログ信号を離散的なデジタル信号に変換する必要がある。このとき量子化誤差を生じる。量子化誤差を低減するには、必要な忠実度にあわせて信号を表すデジタルデータの量を増やせばよい。標本化定理は、アナログ信号を正確に表すのに必要なデジタルデータの量について重要な指針を与える。
システムによっては、デジタルデータのごく一部が失われたり壊れたりしただけで関連する大きなデータブロックの意味が完全に変わってしまう。例えばアナログのテレビは信号(電波)が弱くなると徐々にノイズが多くなるが、デジタルテレビではノイズがあるしきい値を越えると突然映像の再現が全くできなくなる。
デジタルの脆さはシステムの頑健性を高める設計によって改善できる。例えば、パリティビットや誤り検出訂正といった手法を信号経路に挿入する。それらは誤りを検出して、さらにその誤りを訂正できるものであり、あるいは少なくともデータの新たなコピーの再送を要求できる。状態機械では、未使用状態を捉えるとリセットシーケンスのトリガーとしたり、誤り訂正処理を開始したりするよう状態遷移ロジックを設計できる。
デジタルのメモリシステムや通信システムは、誤り検出訂正の技法として追加のデータを使って訂正するという方法を採用することができる。
一方で、1ビットの誤りにも無防備なデジタルシステムもある。これは、より下のレイヤで誤りを検出して訂正するか、訂正不能な場合は破棄・再送するなどしていて、誤りが入り込まないことを前提にできる場合である。たとえば、FTPには通常、誤り訂正などは無いが、それはTCPにチェックサムによるチェックがあるためであり、さらに良く使われているイーサネットでCRCによるチェックが入るため、誤りはまず無いとして良いからである。
デジタル回路では2つの電圧レベルを、二進数または論理レベルの「0」と「1」を表すために使う。正論理(アクティブ・ハイ)では、Lowは二進数「0」、Highは二進数「1」を表し、負論理(アクティブ・ロー)では逆の意味に使われる。たとえば、0から1.5ボルトは論理0、3.5から5ボルトは論理1というようになる。1.5から3.5ボルトの間はスレッショルド・レベルと呼ばれる論理遷移時以外では禁止された電圧領域であり、HighとLowの入力の区別がつかないために動作の保証が得られなくなる。論理遷移の期間というのは、通常は過渡的な現象であり、ほとんどの回路は純粋な抵抗回路ではないので電圧レベルがすぐに変化しないことによって起こる。このような異常状態を検知できる論理回路もあるが、多くの場合、後段の回路では前段の回路での遷移によって出力を変化させる前に前段の遷移が終了しHigh又はLowに安定するが、前段の回路での遷移に時間が掛かれば、後段回路では入力をHigh又はLowのいずれかとして解釈する。
CMOSによるデジタル回路の場合、その内部構造の都合上、この異常状態にある間は回路が大量の電力を消費してしまう。このため、異常状態を長く継続させてしまうと発熱により素子が破壊されるため、異常状態の継続を避ける回路上の工夫が必要となる。
一方、波形の立ち上がりと立ち下がりで論理遷移の値を意図的に異なる値とすること(ヒステリシス、履歴現象)で異常状態を回避する方法があり、シュミットトリガと呼ばれる。抵抗器の接続により容易に実現可能であるほか、専用の汎用ロジックICもある。
VddとVccは電源電圧を意味する。TTLの電源電圧の許容範囲は4.75-5.25Vである。
電源電圧が同じCMOSとTTLが同一回路上に混在している場合、CMOSの出力をTTLに入力することは問題ないが、その逆はTTLのHレベル出力電圧の下限がCMOSのHレベル入力電圧の下限を満たさないため、誤動作する可能性がある。このようなときは、TTLの出力をプルアップするなどの処理が必要となる。
初期のデジタル回路では、シリコン基板上へのトランジスタの形成の制限によりPMOS、又はNMOSにより回路内部を構成していた。この場合、入力がLowの時にはあまり電力を消費しないが入力がHighの時には大きく電力を消費する、又はその逆の特性を持つため、この都合に合わせてアクティブ・ハイで論理回路を設計するか、アクティブ・ローで論理回路を設計するかが消費電力削減には重要な意味を持っていた。
上で述べたように、デジタル回路の電圧レベルは、原則として「High」または「Low」の論理レベルに合致した電圧が印加されていなければならない。「High」と「Low」の中間の電圧の状態になると、内部状態が不安定になり誤動作を起こしたり、消費電力が著しく増加したりする。また、「Low」よりも低い電圧や「High」よりも高い電圧が印加されると、設計外の電流の流れが発生して回路の破壊などが起こりえる。
一般に、デジタル回路の入力端子は内部インピーダンスが高い(電源回路との絶縁性が高い)。そのため、入力端子がどこにも接続されないような状態にあると、近辺の静電気や電磁誘導による電流の侵入によって予期せぬ電圧が印加される場合がある(電圧は電流とインピーダンスを掛け合わせた値で、微弱な電流でも高い電圧としてあらわれる)。このように、入力端子がどこにも接続されていない状態は「浮いている」と表現されることが多く、内部の回路に障害(影響)を受けないよう対策をとらなければならない。
対策としては、電源電圧または接地電圧と、入力端子との間に、数kΩから数百kΩという比較的高い値の抵抗器を挿入する。電源(電源電圧)側に抵抗器を挿入することをプルアップと呼び、しばしば「電源に吊りあげる」などと表現することもある。また、接地(接地電圧、グランド)側に抵抗器を挿入することをプルダウンと呼び、しばしば「グランドに落とす」などと表現される。
プルアップまたはプルダウンされた入力端子は、出力端子が何も接続されていない状態でも、抵抗器(「プルアップ抵抗」、「プルダウン抵抗」という)の効果により、大きな電磁誘導等が起こらない限り電源電圧(High)または接地電圧(Low)のデジタル回路としての電圧が常に保たれる。なお、他のデジタル回路から出力信号を受ける場合、その出力中の回路は内部インピーダンスが極めて低くなるため、プルアップやプルダウンに使われる抵抗値は、回路全体としてはほとんど無視できる状態になる。
プルアップ抵抗の値は、大きすぎると絶縁とあまり変わらない状態になり、電磁誘導などに弱くなってしまう。しかし、小さすぎるとそこに接続される出力素子に大きな電流を流す要因となり、回路の消費電力の増大や最悪の場合出力素子の破損につながることになる。
入力端子につながる信号線が、通信線などのように比較的長い距離を持つものである場合、その線で電磁誘導が起こって電源電圧や接地電圧の範囲外の異常電圧が加わる可能性が高くなる。こういった場合には、プルアップ抵抗に並列にダイオードを挿入し、異常電圧による電流が電源線のほうに逃げてデジタル回路素子内に流れ込まないように工夫をする。この用途のダイオードは「クランプダイオード」と呼ばれる。デジタル入力の保護目的以外でも、電圧値域を制限する目的のダイオードはクランプダイオードと呼ばれる。
複数の回路数を持つ汎用的な集積回路を使った設計を行うとき、ひとつの集積回路の中に入っている全ての回路を使わずに、一部の回路だけを使うということがよく行われる。この時、使用しない回路の入力端子はその状態が High だろうが Low だろうが動作に全く関係がないため、ともすればどこにも接続されずに放置されてしまうことがある。しかし、入力端子の電位が設計範囲外になったりしきい値付近になると設計外の電流の流れが生じ、周辺の回路を巻き込んで破壊されてしまうことがある。特にTTLでは入力端子が解放されていても破壊の危険性が比較的低かったため、配線省略などを意図して未使用入力端子の処理をしないことも多かった。しかし、CMOSの場合は中間電圧が加わった時に大電流が流れるなど回路破壊の可能性が高く、入力端子の処理を怠ると危険である。また、TTLであっても未使用入力端子を放置すればゲート回路はノイズを入力源としたアンプとして働き、電力をムダに消費しながら周囲の信号の変化に応じて電源とグランドの電位を揺らすため避けなければならない。これらの処理を正しく行っていない回路は、一応は動作するためミスに気付き辛く、量産をしたり長期運用をしたときに故障率が異常に高いことによって発見されるということもある。実際の回路設計では、TTLであるかCMOSであるかを区別せず、未使用回路の入力端子は必ず処理されなければならない。
近年の組み込み用CPUなどの集積回路の場合、外部に付けなければいけない部品点数を削減するために、このプルアップ抵抗を集積回路の中に内蔵しているというものが多くなってきている。また、製品によっては、このプルアップ抵抗を使うか使わないかをソフトウェアで選択できるようになっているものもある。
デジタル回路では、ひとつの出力端子に複数の後段回路の入力がつながることはごく普通に行われる。出力端子につながれた入力端子の数のことを、出力端子を扇の要に見立てて、ファン・アウトと呼ぶ。
デジタル回路では電圧値により情報を素子から素子に伝達するが、この際電気回路であるから当然電流の流れが伴う。具体的には、出力側のレベルをLにする為には、出力端子が後ろの回路から電流を吸い込む動作をし、出力側のレベルをHにする為には、出力端子が後ろの回路に電流を吐き出す動作をする。
TTLのように、入力端子に流れ込んだり、入力端子から流れ出したりする電流が比較的大きな素子で回路を組む場合、前段の出力側素子の電流駆動能力によって、ファン・アウトの数が制限されてくる。
TTLの場合、標準タイプ・LSタイプ・ALSタイプなど様々なタイプのシリーズがあるが、そのシリーズ内の規格により出力端子の駆動能力と、入力端子が吸い込む(または吐き出す)電流の最大値が規格化されているため、同じシリーズのIC同士であれば、ファンアウトの制限値は同じになる。
ただし、多数の入力に信号を分配する目的のために、同じ論理回路でもファン・アウト値を大きくした回路素子が用意されている。そういう回路素子は論理的には何もしない、または反転するだけの単純なものである事が多く、バッファ、バスバッファ、ドライバなどと呼ばれる。
違ったタイプのシリーズを組み合わせて使う場合には、それぞれのデータシートを調べて、接続出来る個数を確認する必要がある。
CMOS型ロジックの場合は、入力端子は内部インピーダンスが高くつくられている(電源線や接地線に対する抵抗値が高い)ため、定常状態での電流値は微々たるものであるが、たくさんの入力端子を接続すると、それぞれの端子と配線部分の静電容量が並列接続されることにより、出力側から見た容量性負荷が増大する。このため、出力側素子の駆動能力が足りないと、HからL、LからHの状態遷移に時間が掛かることになり、これが回路動作上の制約となるため、やはり後段につなげられる入力端子の個数は制限される。
1つの信号線に対して、信号を出力する素子を複数接続しているバス構造を用いる場合、信号を出力しようとしている素子とその信号を受信しようとしている素子のみがバスを通じて電気的に接合されていなければならない。回路の制御を誤って、不必要な複数の出力回路が同時に接続されてしまうと、回路間に電流が回り込んでしまい素子の破壊につながる。
この破壊を避けるためには、信号を出力する素子以外の出力回路については、全て電気的に絶縁しなければいけない。このように、出力している信号線以外を電気的に切り離した状態をハイ・インピーダンスと呼び、HighでもLowもない第三の状態として扱う。ハイ・インピーダンス状態は記号では「Z」で示される事が多い。
しかし、入力端子につながっている全ての出力端子がハイ・インピーダンス状態になった場合、入力端子には電気的に何も接続されていないのと同じになり(「浮いている」状態)、今度は、先に述べたような電磁誘導等による誤動作や素子破壊を伴うような状態におかれてしまう。このため、対策として、ハイ・インピーダンス状態を伴う信号線にはプルアップまたはプルダウンをするのが常套手段となっている。
ハイ・インピーダンス出力と似たものとして、オープンコレクタ出力がある。これは、出力が論理1の時にはLの電圧を出力するが、論理0の時にはHの電圧を出すのではなくハイ・インピーダンス状態になるという出力素子である。(負論理の出力になっている)
論理0の時にハイ・インピーダンスになるので、複数のオープンコレクタ出力の出力信号を単純に接続してしまった上でプルアップしておけば、出力のどれかが論理1になった時にLになる(全ての出力が論理0の時にはHになる)という回路になり、これは(負論理の)論理和を演算していることになる。このように、論理和用のデジタル回路素子を使うこと無く論理和を実現する回路のことを「ワイアードオア」と呼ぶ。
なお、オープンコレクタ出力の端子は、一般の出力端子よりも多く電流を流すことができるという特性も持つため、アナログ回路による電流増幅器を介すること無く、直接LEDを点灯させるなどの周辺装置の駆動ができる。
出力をハイ・インピーダンスにできる出力回路はスリーステート(三状態の意味)と呼ばれる。また、入力信号をそのまま出力する、信号を出力しない、ハイ・インピーダンスにするかの三状態に切り替えることができる回路は「スリーステート・バッファ」と呼ばれる。回路記号では、バッファを示す三角の印の側面にハイ・インピーダンスにするか否かの入力信号線が入る図形で示される。トライステートとも呼ばれるが、ナショナル セミコンダクターの商品名で、米国では"TRI-STATE"は商標登録されている(登録番号0941335・2138646)。なお、日本で「トライステート」「TRISTATE」は他者が登録している(登録番号 第2671297号)。
出力をハイ・インピーダンスにしないことを指示する入力信号線は、ゲートの意味で「G」と表記されたり、イネーブルの意味で「E」または「EN」と表記されることが多い。また、データバスなどのバス構造を持つ部分に使われる場合には、アウトプット・イネーブルの略で「OE」という記号が使われたり、チップ・セレクトの略で「CS」という記号が使われることも多い。
スリーステート・バッファを2つ組み合わせて、データ通信の方向を切り替えることができるようにした回路もよく使われている。この回路は「双方向バッファ」と呼ばれ、入力GがLの時にはYからXの方向にデータが伝わり、入力GがHの時にはXからYの方向にデータが伝わる。
スリーステート・バッファや双方向バッファは、いくつもの回路ブロックが信号線を共用するデータバスやアドレスバスなどに多用される。このため、データバスなどのビット数の単位となりやすい8個のスリーステート・バッファを一つにまとめたICが製造されており、よく利用されている。
また、同じくスリーステート・バッファを複数組み合わせ、ワイアードオアの原理を利用して複数の入力信号の一つだけを出力に伝えるという回路を構成することもできる。これは「データセレクタ」と呼ばれる。データセレクタは、一般の論理素子だけを用いて構成することもできる (Y \larr (S \land X1) \lor ((\lnot S) \land X2)) が、スリーステートを利用することによりはるかに簡単な内部回路で実現できる。本例は2入力のデータセレクタであるが、4入力、8入力などのデータセレクタもこの回路の応用で簡単に作れる。
デジタル回路はアナログ回路と同様に一般的な電子部品で構成されており、物理的な現象に支配される。設計に当たってはそれら部品のアナログ的性質に影響されずに必要なデジタルな動作をさせるようにしなければならない。デジタルシステムはノイズやタイミングのマージン、寄生インダクタンスや寄生キャパシタンスを管理し、電源との接続をフィルタリングしなければならない。
設計に不備があると「グリッチ」と呼ばれる極めて細いパルスが発生し、ごく一部のロジックだけがそれに反応する。また、「ラントパルス」というしきい値に到達しないパルスが発生したり、ロジックの状態が予期しない組み合わせになったりする。
さらにクロックで駆動されるデジタルシステムをアナログシステムや異なるクロック周波数のデジタルシステムと接続する場合、入力の変化がデジタル入力ラッチの設定時間に違反することもある。このような状況は自然に解決するがそれまでにかかる時間は不定であり、その間に無効な信号がデジタルシステム内を伝播することになる。
デジタル回路はアナログ電子部品で出来ているため、同等の体積と電力を使ったとき、低精度のアナログ回路よりも処理速度が遅くなる。しかしデジタル回路はノイズへの耐性が高いため、繰り返し計算することができる。一方、高精度の計算(例えば14ビット以上の精度が必要な場合)では、アナログ回路はデジタル回路よりも大規模になり、電力も多く消費する。
デジタル回路は論理ゲートと呼ばれる小さな電子回路から構成されることが多く、それによって組合わせ論理を形成する。個々の論理ゲートはブール論理の関数を実装している。論理ゲートは電気で制御されるスイッチを配置したもので、スイッチとしてトランジスタを使ったものが多い。論理ゲートはそれぞれに回路記号が対応している。詳しくは論理回路を参照。
論理ゲートの出力は電流または電圧であり、それがさらに後段の論理ゲート群を制御する。
論理ゲートはトランジスタの個数を最小に押さえて、大きさ・電力消費・コストをなるべく低減し、同時に信頼性を高く保つよう設計される。
集積回路は大量の論理ゲートを安価に生産する手段である。集積回路の設計にはEDAソフトウェアを使うのが一般的である(後述)。
参照テーブルを使ってデジタル回路を構築する技法もある(プログラマブルロジックデバイスなど)。参照テーブルを使った技法は、論理ゲートに基づく場合と同等の機能を実装でき、同時に配線を変更せずに容易に再プログラム可能である。すなわち、設計者が配線を変更せずに設計ミスを修正できる。したがって少量生産ではPLDなどをよく利用している。それらも一般にEDAソフトで設計されている。
デジタル回路として大規模なものが必要になり、低速であっても複雑なアルゴリズムや連鎖的動作が必要な場合、組み込みシステムとしてマイクロコントローラにプログラムを搭載して使うことが多い。
工場の生産ラインの制御などでは、プログラマブルロジックコントローラ (PLC) がよく使われている。こちらはラダー・ロジックなどを使って生産ラインのエンジニアがプログラミングを行う。
回路の複雑さを低減させるためには、なるべく単純化して機能を最小限にすることが多いが、これにより誤りも少なくなり安価となる。回路の単純化のためのアルゴリズムとしては、CADシステムに組み込まれたエスプレッソ・ヒューリスティック・ロジック・ミニママイザーなどがよく使われているが、古典的な二分決定図、自動化したクワイン・マクラスキー法、真理値表、カルノー図、ブール代数なども使われてきた。
デジタル回路の設計にとって、その表現は重要である。一部の解析手法は特定の表現でないと使えない。デジタル回路の古典的表現として論理ゲートを使ったものがある。もう1つの表現はトランジスタなどの電子スイッチを使って構成を表す方法がある。簡単な方法の1つとして、真理値表をメモリー上に配置する方法がある。入力群をメモリのアドレスとして使い、そのアドレスの指すメモリの内容が論理関数の出力となる。自動解析のために、これらの表現にはデジタルのファイルフォーマットがあり、コンピュータプログラムで処理することができる。
表現の選択にあたってはデジタルシステムの種類を考慮する。ほとんどのデジタルシステムは組合わせ回路と順序回路に分けられる。組合わせ回路は入力(の組合わせ)が同じであれば常に同じ出力を示す。これは論理関数を組み合わせたもの(基本論理ゲートの組合せ)といえる。
順序回路は一部の出力が入力にフィードバックされる組合わせ回路ということができる。これによって「逐次的」な動作を実現できる。最も単純な順序回路としてフリップフロップがあり、二進法の数字または「ビット」を保持することができる。
順序回路は有限オートマトンとして設計することが多い。その場合、システムの大まかな振る舞いを設計すれば論理関数の詳細を考慮せずにシミュレーションで検証できる。
順序回路はさらに2つに分類でき、クロック信号で駆動することで状態が一斉に変化するクロック同期システムと、入力の変化に伴って変化が伝播していく非同期システムがある。同期順序回路はフリップフロップのような非同期回路で構成されていて、それらがクロック信号にあわせて状態を変化させるようになっているため、タイミングマージンの設計には注意が必要である。
同期順序状態機械を実装する一般的な方法は、それを組合わせ回路部分と「状態レジスタ」と呼ばれるフリップフロップ群とに分けることである。クロック信号のパルスの度に状態レジスタが組合わせ回路の以前の状態から生成されたフィードバックを捉え、状態機械の組合わせ回路部分への不変の入力としてそれをフィードバックする。クロック周波数をどれだけ上げられるかは、組合わせ回路で最も時間のかかる経路によって決まる。
状態レジスタは単に二進数の数値を表している。状態機械の状態に番号を振れるとすれば、論理関数は次の状態の番号を生成する組合わせ回路だと言える。
それに対して非同期システムはありうるタイミングを全て考慮し、あらゆる状態を考慮しなければならず、設計が難しい。一般的手法としては、個々の状態が存在しうる最短時間と最長時間の表を作成し、そのような状態の数が最小になるよう回路を調整していき、全体が周期的に「自己再同期」と呼ばれる互換状態に入って待つようにする。そのように注意深く設計しないと容易に不安定な状態になり、個々の電子部品の値の公差などに起因する遅延が蓄積して予測不可能な結果となる。ある種の回路は本質的に非同期であり(フリップフロップで構成されるシンクロナイザ、スイッチデバウンサ、調停回路、外部からの非同期な信号が同期順序回路に入るような回路など)、このような設計が必須である。
2005年現在、同期設計の方が設計と検証が容易なため、デジタルシステムのほとんどが同期設計となっている。設計/シミュレーションツールも非同期回路用のものはほとんど存在しない。しかしうまく設計できればクロック周波数に制限されないぶんだけ非同期の方が優れていると言われている。
多くのデジタル回路はデータフローマシンと見なせる。この場合、同期式レジスタ転送レベルで設計ができ、VHDLやVerilogなどのハードウェア記述言語を使うことができる。
レジスタ転送レベルでは、一連のフリップフロップで構成されるレジスタに二進数の数を格納する。レジスタの出力は「バス」と呼ばれる配線の束に繋がっており、バスがその数を他の計算機構に向けて転送する。計算機構は単なる組合わせ回路である。計算機構にも出力バスがあり、いくつかのレジスタの入力と繋がっている。レジスタの入力にはマルチプレクサが配置されていることもあり、いくつかのバスから選択して数を格納することができる。あるいは、複数の出力をスリーステート・バッファ経由でバスに接続し、1つを除いて他の出力を遮断することができる。逐次状態機械は、それぞれのレジスタが入力から新たなデータを受け取る時点を制御する。