論理回路とは
論理ゲートを組み合わせて作られた電子回路です。論理ゲートは、0と1という2値で動作します。論理ゲートは、人間がわかりやすいように次のようなシンボルで表されます。
論理ゲートには1つ、または複数の入力端子と1つの出力端子があります。入力端子は0か1のどちらかの値をとり、その入力値に応じた値が出力端子から出力されます。例えば、ANDゲートの場合は、入力端子の値がすべて1の場合にのみ出力端子の値が1になります。
このような論理ゲートをいくつも接続することで、複雑な論理回路が構成されます。例えば、ゲーム機器やスマートフォンの画面表示部分には、数千、数万個といった論理ゲートを組み合わせて構成したIC(Integrated Circuit: 集積回路)が使用されています。
実際の論理回路
実際の論理回路はトランジスタなどで構成された電子部品です。論理回路は、いろいろなパッケージの形で提供されます。
論理回路が格納されたパッケージは、電源をとグランドを接続することで動作します。論理回路の0はグランドレベル、1は電源の電圧レベルに対応します。論理回路の1に対応する電圧レベルは、パッケージの外部端子によって異なる場合があります。また、パッケージ内部の論理回路と外部端子の1の電圧レベルは異なる場合があります。
論理回路の設計
CADを使った設計
1990年代前半までは、CADをつかった論理設計が主流でした。CADを使った設計では、基本的な論理ゲートを1つ1つ手作業で接続して回路図を作成していました。このような設計方法は、仕様変更が発生した場合に膨大な修正時間が必要でした。また、第三者が見ることを考慮したわかりやすい論理ゲートのレイアウトを行おうとすると、さらに回路図の作成に時間がかかりました。
HDLと論理合成による設計
1990年代中頃〜後半にHDL(Hardware Description Language)と論理合成ツールによる論理設計が普及しました。HDLが利用できるようになったことで、論理回路の設計効率は格段に向上しました。回路設計は、 C言語でプログラムを書くようにテキストで記述できるようになりました。例えば、8ビットの加算器は”+”と記述するだけです。
module ( input [7:0] a, input [7:0] b, output [7:0] z, output c ); assign {c,z} = a + b; endmodule
HDLで記述したコードは、そのままでは実際に論理回路として動作しません。論理合成ツールで論理ゲートの組み合わせに変換します。論理合成による論理回路生成は、当初は「手作業で設計した論理回路に性能が遠く及ばない(回路規模が大きい、遅延が大きい)」といわれることもありましたが、現在ではなくてはならない設計手法となっています。
システムレベル設計
より抽象度の高い設計手法も一般的になりました。 例えば、SystemCというC++言語のライブラリを使うと、設計対象の論理回路を含むシステム全体をモデル化し、高速な動作検証が行えます。また、よく使われる機能をモジュールとしてあらかじめ用意しておき、簡単なマウスの操作だけで複雑な機能の論理回路を実現できるツールも普及しています。FPGA(Field Programmable Gate Array)というプログラム可能な論理回路デバイスを販売しているメーカーは、自社のFPGA用のツールとして、このようなツールを用意しています。
論理回路の動作確認
論理回路は、一般的に修正が容易ではありません。このため、作成、製造前に設計データが目的どおりに機能することを入念に確認します。
シミュレーション
論理回路は、コンピュータを使ったシミュレーションで設計した回路が仕様通りに動作するかを確認できます。CADで設計を行った場合、そこから生成されるネット・リストを使ってシミュレーションを行います。ネット・リストとは、基本ゲートの接続データです。HDLで設計を行った場合、専用のシミュレータを利用します。シミュレータでは、設計データの入力値を変化させ、それに応じた出力の値を観測します。
物理的なデバッグ
この例では、論理回路を格納したDIP型のICに電源やコンデンサを接続してデバッグを行っています。実際に動作を確認するまでに、はんだなどで各部品の接続が必要になります。
手作業で接続すると、簡単な論理回路であっても配線に時間がかかります。高速で動作を行う論理回路では、専用の基板を作成する場合がほとんどです。
1990年代には、大規模な論理回路を使った集積回路を設計する場合、それに先立って標準ロジックICで等価回路を作成して動作を確認することもありました。標準ロジックICは、ANDやORといった基本ゲートが幾つか格納されたICです。標準ロジックICを並べた等価回路は、畳一畳くらいの大きさになることもありました。
目的どおりに論理回路が動作しているかどうかは、ICの入出力端子をロジック・アナライザといった計測機器で観測して確認します。ロジック・アナライザを使うと、ナノセカンド秒(10億分の1秒)といった非常に短い時間での信号の変化を実際に見ることができます。