2022年04月23日 | 更新。 |
2値論理回路の特性を表すために、入力信号と出力信号の真理値の関係を表形式に表す場合が多くあります。この様な表を真理値表(truth table)といいます。
狭義には、真理値表は、出力信号がその時の入力信号によってのみ決まる、組み合わせ回路の性質の記述に使用される表です。しかし、広義には、出力信号が過去の回路の状態の影響を受ける、順序回路の性質の記述に使われる表も真理値表と呼びます。
組み合わせ回路の動作を完全に記述するには、入力信号の真理値の、考えられる全ての組み合わせを真理値表に記入する必要があります。入力信号1つにつき、0と1の2通りの真理値が考えられるので、N個(Nは自然数)の入力端子があれば、入力信号の真理値の考えられる全ての組み合わせは2N通りあります。
順序回路の出力信号は、現在の入力信号だけでは決まりませんから、順序回路の真理値表を作成するには、後述する様に、直前の入力信号や出力信号などの真理値を、変数として真理値表に記入する必要が出てきます。
なお、真理値表はもともと入力信号と出力信号の真理値の関係を表す表の事を指しますが、正論理回路であるという前提であれば、真理値0は電圧Lと同義で、真理値1は電圧Hと同義ですから、入力信号と出力信号の電圧の関係を表す表を真理値表と呼ぶ事もあります。
組み合わせ回路の一例として、図1に示すNOT回路を取り上げます。
NOT回路は、出力Yに入力Xの反対の真理値(X=0ならY=1で、X=1ならY=0)が出てくる回路です。このNOT回路の特性を真理値表で表すと、表1の様になります。
入力 | 出力 |
---|---|
X | Y |
0 | 1 |
1 | 0 |
入力信号1本で、0または1の2種類の真理値の組み合わせがあります。N本(Nは自然数)の入力信号がある回路の場合、入力信号の組み合わせは2N種類になります。よって、入力信号の本数が増えるにしたがって、真理値表の行数が指数的に増えます。
例として、図2に示す3入力AND回路を考えましょう。
この回路は、3つの入力信号A、B、およびCのすべてが0の場合は出力信号が1になり、他の入力電圧の組み合わせの場合は出力信号が0になります。この特性を真理値表で表したのが表2になります。
入力 | 出力 | ||
---|---|---|---|
A | B | C | Y |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
3入力AND回路の場合、真理値表の真理値(0や1)を記した行数が、23=8行になります。
4入力の組み合わせ回路なら、真理値表は24=16行になります。また5入力の組み合わせ回路回路なら、真理値表は25=32行になります。この様に、入力信号の本数が1つ増えるたびに、真理値表の行数が2倍になります。
通常は、真理値には0(偽)と1(真)の2種類のみを考えます。さらに、「0でも1でも良い」という真理値(これをDon't careといいます)を加えると、真理値表を簡略化する事ができます。
例えば表2の3入力のAND回路の真理値表を、Don't careを用いて簡略化すると、表3になります。
入力 | 出力 | ||
---|---|---|---|
A | B | C | Y |
0 | X | X | 0 |
1 | 0 | X | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
この表において、Xと書いてある部分がDon't careで、0でも1でもいい事を表しています。
真理値表の本来の意味を考えると、真理値表は入力信号と出力信号の真理値の関係を表す表です。これが狭義の真理値表です。
しかし、扱う2値論理回路が正論理で設計されているという前提であれば、真理値の0と電圧のLは同義で、真理値の1と電圧のHは同義ですから、入力電圧と出力電圧の関係を表した表も真理値表と同じ意味を持ちます。よって、広義には入力電圧と出力電圧の関係を表した表も、真理値表と呼びます。
参考:入力電圧と出力電圧の関係を表した表を「電圧表」とか「電圧値表」などと呼ぶ事はないようです。論理回路は論理学(特に命題論理)の応用として発展した歴史的経緯があり、論理学で真理値表という言葉を使っていたため、真理値表という言葉が定着し、入力電圧と出力電圧の関係を表した表も、そのまま真理値表と呼ばれる様になったと思われます。
TC74HC08AP(東芝セミコンダクター社製)という標準ロジックICを例に挙げて、広義の真理値表について説明します。
TC74HC08APは、2入力AND回路(図3参照)が4個、1つのパッケージに収められたICです。
2入力AND回路の狭義の真理値表(入力信号と出力信号の真理値の関係を表した表)は、表4の様になります。
入力 | 出力 | |
---|---|---|
A | B | Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
表4の真理値を電圧に書き換える(0をLに置き換え、1をHに置き換える)と、表5の様になります。(広義の真理値表)
入力 | 出力 | |
---|---|---|
A | B | Y |
L | L | L |
L | H | L |
H | L | L |
H | H | H |
実際にTC74HC08APのデータシートを見ると、図4に示す様に、表5と同様に、電圧表記の真理値表が載っています。
このページの、これ以降の真理値表では、電圧表記で真理値表を書く事にします。
順序回路の場合は、現在の入力信号だけではなく、過去の回路の状態が出力信号に影響しますから、入力信号と出力信号の真理値の対応表である真理値表を作成する事は、原則的にはできません。
しかしながら、場合によっては、直前の入力電圧や出力電圧などを変数として使う事で、順序回路でも真理値表を作成する事ができる場合があります。
順序回路には非同期式の順序回路とクロック同期式の順序回路がありますので、順に、それらの真理値表の例を紹介します。
順序回路の例として、ここではRSフリップフロップを取り上げます。
RSフリップフロップとは、2つの入力端子RおよびSと、2つの出力端子QおよびQを持つ論理回路で、1ビット(2進数1桁分)の情報を記憶する働きをします。
図5にRSフリップフロップの回路記号を、図6にRSフリップフロップを2つの2入力NOR回路で構成した例を示します。
RSフリップフロップは、R端子にH、S端子にLを入力した場合は0を記憶し、R端子にL、S端子にHを入力した場合は1を記憶し、R端子とS端子の両方にLを入力した場合は記憶内容を保持します。
0を記憶している状態ではQ端子にL、Q端子にHを出力し、1を記憶している状態ではQ端子にH、Q端子にLを出力します。
R端子とS端子の両方にHを入力する事は、普通禁止される(利用者にR端子とS端子に同時にHを入力しない義務を課す)事が多いのですが、図6の回路でRSフリップフロップを構成する場合は、R端子とS端子の両方にHを入力すると、Q端子とQ端子の両方にLを出力します。
図6のRSフリップフロップの真理値表を、表6に示します。
入力 | 出力 | 動作 | ||
---|---|---|---|---|
R | S | Q | Q | |
L | L | QOLD | QOLD | 記憶保持 |
L | H | H | L | セット(1を記憶させる) |
H | L | L | H | リセット(0を記憶させる) |
H | H | L | L | 禁止 |
注:表4の真理値表ではR端子とS端子の両方にHを入力した場合、Q端子とQ端子の両方にLを出力していますが、他の出力電圧になるようなRSフリップフロップの構成法もあります。この表は、あくまで図4の様にRSフリップフロップを構成した場合の真理値表です。
表4の真理値表には、QOLDとQOLDの2つの変数が現れている事に注意が必要です。
QOLDは出力端子Qの直前の出力電圧を意味しています。またQOLDはQOLDを論理反転した値を意味しています。
この様に、QOLDとQOLDの2つの、回路の過去の状態を表す変数を導入する事で、R端子とS端子の両方にLを入力した時の、記憶した情報を保持する動作を表現しています。
ここでは、クロック同期式の順序回路の例として、Dフリップフロップを取り上げ、真理値表の作成方法を説明します。
図7にポジティブエッジトリガのDフリップフロップの回路記号を示します。
ポジティブエッジトリガのDフリップフロップは、CLK信号の立ち上がりのタイミングでD信号を読み取り、それをQ端子に出力する働きをします。CLK信号の立ち上がり時以外は、直前のQ端子の電圧を保持します。この働きを真理値表で表現すると、表7の様になります。
入力 | 出力 | 動作 | |
---|---|---|---|
CLK | D | Q | |
L | X | QOLD | 記憶保持 |
H | X | QOLD | |
↓ | X | QOLD | |
↑ | L | L | 読み取り |
↑ | H | H |
ここで、Xは電圧がLでもHでも構わない事を示しており、通常"Don't care"と呼ばれています。Xの記号を使わずに真理値表を作成する事も可能ですが、XがLの場合とHの場合で、2行に分けて真理値表を表記する必要があり、真理値表の行数が増えてしまいます。この様にXは、真理値表を簡略表記するのに便利な記号です。
参考までに、表7と同じ内容を表す真理値表を、Xの記号を使わずに作成すると表8の様になります。
入力 | 出力 | 動作 | |
---|---|---|---|
CLK | D | Q | |
L | L | QOLD | 記憶保持 |
L | H | QOLD | |
H | L | QOLD | |
H | H | QOLD | |
↓ | L | QOLD | |
↓ | H | QOLD | |
↑ | L | L | 読み取り |
↑ | H | H |
参考:D信号には、電圧の立ち上がりと立下りに意味がないので、D信号が取る値はLとHの2種類なのに対して、CLK信号には電圧の立ち上がりに意味があるので、CLK信号が取る値はL、H、および↑と、念のために立ち下がりの↓を入れて、4種類ある事に注意してください。真理値表の電圧の値(L、H、↑、および↓)が書いてある行は4(CLK信号の値の種類)×2(D信号の値の種類)=8行になります。
表7(および表8)において、QOLDは、端子Qの直前の出力電圧を示す変数です。QOLD変数により、記憶保持動作を表現しているのは、表6のRSフリップフロップの真理値表と同様です。
クロック同期式の順序回路は、クロック信号の立ち上がり(ポジティブエッジトリガの場合)または立下り(ネガティブエッジトリガの場合)の、いずれかのタイミングで、回路の出力状態が変化します。そのため、クロック信号の立ち上がり、または立下りを表す記号を真理値表に導入する必要があります。
表7(および表8)においては、CLK信号の立ち上がりを"↑"の記号で、CLK信号の立下りを"↓"の記号で表しました。このページでは、文字コードが割り当てられているという理由で上矢印と下矢印の記号を使いましたが、図8および図9に示す記号もよく使われます。
ポジティブエッジトリガの回路の場合、クロック信号の立ち上がりのタイミングのみで出力電圧が変化する事が、真理値表の書き手と読み手とで了解が取れているならば、出力電圧の変化が起こらない、クロック信号の立ち上がり以外のタイミングについては、真理値表に表記する必要がありません。そのため、表9に示す、クロック信号の立ち上がりのタイミングのみを書いた真理値表でも、回路の動作が十分に伝わります。
入力 | 出力 | |
---|---|---|
CLK | D | Q |
↑ | L | L |
↑ | H | H |
Dフリップフロップの様な簡単な回路では表7の様な真理値表を書いてもあまり問題はないですが、動作が複雑なクロック同期式の順序回路では、その様な真理値表の書き方では行数が非常に多くなるため、表9の様な、出力電圧の変化の可能性のあるクロック信号の立ち上がり(ネガティブエッジトリガの場合は立ち下がり)のタイミングのみを真理値表に書く事が多くあります。
注:クロック同期式の順序回路に非同期プリセット端子や非同期リセット端子などの非同期入力端子がある場合は、それらの電圧(LやH)も真理値表に記入します。(図10参照)
クロック同期式の順序回路では、読み手の理解力に応じて、表7~表9に示した様に、色々な真理値表の書き方をしますから、注意が必要です。
ここで、市販されているDフリップフロップICのデータシートに載っている真理値表を見てみましょう。
図10は、東芝セミコンダクター社のTC74HC174APという、負論理の非同期クリア端子が付いたDフリップフロップ(図11参照)が6個、1つのパッケージに収められたICの、データシートに載っている真理値表です。
この表は、東芝セミコンダクター社のTC74HC174APの日本語のデータシート(2014-03-01版)の2ページより引用しました。
非同期クリア端子のあるDフリップフロップの、非同期クリア端子(CLR端子)の電圧をHに固定すると、非同期クリア端子のないDフリップフロップ(図7参照)と同じ働きをします。
そこで、図10の真理値表のCLR=Hの行のみを取り出し、かつCLRの列を削除すると、表10の真理値表になります。
入力 | 出力 | 動作 | |
---|---|---|---|
CLK | D | Q | |
↑ | L | L | 読み取り |
↑ | H | L | |
↓ | X | QOLD | 保持 |
注:図10の真理値表ではクロック信号の名称がCLKではなくCKとなっていますが、図7に合わせて、CLKに書き換えました。また、図10ではDがCKの左側にありますが、左右を入れ替えました。図10の最後の行のQの値はQnとなっていますが、これは「直前のQ端子の電圧」という意味です。表7に合わせて、QnをQOLDに書き換えました。また、図10の一番右の列(Functionの列)の下から2行目と3行目が ー となっていますが、表10では「読み取り」と表記しました。
本来、表10と表7は、同じ働きをする回路の真理値表なので、同じ表になるはずです。しかし2つの真理値表を比べると、表10は電圧の値(L、H、X、↑、↓、およびQOLD)が書いてある行が3行なのに対して、表7は5行あります。
これは、表10において、CLK=HおよびCLK=Lの行が省略されているからです。おそらく、「クロック信号の電圧が変化しない時にDフリップフロップの出力が変化しないのは自明だから」と、これら2行を省略したのでしょう。
この様に、クロック同期式の回路の真理値表は、読み手にどの程度の知識を仮定するかで、書き方が変わってきます。