プロセッサの構成に必要となる論理ゲート

これは、主に、論理回路や実験2ハードウェアをまじめにやっていなかった人への軽い参考資料です。 ただし、ちょっとしたTipsも入っているので、まじめにやった人も目を通しておくと良いと思います。 あと、あくまでも軽い参考資料なので、詳しく調べたい場合はちゃんと 教科書を使って復習すること。


AND

回路記号
AND
真理値表
ABout
000
010
100
111
備考
論理積のゲート。入力数が増えたAND3,AND4,...等のバリエーションがある。 また、出力の真偽が反転した(出力側にNOTがついた)NANDや、 入力の真偽が反転した(入力側にNOTがついた)BANDもある。 ORと組み合せて組み合わせ論理回路の構成によく使われる。 プロセッサの制御部を作った後(デバッグもした後)では、 見るのもいやになるかもしれない・・・。

OR

回路記号
OR
真理値表
ABout
000
011
101
111
備考
論理和のゲート。入力数が増えたOR3,OR4,...等のバリエーションがある。 また、出力の真偽が反転した(出力側にNOTがついた)NORや、 入力の真偽が反転した(入力側にNOTがついた)BORもある。 ANDと組み合せて組み合わせ論理回路の構成によく使われる。 プロセッサの制御部を作った後(デバッグもした後)では、 見るのもいやになるかもしれない・・・。

XOR

回路記号
XOR
真理値表
ABout
000
011
101
110
備考
排他的論理和のゲート。出力の真偽が反転した(出力にNOTがついた)XNOR等のバリエーションもある。 通常の手順で組み合わせ回路を作ると これを使う機会はないが、うまく使うとAND,ORだけで作るよりも ゲート数を減らすことができる。 ただし、無理に使ってゲート数を減らすよりは、 素直にAND,ORだけで作った方が楽なことが多いと思います。

NOT

回路記号
NOT
真理値表
Aout
01
10
備考
否定の論理ゲート。AND,OR等への入力がAだったりする場合、 そのゲートの入力の前に置いたりする。 なお、プロセッサの制御部など否定値を多数必要とする場合は、 いちいちゲートの入口にNOTを置くのではなく、 最初にNOTを通した信号を作り、それを各ゲートに分配させる方が簡潔になる。

バッファ

回路記号
バッファ
真理値表
Aout
00
11
備考
入力された値は変化せずに出力される。何のためにあるのかというと、 信号を増幅するためにある。 基本的に、CMOSトランジスタで実装された論理ゲートでは、 ゲートの出力値の変化は
  1. ゲートの出力値が変化するように入力が変化
  2. ゲートを構成しているトランジスタがゲートの出力側の電荷を充放電する
  3. ゲートの出力側の値が変化する
という動作になる。ここで、ファンアウト数(1つの論理ゲートにの出力つながっている論理ゲートの数)が 多い場合、ゲートの出力側の容量(キャパシタンス)が大きくなるため、 2.の動作に時間がかかるようになる。もっと酷い場合は、正しく動作しなくなることもある。 そのため、ファンアウト数が多い場合はバッファを入れ、 ファンアウト数を下げるようにする。
基本的に、CADがコンパイル時に自動的に入れてくれるので、 自分でファンアウト数をチェックしつつ入れる必要はありません。 ただし、1つの配線に複数のインスタンスを持たせたい場合、 CADの都合で配線をバッファで分割させる必要が出てくる。 基本的に、こちらの目的で使うことになります。

3状態バッファ

回路記号
3状態バッファ
真理値表
ABout
00Z
01Z
100
111
備考
3状態バッファ(tri state buffer)は、簡単に言えば、Aの入力値によって Bの入力をoutに出力するかどうかを制御できるバッファである。 真理値表でZはハイ・インピーダンス状態を示しており、 このゲートにおいて出力側はVDDとGNDのどちらにも導通していないことを示す (一般的なのCMOSゲートはどのような入力値が来ても、 必ずVDDかGNDに導通している)。
このゲートの最も重要な利用先は、メモリのアドレス・バス/データ・バスの調停である。 また、セレクタ(マルチプレクサ)の実現にも使うことができる。

D-フリップフロップ

回路記号
D-フリップフロップ
真理値表
DclkQ next
0↑以外変化無し
1↑以外変化無し
00
11
備考
真理値表の"↑"はクロック・パルスの立ち上がりを示し、Q nextはQの次状態を示す。
真理値表から分かるように、D-フリップフロップはクロック・パルスが立ち上がった時、 その時にDに入力されていた値を取り込み、次のクロック・パルスで更新されるまで Qより出力し続ける。 一般的に、レジスタを構成するのに使われる。
真理値表上では、クロック・パルスが立ち上がる瞬間のみDの値が決まっていれば良いように見えるが、 実際には、クロック・パルスが立ち上がる前の一定時間(セットアップ時間)と クロック・パルスが立ち上がった後の一定時間(ホールド時間)の間、 Dの値を一定に保たないと正しい値を保持できない。

ラッチ

回路記号
ラッチ
真理値表
DEQ
00変化無し
10変化無し
010
111
備考
真理値表から分かるように、ラッチはEが1の時にDの値をそのままQに出力し、 Eが0の時には、Eが1→0となった瞬間の値を保持し続ける。
D-フリップフロップと同様にレジスタとして使われることがあるが、 普通にプロセッサを構成するならば、入力値が透過しない D-フリップフロップの方が扱いやすい。

Last modified: 2007/5/31 17:00