Hatena::ブログ(Diary)

小人さんの妄想 このページをアンテナに追加 RSSフィード Twitter

2008-05-26

フリップフロップはどのように動くのか

デジタル論理回路を学ぶとき、最初の難関となるのが「フリップフロップ回路」であろうと思う。

デジタル回路の基本素子である AND回路、OR回路、NOT回路 については、さほど難しくは感じないであろう。

ところが、たった2個の NAND回路(NOT+AND回路)を組み合わせた、(SR型)フリップフロップ回路を作ってみると、とたんに頭がこんがらかる難解な回路が出来上がってしまうのだ。

f:id:rikunora:20080526214641p:image

* [Q-pedia | 技術用語事典]

http://itdict.ddo.jp/?%A5%D5%A5%EA%A5%C3%A5%D7%A5%D5%A5%ED%A5%C3%A5%D7


このフリップフロップ回路、それほど構成要素が多いわけでもないのに、実際にどうやって動くのか、なかなか直感的に把握することができない。

私の場合、どうしても動作を理解することができず、回路動作をまねるプログラム(つまりエミュレーター)を書いてみて、何とか動きを覚えたという程度だった。

いったいどういう意図でこんな回路が作られたのか、私にとってはしばし謎であった。

ところが、あるとき雑誌の記事を読んで、この謎がいっぺんに解けた。

残念ながら読んだのがずいぶん昔なので、元の雑誌が何だったのか、正確な出典を忘れてしまった。(たぶんトランジスタ技術か何かだったと思う)

インターネットを検索して、これに類する話が見つからなかったので、ここに書いておくことにする。


フリップフロップ回路の目的は、ずばり「メモリー」である。

電気回路を使って、なんとか「一定の状態を保持することができないか」という意図から、フリップフロップは考え出されたのである。

電気回路によってメモリーを作成せよ、と言われたら、あなたならどんな回路を思い浮かべるだろうか。

もし電線に全く抵抗がなかったなら、最も簡単なメモリーは「円形につないだ電線」であろう。

例えばマイスナー効果を利用して超伝導素子にひとたび電流を流せば、円形電流は半永久的に流れ続けることになる。

円形電流を「流す」、「流さない」という2つの状態は、そのままコンピューターのメモリーとして利用できるだろう。

ただし、円形電流をそのまま利用するには幾つかの問題がある。


1.円形電流をONにすること、すなわち電流をスタートさせることが簡単にできない。

2.円形電流をOFFにすること、すなわち電流をストップさせることが簡単にできない。

3.超伝導にでもしない限り、ずっと電流を流し続けることができない。


1.まず円形電流をスタートさせる方法を考えてみよう。

そのために、円形の電線の中に、1つの OR回路を入れる。

OR回路とは、入力のどちらか片方が"ON"であれば、出力が"ON"となる回路のことであった。

円形の電線に OR回路を入れた状態で、宙ぶらりんになっている OR回路の片方の入力を "ON" にすれば、出力である円形の電線は "ON"になる。

この方法で、円形電流をスタートさせることができるわけだ。


2.しかし、OR回路を1個入れただけだと、今度は"OFF"にすることができない。

何とかして円形電流をストップさせることはできないだろうか。

そこで、今度は円形の電線の中に、1つの AND回路を入れてみる。

AND回路とは、入力のどちらか片方が"OFF"であれば、出力が"OFF"となる回路のことであった。

円形の電線に AND回路を入れた状態で、宙ぶらりんになっている AND回路の片方の入力を "OFF" にすれば、出力である円形の電線は "OFF"になる。


円形につないだ電線に、OR回路と AND回路を同時に入れておけば、OR回路がアクセルの、AND回路がブレーキの役割を果たす。

しかも回路素子が入ったおかげで、超伝導にしなくても電流を流し続けることができる。

かくして、OR回路と AND回路の組み合わせによって、円形の電流を保持するメモリー回路ができあがる。

f:id:rikunora:20080526214642p:image


実は、今考えた「OR+ANDの円形電流」は、フリップフロップと等価な回路なのだ。

ド・モルガンの法則に従って、OR回路を NOT + AND + NOT 回路に置き換える。

そして、NOTの付いている位置を一部 AND回路の方に移せば、SRフリップフロップ回路のできあがり。

f:id:rikunora:20080526214640p:image


フリップフロップとは、電流によって状態を保持する回路のことだったのだ。

そう思えば、デジタル回路の至るところにフリップフロップが入っている理由がよくわかるだろう。

半導体メモリーであるSRAMは、フリップフロップをたくさん並べたものだ。

クロックに合わせて入力状態を保持するラッチ回路も、フリップフロップの応用である。

ひとたび分かってしまうと、デジタル回路とはとことん単純なのだなあと、改めて気付かされる。

そして、この単純さこそがデジタル回路の強みなのだ。


ペカリペカリ 2009/05/29 22:06 さすがですねえ。環状ループに素子を並べるところがすごい。

わたしは、リレーの自己保持回路で動作を理解できた者でした。

rikunorarikunora 2009/06/01 11:59 おお、リレーとは通ですね。
確かにリレーで状態を保持する回路というのは、フリップフロップと同じ役割を果たしていますね。
昔のコンピューターはリレーで出来ていたみたいだし。

北村北村 2014/01/13 22:14 めちゃわかりやすい。デジタル回路、アナログ回路は得意ですか?オペアンプの説明をしてほしい。

rikunorarikunora 2014/01/14 11:03 私はもともとデジタル回路出身なのですが、ここ最近はデジタル+アナログごっちゃになっている回路が多いですね。
この機にオペアンプにも手を出したいと思っています。

北村北村 2014/01/19 23:24 オペアンプの反転増幅器とかの仕組みがよくわからなくて困っています。
私は、ソフト開発の仕事をしているのですが、デジタル回路もアナログ回路も基本的なことが全然わかっていません。今、勉強しているのですが、フリップフロップで行き詰りました。
フリップフロップもまだ完全にわかっているわけではなく、
真理値表にした時の禁止の意味とか、ここの記事のSR型フリップフロップ回路のできあがりで、記載された回路と、記事の先頭に記載されたRSフリップフロップ回路がちょっとだけ違うけどいいのか?というのもわかっていないです。(最初のやつにはSetのNANDに入る前にNOT回路がついていない)
もしよければ教えてほしいです!!!

本屋でいろいろ探して、基礎からわかるとか、簡単にわかるとか、マンガでという本を立ち読みで見たのですが、どれもこれも結局難解な説明ばかりです。ネットでもいろいろ探しましたが、わかりやすいサイトは皆無に近いです。ここで、やっとフリップフロップを少し理解できました。

自分はわかりやすいと思ったのは、村田製作所のサイトにある説明です。JavaVMを使った動画で、わかりやすく解説しています。ここでトランジスタの原理が理解できました。

とにかく、図を使ってイメージを理解したいんです。計算式はわからないです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/rikunora/20080526/p1