jinyux’s diary

IT業界初心者です。勉強したことをまとめています。

ストレージ基礎(SRラッチ)

ORゲートで下記のような回路を組むことを考える。

まず出力Cが0の場合、Bには0が入力されている。B=C=0ならば当然Aも0であり、A=0のままであればCは変化しない。当たり前であるが、状態は変化しない。

この状態から、Aの値を0→1に変化させること考える。ORゲートは入力に一つでも1が入力されると1が出力されるのでCも0→1に変化する。C=1になることによりB=1になるので結果的にA, Bともに1になる。それはCが1であることに矛盾しないので最終的にC=1の状態で安定する。

そこでAを1→0に変化、つまり元の状態に戻してみる。C=B=1の状態であったのでA=0であってもORゲートは1を出力するのでCの値は変化せずC=1のままである。

この後、またAを0→1と変化させてもCの値は変化しない。

つまり、Aの入力を0→1に変化させるとCも0→1に変化するが、その後Aを1→0に戻してもC=1を維持し続ける、ということでこの回路はAの入力の変化の履歴を(一回限りであるが)保存するといえる。別の言い方では、状態が変化し別の状態に変化したとも言える。この場合ならC=0の状態からC=1の状態に変化し、その状態の変化で物事が保存されたと認識することができた(そして元の状態には戻らない)。

上記のような出力が入力の一部に影響を与えることをフィードバックループと呼ぶ。フィードバックを用いると状態の遷移を作り出すことができそうだ。

SRラッチ

そこで以下のような回路を考える。


初期状態

まずa=1, b=0の状態を初期状態とする。そのときB=0であるからa=1であるためには上のNORゲートの動作によりR=0である。またA=1であるが、下のNORゲートの出力0を満たすためにはSは1, 0いずれかである。ここではこの回路になにも入力していない状況を考えるとしてS=0とする。a=1, b=0ならばS=0, R=0であることがわかる。またここからS=1を入力してみても出力(a, b)は(1, 0)から変化しない。ここで出力(a, b)=(1, 0)をSET状態と呼ぶことにする。

RESET

ここで入力(R, S)=(1, 0)を入力してみる。すると上のNORゲートの入力がR=1, B=0になるので出力は0となる。そしてA=0となり下のNORゲートの入力がS=0, A=0となるので出力bが1となる。つまり出力(a, b)が(1, 0)から(0, 1)の状態に遷移する。そしてここから(R, S)=(0, 0)に変化させても、(a, b)=(0, 1)の状態から変化しない。この状態をRESET状態と呼び、このような入力を与えることをRESETするという。

SET

RESET状態に対して(R, S)=(0, 1)を入力してみる。下のNORゲートにはS=1, A=0が入力されているのでb=0に変化する。そして上のNORの入力がB=0, R=0になるのでa=1となり(a, b)=(1, 0)の状態へ遷移し、SET状態になる。このような入力を与えることをSETするという。

SET状態とRESET状態の2つの状態を持ち、(R, S)の入力によって自由に切り替えることができる事がわかる。そして、その状態は入力を与えない限り保持し続ける。このような回路をSRラッチ回路と呼ぶ。この2つの状態をONとOFFに見立てると1桁の2進数を表しているわけなので、SRラッチは1bitの情報を保存することができるといえる。
ラッチとはかんぬきのことで、LOCK状態とUNLOCK状態を持ち、いずれかの状態を保持しつづけるわけで比喩的にラッチという言葉が用いられている。


SRラッチをシンボル化したものが以下の図である。

入力(S, R)の2端子、出力(Q, \overline{Q})の2端子の素子となる。Q, \overline{Q}は前述のa, bに対応する。