しなぷすのハード製作記

「負論理」の解説

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
2018年12月07日 更新。
用語:負論理
読み:ふろんり
同義語・似た意味の言葉:アクティブロー

概要

論理回路において、「ボタンが押された」、「起動後一定の時間が経過した」、「センサが異常を検出した」など、何かが起こった時や、何かをこれからしなければならない等の状況で電圧がHになり、それらの条件が成立しない時には電圧がLになる信号を、正論理(positive logic)の信号といいます。逆に、何かが起こった時や、何かをこれからしなければならない等の状況で電圧がLになり、それらの条件が成立しない時には電圧がHになる信号を、負論理(negative logic)の信号といいます。

注:ここでHは、閾値より高い信号電圧を表しています。またLは、閾値より低い信号電圧を表しています。

正論理は、意味のある現象が起こった時に高い電圧が出る信号の方式なので、アクティブハイ(active high)ともいわれます。また負論理は、意味のある現象が起こった時に低い電圧が出る信号の方式なので、アクティブロー(active low)ともいわれます。

正論理と負論理は、対比する形で説明すると意味が把握しやすいため、このページでは負論理だけでなく、正論理についても説明します。

広告

論理と電圧の対応

先ほど、正論理とは意味のある現象が起こった時に電圧Hを出力し、意味のある現象が起こらなかった時は電圧Lを出力する信号の方式の事だと説明しました。別の言い方をすると、正論理は、論理0を電圧Lに対応させ、論理1を電圧Hに対応させる、論理と電圧の対応方法だといえます。この事を表したのが表1です。

表1、正論理の場合の論理と電圧の対応
論理 電圧
0 (偽) L
1 (真) H

注:論理学において命題が「真」(T)である事を論理回路では2進数の"1"で表し、論理学において命題が「偽」(F)である事を論理学では2進数の"0"で表します。

逆に負論理は、論理0を電圧Hに対応させ、論理1を電圧Lに対応させる、論理と電圧の対応方法だといえます。この事を表したのが表2です。

表2、負論理の場合の論理と電圧の対応
論理 電圧
0 (偽) H
1 (真) L

正論理信号と負論理信号の簡単な例

正論理信号を発生する回路の簡単な例として、押しボタンスイッチのボタンが押されている時(ONになっている時)はH、ボタンが押されていない時(OFFになっている時)はLになる信号、PRESSEDを発生する回路を図1に示します。

図1、スイッチのボタンを押すとHになる正論理の信号を発生する回路
↑ 画像をクリックすると拡大
図1、スイッチのボタンを押すとHになる正論理の信号を発生する回路

この回路は、押しボタンスイッチSW1と抵抗R1から構成されています。SW1とR1は直列接続されていますが、それらが接続されている部分の電圧を取り出したのが、PRESSEDという信号です。

参考1:電子回路設計の分野では、信号あるいは信号線には、図1のPRESSEDの様に、英数字の文字列で名前を付ける習慣があります。通常アルファベットには大文字を使いますが、小文字を使う場合もあります。また英数字だけではなく、"_"、"/"、"#"等の記号を信号名(信号の名称)に使う場合もあります。

参考2:"PRESSED"は、「押されている」という意味の英単語です。この様に、信号名には、意味の推測できる英単語、またはその略語を使うのが習慣になっています。

図1の回路においてVDDとは、論理回路を動かすための正の電源電圧を表しています。

ボタンが押されていない場合(SW1がOFFの場合)は、PRESSED信号は、抵抗R1によってGNDにプルダウンされているため、出力電圧が0[V]、すなわちLになります。

一方でボタンが押されている場合(SW1がONの場合)は、PRESSED信号は、SW1経由でVDDにショートされるため、出力電圧がVDD、すなわちHになります。

PRESSED信号の表す命題(真偽が明確に定められる事柄)が「ボタンが押されている」事だとすると、論理と電圧の関係は表3の様になります。

表3、PRESSED信号の論理と電圧の関係
論理 電圧
0 (偽) L
1 (真) H

注:論理が0(偽)の場合は、「ボタンが押されている」という命題が成立しなかった、すなわちボタンが押されていない事を意味します。一方で論理が1(真)の場合は、命題が成立した、すなわちボタンが押されている事を意味します。

表3から分かるように、論理0は電圧Lに対応しており、論理1は電圧Hに対応しているので、確かにPRESSED信号は正論理の信号であるといえます。

次に、負論理信号を発生する回路の簡単な例として、押しボタンスイッチのボタンが押されている時(ONになっている時)はL、ボタンが押されていない時(OFFになっている時)はHになる信号、PRESSEDを発生する回路を図2に示します。

図2、スイッチのボタンを押すとLになる負論理の信号を発生する回路
↑ 画像をクリックすると拡大
図2、スイッチのボタンを押すとLになる負論理の信号を発生する回路

信号名PRESSEDには、上線が付いていますが、この様に、負論理の信号の信号名には、上線を付ける習慣があります。

注:ただし、あくまでも習慣なので、必ず負論理の信号名に上線を付けなければならない訳ではありません。信号名に上線を付けない場合は、その信号が負論理の信号である事を、別の手段で説明する必要があります。

図2の回路も押しボタンスイッチSW1と抵抗R1から構成されていますが、SW1とR1の位置関係が、図2の回路と図1の回路では、上下逆になっています。

図2の回路でボタンが押されていない場合(SW1がOFFの場合)は、PRESSED信号は、抵抗R1によりVDDにプルアップされているため、出力電圧がVDD、すなわちHになります。

一方でボタンが押されている場合(SW1がONの場合)は、PRESSED信号は、SW1経由でGNDにショートされるため、出力電圧が0[V]、すなわちLになります。

PRESSED信号の表す命題が、図1のPRESSED信号の場合と同様に「ボタンが押されている」事だとすると、論理と電圧の関係は表4の様になります。

表4PRESSED信号の論理と電圧の関係
論理 電圧
0 (偽) H
1 (真) L

表4から分かるように、論理0は電圧Hに対応しており、論理1は電圧Lに対応しているので、確かにPRESSED信号は負論理の信号であるといえます。

正論理と負論理の曖昧さ

信号が正論理か負論理かというのは、回路図を見れば明瞭に分かるものでは必ずしもなく、ある種の曖昧さを持っています。そのあいまいさについて、回路の例を挙げながら説明します。

押しボタンスイッチの状態を検知する回路の例

先ほど図1の回路は正論理の信号を発生すると説明しました。しかし、見方を変えれば、同じ回路でも負論理の信号を発生する回路だとも解釈できます。

図3の回路をご覧ください。(比較のために図1の回路を再掲ます)

図3、スイッチのボタンを押していない時にLになる負論理の信号を発生する回路
↑ 画像をクリックすると拡大
図3、スイッチのボタンを押していない時にLになる負論理の信号を発生する回路
図1(再掲)、スイッチのボタンを押すとHになる正論理の信号を発生する回路
↑ 画像をクリックすると拡大
図1(再掲)、スイッチのボタンを押すとHになる正論理の信号を発生する回路

図3の回路は、図1の回路と全く同じ構成になっています。ただ、信号名のみがPRESSED(図1)からUNPRESSED(図3)に変わっています。

"UNPRESSED"は「押されていない」を意味する英単語です。図1のPRESSED信号はボタンが押された事を検知するための信号なのに対し、図3のUNPRESSED信号はボタンが押されていない事を検出するための信号なのです。

図3の場合、UNPRESSED信号の表す命題が「ボタンが押されていない」事なので、論理と電圧の関係は表5の様になります。

表5UNPRESSED信号の論理と電圧の関係
論理 電圧
0 (偽) H
1 (真) L

注:論理が0(偽)の場合は、「ボタンが押されていない」という命題が成立しなかった、すなわちボタンが押されている事を意味します。一方で論理が1(真)の場合は、命題が成立した、すなわちボタンが押されていない事を意味します。

この様に、UNPRESSED信号は、論理0が電圧Hに、論理1が電圧Lに対応しているので、確かに負論理の信号であるといえます。

図1の回路と図3の回路は、物理的には同じ回路です。それにも関わらず図1は正論理の信号を発生し、図3は負論理の信号を発生しています。この事が示すのは、正論理か負論理かというのは、回路の物理的な構成により決まるのではないという事です。

それでは、何が正論理か負論理かを決めるかというと、回路設計者の設計意図(あるいは回路図を読んだ人の解釈)です。

図1の回路は「スイッチが押されている事を検知したい」という意図で設計されています。PRESSED信号が「スイッチが押されている」という命題が真(1)か偽(0)かを表しているので、論理と電圧の関係が表3の様になり、正論理になったのです。

一方で図3の回路は、物理的には図1の回路と同じものであるものの、「スイッチが押されていない事を検知したい」という意図で設計されています。UNPRESSED信号が「スイッチが押されていない」という命題が真(1)か偽(0)かを表しているので、論理と電圧の関係が図5の様になり、負論理になったのです。

同様の議論をすることにより、図2の負論理の信号を生成する回路と物理的には同じ構成である図4の回路が、正論理の信号を生成する事が分かります。

図4、スイッチのボタンを押していない時にHになる正論理の信号を発生する回路
↑ 画像をクリックすると拡大
図4、スイッチのボタンを押していない時にHになる正論理の信号を発生する回路
図2(再掲)、スイッチのボタンを押すとLになる負論理の信号を発生する回路
↑ 画像をクリックすると拡大
図2(再掲)、スイッチのボタンを押すとLになる負論理の信号を発生する回路

参考:スイッチの例で説明するより、温度センサの話をする方が理解しやすいかもしれません。あらかじめ設定した温度より高くなるとHを出力し、設定温度より低くなるとLを出力する温度センサがあるとします。このセンサの出力信号に、HOTという名称を付けるなら正論理になり、COLDという名称を付けるなら負論理になります。この様に、信号名により、正論理と負論理が変わります。

この様に考えると、実は信号の命名の仕方が、正論理か負論理かの判断をする上で重要になる事が分かります。

PRESSED(あるいはPRESSED)という信号名からは、ボタンが押された事を検知したいという設計者の意図が感じられます。そのため、ボタンが押された事に意味を持たせている(ボタンが押された時に論理が1になる)と推測されます。

もし図2の回路で信号名がPRESSEDと上線がないものだった仮定すると、「PRESSEDという信号名なら正論理なので、ボタンが押された時にHを出力するはずなのに、この回路ではLを出力してしまう。設計者は信号名に上線を付け忘れたか、それともスイッチと抵抗を誤って反対に配置したのかもしれない」と、設計者以外の人が、設計ミスを見つける事が可能になります。

しかし、仮に図5の(a)や(b)の様な信号名を付けた場合はどうでしょう。

図5、推奨できない信号名の付け方の例
↑ 画像をクリックすると拡大
図5、推奨できない信号名の付け方の例

図5(a)では、信号名に"A"という、意味を持たない記号を付けています。これでは、ボタンが押された時に論理が1になるのか、あるいは逆にボタンが押されなかった時に論理が1になるのかがわかりません。仮に負論理の場合は信号名に上線を付けるという習慣を必ずしも守っていない人の場合は、正論理か負論理かを判断する材料がありません。

図5(b)では、信号名に"BTN_STAT"という意味ありげな文字列を使っています。これが"button state"(ボタンの状態)の省略形だと分かったとしても、"button state"からは、ボタンが押されたときに論理が1になるのか、ボタンが押されなかった時に論理が1になるのかがわかりません。

この様に、図5(a)の様な命名法では、何のための信号かが名称より判断できませんし、図5(b)の様な命名法では、正論理か負論理かが信号名からは判断できません。よって、これらの様な曖昧な信号名の付け方は、極力避けるべきだといわれています。

さらに言うと、図5の様に、とりあえず信号名が付いていれば、負論理の信号に上線を付けるという習慣を守っている限り、信号名から正論理・負論理の区別がつくのですが、回路図中の全ての信号に信号名が付いているとは限りません。

図6を見てください。これは、マイコンを使った基板で、押しボタンスイッチの状態を検出する時に、よく見かける回路です。

図6、マイコンで押しボタンスイッチの状態を検出する回路
↑ 画像をクリックすると拡大
図6、マイコンで押しボタンスイッチの状態を検出する回路
実際にはGPIOのピン名称は"GPIO"ではなく、例えば"PA2"(ポートAの第2ビット)などの名称が付いています。ただ、このピン名称は、マイコンの種類ごとに命名規則が違いますし、どのピンを使うかによっても名称が異なりますので、ここでは"GPIO"と記しています。

スイッチの状態を検出するための信号線が、マイコンのGPIO(汎用入出力)のピンに入力されています。この様に、回路図中で押しボタンスイッチがマイコンのすぐ近くにある場合は、いちいち信号名を付けないのが普通です。

参考:信号に名称を付けるのは、複数ページの回路図で別のページの回路に配線をつないだり、別の基板に信号をつないだり、あるいは同一ページの離れた所に信号をつなぎたい場合などが多いです。まれに、説明の都合上、近くの部品同士を結ぶ信号線にも信号名を付ける事があります。

回路図から、スイッチがONの時にGPIOピンにLが入力され、スイッチがOFFの時にGPIOピンにHが入力される事は分かります。しかし信号名がないので、スイッチがONになるのを検出したいのか、スイッチがOFFになるのを検出したいのかが分かりません。よって、この信号線は正論理か負論理かを決定する事ができません。

ただ、この回路図を読んだ人が、正論理と判断しようと、負論理と判断しようと、回路の動作に違いはありません。正論理信号や負論理信号は、物理的に存在するものではなく、回路図を見た人の頭の中に、概念として存在するのです。

ある信号を正論理と解釈すべきか、負論理と解釈すべきか(設計者の場合は、信号名に上線を付けるべきか否か)を決めるのに、絶対的に守るべきルールではないものの、従うとしばしば役に立つルールがあります。それは、2つの状態の内、「その状態になっている時間が長い方を論理0に割り当て、その状態になっている時間が短くて例外的に起こる状態の方に論理1を割り当てる」というルールです。

身の回りの押しボタンスイッチが付いている電化製品、例えば電卓やインターホンを思い浮かべてみましょう。これらの製品に付いている押しボタンは、ほとんどの時間、押されない状態で放置されています。そして、電卓の場合なら、利用者が何か計算をしようとした時に、計算したい数字や四則演算のボタンを押します。(インターホンの場合なら、家の中の人を呼び出したい場合にボタンを押します)

この様に、ほとんどの電化製品に付いている押しボタンスイッチは、平常時はボタンが押されていない状態で、ユーザーが操作しようとした時にだけONになります。「その状態になっている時間が長い方を論理0に割り当て、その状態になっている時間が短くて例外的に起こる状態の方に論理1を割り当てる」というルールを適用すると、ボタンが押されていない状態が論理0で、ボタンが押されている状態が論理1になります。

図の回路の場合も、SW1は通常はOFFで、操作した場合だけONになると仮定すると、ボタンが押されていない状態で電圧がHになる事から、図6のGPIOにつながっている信号線は負論理という事になります。

広告
ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー

関連用語

関連ページ

このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
こちらのページもおすすめです。
サイトマッププライバシーポリシーお問い合わせ用語集
しなぷすのハード製作記