フリップフロップ回路とは
- 前回の出力値が Q であるときに、いくつかの入力値によって次の Q の値が決定される論理回路。
- 電流が流れてる限り、最後の出力値 (1bitだから 0 or 1) を覚えていられるのが特徴。
- Q のためにバランスをとってくれる Q をセットで持ってる。Q の値は、常に Q の逆になる。フリップフロップ=ぎっこんばったん。
フリップフロップ回路でできてるRAMがSRAM。回路が複雑なので高価だけど、フリップフロップ回路でビットの状態を覚えてられるので、DRAMと違ってリフレッシュがいらない。あと、SRAMは速いからキャッシュメモリに使われてるらしい。
SRフリップフロップとは
前回の出力値が Q であるときに、任意の入力値 S と R によって次の Q の値が決定されるタイプのフリップフロップ。
調べてると『SR』だったり『RS』だったりするが同じものっぽい。S は Set、R は Reset。
- S = 0 かつ R = 0 なら、次の Q は前回と同じ (保持)。
- S = 0 かつ R = 1 なら、次の Q は必ず 0 (リセット)。
- S = 1 かつ R = 0 なら、次の Q は必ず 1 (セット)。
- *S = 1 かつ R = 1 を入力するのは、Q と Q が両方とも 0 になって「Q は常に Q の逆」というルールを崩してしまうので、『禁止』または結果が『不定』とされている。*実際にどうなるかはハードの実装に依存する。
サンプルコード
NORで作るのとNANDで作るのがあるらしいので、両方作った。もちろんどっちでも挙動は同じ。
また、ここでは「Q は常に Q の逆」が崩れた時にエラーとなるようにした。よって S = 1 かつ R = 1 は実質禁止。
上記2つのコードは、以下のテストに合格する。
くわしく