名古屋工業大学
先進セラミックス研究センター
井田 隆
名古屋工業大学 環境材料工学科 3 年次授業「マテリアルデザイン」の講義ノートです。
スタティック・メモリは論理素子の組み合わせで実現されます。典型的な例は以下のように2つの NAND ゲートを組み合わせた回路です。
図 2.1
スタティック・メモリ回路
このような回路の出力 D は,2つの入力 A, B によってどのように変化するでしょうか? NAND ゲートのはたらきから,以下の2つの式が成り立ちます。
この1番目の式を2番目の式に代入すると,
D | = | A ∧ D ∧ B |
= | ( A ∧ D ) ∨ B |
という関係が得られます。2番目の式の変形にはド・モルガンの法則を使いました。さらに,A と B の値に応じて,D の値がどのような値を取るか調べると,表 2.2 のようになります。 A = 1, B = 1 のときに D の値が不定となることに注目してください。
A | B | A ∧ D | B | D = ( A ∧ D ) ∨ B |
---|---|---|---|---|
0 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 0 |
1 | 0 | D | 1 | 1 |
1 | 1 | D | 0 | D (不定) |
図 2.1 の回路中の D の値をメモリ,A と B はメモリを書き換えるための信号線とみなすことができます。
通常の状態では A = 1, B = 1 とします。したがって,初期化するまで D の値は不定です。初期化のために「0」というデータを「書き込む」ためには,B = 1 に保ったまま A = 0 とします。すると,図 2.2 のように D の値が 0 に変化します。
はじめに,2つある NAND ゲートの上の方に注目してください。この NAND ゲートの入力の一つ A が 0 になるので,出力 C は必ず 1 になります。すると,下の方の NAND ゲートは2つの入力が両方とも 1 になるので,出力 D が 0 になります。
図 2.2
スタティック・メモリ回路に 0 を書き込む。B = 1 に保ちながら A = 0 とすれば,それまでの状態にかかわらず必ず D = 0 となる。
さて,この A = 0, B = 1 の状態から,はじめと同じ A = 1, B = 1 の状態に戻したらどうなるでしょうか? 図 2.3 のように,出力は D = 0 のままで変化しないことに注目してください。上の方の NAND ゲートの入力のうちの1つは,今 D = 0 になっているので,出力は C = 1 のままです。一方で,下の方の NAND ゲートの2つの入力は両方とも 1 なので,その出力は D = 0 でつじつまがあっていることになります。
図 2.3
スタティック・メモリ回路に 0 を書き込んだあと,A = 0 から A = 1 に戻しても D = 0 のままである。(書き込まれた値を憶えている!)
次に,このメモリに 「1」という値を「書き込む」には,A = 1 に保ったまま B = 0 とします。すると,図 2.4 のようになります。下の NAND ゲートの入力の一方が B = 0 なので,その出力は D = 1 になります。上の NAND ゲートの入力は A = 1, D = 1 となるので,その出力は C = 0 となります。
図 2.4
スタティック・メモリ回路に 1 を書き込む。
A = 1 に保ちながら B を 0 にすれば,それまでの状態に関わらず必ず D が 1 になる。
この後 B = 0 から B = 1 に戻しても,図 2.5 のように,C = 0 なので下の NAND ゲートの出力は D = 1 のままです。
図 2.5
スタティック・メモリ回路に 1 を書き込んだあと,
B = 0 から B = 1 に戻しても D = 1 のままになっている。
(書き込まれた値を憶えている!)
このような回路のことをフリップ・フロップ (flip-flop) 回路とかラッチ (latch) 回路と呼ぶことがあります。フリップ・フロップとは「ひょいとひっくり返す」といった意味合いの言葉です。
2011年4月17日公開
2013年4月5日更新