2020年04月14日 | 公開 |
前の章で説明した様に、図6に示した負論理のAND回路の回路記号は、図3に示した正論理のAND回路の回路記号の各端子に、NOT回路を表す丸印を付けたものになっています。
また図11に示した負論理のOR回路の回路記号は、図4に示した正論理のOR回路の回路記号の各端子に、NOT回路を表す丸印を付けたものになっています。
図6や図11の回路記号において、丸印は正論理と負論理とを変換するためのNOT回路を表している事は、既に説明したとおりです。
これらの例の様に、正論理の回路記号が決まれば、負論理の回路記号を別に定義しなくても、正論理の回路記号の各端子に丸印を付ける事で、負論理の回路記号が得られます。
この考え方を拡張すると、全ての端子が負論理でなく、一部の端子が負論理になった回路の記号も、正論理の回路記号の負論理の端子のみに丸印を付ける事で得られます。
例えば、A端子だけが負論理でB端子とY端子は正論理のAND回路の記号は図12の様になります。
参考:図12の回路は、AがLでかつBがHの時にYがHになります。参考までに図12の回路の電圧表記の真理値表を表14に示します。
入力 | 出力 | |
---|---|---|
A | B | Y |
L | L | L |
L | H | H |
H | L | L |
H | H | L |
また、A端子とY端子が負論理でB端子のみが正論理のOR回路の回路記号は図13の様になります。
参考:図13の回路は、AがLまたはBがHの時にYがLになります。参考までに図13の回路の電圧表記の真理値表を表15に示します。
入力 | 出力 | |
---|---|---|
A | B | Y |
L | L | L |
L | H | L |
H | L | H |
H | H | L |
この様に、丸印を負論理の信号を表わす記号としてとらえると、A端子とB端子が正論理でY端子が負論理のAND回路の回路記号は、図14の様になります。
これは、図15に示す、全ての端子が正論理のNAND回路の回路記号と同じになります。
図14の回路も、図15の回路も、電圧表記の真理値表は、共に表16の様になるため、Y端子が負論理のAND回路と解釈しようと、Y端子が正論理のNAND回路と解釈しようと、回路の物理的な動作は同じです。
入力 | 出力 | |
---|---|---|
A | B | YまたはY |
L | L | H |
L | H | H |
H | L | H |
H | H | L |
しかし、図14の回路の真理値表記の真理値表は表17の様になる一方、図15の回路の真理値表記の真理値表は表18の様になり、図14はあくまでAND回路で、図15はあくまでNAND回路である事が分かります。つまり、図14の回路と図15の回路では、Y信号およびY信号の意味の解釈が変わるのです。
入力 | 出力 | |
---|---|---|
A | B | Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
入力 | 出力 | |
---|---|---|
A | B | Y |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
結局、図14の回路と図15の回路を見分けるには、信号名に上線が付いているかどうかで見分けるしかありません。仮に信号に名前が付いていなければ、両者は全く区別が付きません。この事は、後述する正論理と負論理の曖昧さにつながります。
信号が正論理か負論理かというのは、回路図を見れば明瞭に分かるものでは必ずしもなく、ある種の曖昧さを持っています。その曖昧さについて、回路の例を挙げながら説明します。
前のページで、図1の回路は正論理の信号を発生すると説明しました。しかし、見方を変えれば、同じ回路でも負論理の信号を発生する回路だとも解釈できます。
図16の回路をご覧ください。(比較のために図1の回路を再掲ます)
図16の回路は、図1の回路と全く同じ構成になっています。ただ、信号名のみがPRESSED(図1)からRELEASED(図16)に変わっています。
"RELEASED"は「離された」を意味する英単語です。図1のPRESSED信号はボタンが押された事を検知するための信号なのに対し、図16のRELEASED信号はボタンから指が離れている(すなわちボタンが押されていない)事を検出するための信号なのです。
図16の場合、RELEASED信号の表す命題が「ボタンが押されていない」事なので、真理値と電圧の関係は表19の様になります。
真理値 | 電圧 |
---|---|
0 (偽) | H |
1 (真) | L |
注:真理値が0(偽)の場合は、「ボタンが押されていない」という命題が成立しなかった、すなわちボタンが押されている事を意味します。一方で真理値が1(真)の場合は、命題が成立した、ボタンが押されていない事を意味します。
この様に、RELEASED信号は、真理値0が電圧Hに、真理値1が電圧Lに対応しているので、確かに負論理の信号であるといえます。
図1の回路と図16の回路は、物理的には同じ回路です。それにも関わらず図1は正論理の信号を発生し、図16は負論理の信号を発生しています。この事が示すのは、正論理か負論理かというのは、回路の物理的な構成により決まるのではないという事です。
それでは、何が正論理か負論理かを決めるかというと、回路設計者の設計意図(あるいは回路図を読んだ人の解釈)です。
図1の回路は「ボタンが押されている事を検知したい」という意図で設計されています。PRESSED信号が「ボタンが押されている」という命題が真(1)か偽(0)かを表しているので、真理値と電圧の関係が表3の様になり、正論理になったのです。
一方で図16の回路は、物理的には図1の回路と同じものであるものの、「ボタンが押されていない事を検知したい」という意図で設計されています。RELEASED信号が「ボタンが押されていない」という命題が真(1)か偽(0)かを表しているので、真理値と電圧の関係が表19の様になり、負論理になったのです。
同様の議論をすることにより、図2の負論理の信号を生成する回路と物理的には同じ構成である図17の回路が、正論理の信号を生成する事が分かります。
参考:スイッチの例で説明するより、温度センサの話をする方が理解しやすいかもしれません。あらかじめ設定した温度より高くなるとHを出力し、設定温度より低くなるとLを出力する温度センサがあるとします。このセンサの出力信号に、HOTという名称を付けるなら正論理になり、COLDという名称を付けるなら負論理になります。この様に、信号名により、正論理と負論理が変わります。
この様に考えると、実は信号の命名の仕方が、正論理か負論理かの判断をする上で重要になる事が分かります。
PRESSED(あるいはPRESSED)という信号名からは、ボタンが押されている事を検知したいという設計者の意図が感じられます。そのため、ボタンが押されている事に意味を持たせている(ボタンが押されている時に真理値が1になる)と推測されます。
もし図2の回路で信号名がPRESSEDと上線がないものだった仮定すると、「PRESSEDという信号名なら正論理なので、ボタンが押されている時にHを出力するはずなのに、この回路ではLを出力してしまう。設計者は信号名に上線を付け忘れたか、それともスイッチと抵抗を誤って反対に配置したのかもしれない」と、設計者以外の人が、設計ミスを見つける事が可能になります。
図1や図16と同じ回路でありながら、図18の(a)や(b)の様な信号名を付けた場合について考えてみましょう。
図18(a)では、信号名に"A"という、意味を持たない記号を付けています。これでは、ボタンが押されている時に真理値が1になるのか、あるいは逆にボタンが押されていない時に真理値が1になるのかがわかりません。負論理の場合に信号名に上線を付けるという習慣を必ずしも守っていない人が設計した場合には、正論理か負論理かを判断する材料がありません。
図18(b)では、信号名に"BTN_STAT"という意味ありげな文字列を使っています。これが"button state"(ボタンの状態)の省略形だと分かったとしても、"button state"からは、ボタンが押されている時に真理値が1になるのか、ボタンが押されていない時に真理値が1になるのかがわかりません。
この様に、図18(a)の様な命名法では、何のための信号かが名称より判断できませんし、図18(b)の様な命名法では、正論理か負論理かが信号名からは判断できません。よって、これらの様な曖昧な信号名の付け方は、極力避けるべきだといわれています。
さらに言うと、図18の様に、全ての信号線にとりあえず信号名が付いていれば、負論理の信号に上線を付けるという習慣を守っている限り、信号名から正論理・負論理の区別がつくのですが、回路図中の全ての信号に信号名が付いているとは限りません。
図19を見てください。これは、マイコンを使った基板で、押しボタンスイッチの状態を検出する時に、よく見かける回路です。
実際にはGPIOのピン名称は"GPIO"ではなく、例えば"PA2"(ポートAの第2ビット)などの名称が付いています。ただ、このピン名称は、マイコンの種類ごとに命名規則が違いますし、どのピンを使うかによっても名称が異なりますので、ここでは"GPIO"と記しています。
スイッチの状態を検出するための信号線が、マイコンのGPIO(汎用入出力)のピンに入力されています。この様に、回路図中で押しボタンスイッチがマイコンのすぐ近くにある場合は、いちいち信号名を付けないのが普通です。
参考:信号に名称を付けるのは、複数ページの回路図で別のページの回路に配線をつないだり、別の基板に信号をつないだり、あるいは同一ページの離れた所に信号をつなぎたい場合などが多いです。まれに、説明の都合上、近くの部品同士を結ぶ信号線にも信号名を付ける事があります。
回路図から、スイッチがONの時にGPIOピンにLが入力され、スイッチがOFFの時にGPIOピンにHが入力される事は分かります。しかし信号名がないので、スイッチがONになるのを検出したいのか、スイッチがOFFになるのを検出したいのかが分かりません。よって、この信号線は正論理か負論理かを決定する事ができません。
ただ、この回路図を読んだ人が、正論理と判断しようと、負論理と判断しようと、回路の動作に違いはありません。正論理信号や負論理信号は、物理的に存在するものではなく、回路図を見た人の頭の中に、概念として存在するのです。
ある信号を正論理と解釈すべきか、負論理と解釈すべきか(設計者が信号名に上線を付けるべきか否か)を決めるのに、絶対的に守るべきルールではないものの、従うとしばしば役に立つルールがあります。それは、2つの状態の内、「その状態になっている時間が長い方を真理値0に割り当て、その状態になっている時間が短くて例外的に起こる状態の方に真理値1を割り当てる」というルールです。
身の回りの押しボタンスイッチが付いている電化製品、例えば電卓やインターホンを思い浮かべてみましょう。これらの製品に付いている押しボタンは、ほとんどの時間、押されない状態で放置されています。そして、電卓の場合なら、利用者が何か計算をしようとした時に、計算したい数字や四則演算のボタンを押します。(インターホンの場合なら、家の中の人を呼び出したい場合にボタンを押します)
この様に、ほとんどの電化製品に付いている押しボタンスイッチは、平常時はボタンが押されていない状態になっており、ユーザーが操作しようとした時にだけONになります。「その状態になっている時間が長い方を真理値0に割り当て、その状態になっている時間が短くて例外的に起こる状態の方に真理値1を割り当てる」というルールを適用すると、ボタンが押されていない状態が真理値0で、ボタンが押されている状態が真理値1になります。
図19の回路の場合も、SW1は通常はOFFで、操作した場合だけONになると仮定すると、ボタンが押されていない状態で電圧がHになる事から、GPIOにつながっている信号線は負論理という事になります。