動画の解説を参照
PLA (Programmable Logic Array) とは、ユーザーが構成を変更できる集積回路のことです。
シミュレータには (すくなくとも現時点では) PLAはありませんが、アナログ回路で同様のものを作るとこのようになります。
(NOTのような斜め上を向いた矢印の記号は「ダイオード」と呼ばれるもので、矢印の向きにだけ電流が流れる素子です)
A, B, C のスイッチを左に切り替えると入力が 1, 右に切り替えると入力が 0 になります。
X, Y, Z の出力の値は左下のオシロスコープで確認できます。
上の回路で、例えばこの3か所のダイオードを消して \(A\), \(\bar{B}\), \(C\) につながっている方を残すと、上の線の値は \(A\bar{B}C\) になります。
(「消す」とは、実際にはダイオードにつながる素子に高電圧を流して焼き切ったり、「接続」「非接続」を電子的に書き換えたりします)
同様に2段目、3段目でこのように残して他を消すと、2段目は \(ABC\)、3段目は \(\bar{A}\bar{B}\) になります。
次に、右側でこのように1つのダイオードを消すと、\(Y_1\) は 1段目と2段目の論理和になります。
もし左側で上記のようにカットしていれば \(Y_1=A\bar{B}C+ABC\) です。
同様に、例えばこのように消せば \(Y_2\) は3段目の値そのもの、\(Y_3\) は 1段目と3段目の論理和になります。
もし左側で上記のようにカットしていれば \(Y_2=\bar{A}\bar{B}\), \(Y_3=A\bar{B}C+\bar{A}\bar{B}\) です。
以上の変更を加えた回路はこうなります。
一般的に、残すダイオードに応じて以下のようになります。
横の線の部分の論理式は、左半分でダイオード経由でつながっている入力すべての論理積
右下の出力は、右半分でダイオードでつながっている横線すべての論理和
この性質を使えば、入力を主加法標準形 (
第4回) で表した論理式に対応する回路を作れます。
今回紹介した回路では「+」でつなぐことができるのは3項までですが、横線の数を増やせばもっと多くの項に対応できます。
なお、PLAの回路を図示するときは、ダイオードを省略することが多いです。
今回の完成形の回路ならこうなります。つまり、ダイオードがある部分を「●」で表します。
動画の解説を参照
これまでに出てきた論理回路は、どんなに複雑な場合でも出力は入力の組み合わせだけで確定するものでした。
しかし、たとえばこのような回路 (
SRラッチ) では事情が異なります。
(オシロスコープ部分は、上から \(S, R, Q\) の値を表示しています)
この回路で「\(S=0, R=1\) → \(S=0, R=0\)」のように切り替えると出力は
\(Q=0, \bar{Q}=1\)
になりますが、「\(S=1, R=0\) → \(S=0, R=0\)」のように切り替えると出力は
\(Q=1, \bar{Q}=0\)
になります (\(\bar{Q}\) は \(Q\) と逆の値になります)。つまり、同じ入力 「\(S=0, R=0\)」でも、直前の入力がどうだったかによって出力が変わるということです。
真理値表は以下のようになります (灰色の組み合わせは \(\bar{Q}\) と \(Q\) の関係がおかしくなってしまうので
禁止入力といいます。この組み合わせは基本的に使いません)。
| \(S\) |
\(R\) |
\(Q\) |
\(\bar{Q}\) |
| 0 |
0 |
保持 |
| 0 |
1 |
0 |
1 |
| 1 |
0 |
1 |
0 |
| 1 |
1 |
1 |
1 |
SRラッチでは、基本的に \(S=0, R=0\) (ニュートラルの入力) の状態にしておき、
\(R\) を 1 にして 0 に戻す (戻しても \(Q=0\) が回路に記憶される)
\(S\) を 1 にして 0 に戻す (戻しても \(Q=1\) が回路に記憶される)
のような使い方をします (\(R\) は
Reset, \(S\) は
Set の頭文字です)。
このことから、SRラッチのような回路を
記憶回路といいます。
ちなみに、ratch は ratchet (歯止め歯車) の略です。
SRラッチ で \(S, R\) を以下のように切り替え、オシロスコープ部分のスクリーンショットを撮ってください。
課題2解説
動画の解説を参照
SRラッチの左側にこのようなものを付け加えたものが
Dラッチです。
(オシロスコープ部分は、上から \(D, G, Q\) の値を表示しています)
\(G=0\) のときは左側のANDの出力は 0 になるので、SRラッチの \(S, R\) の両方に0を入れた状態、つまり「保持」になります。
\(G=1, D=1\) だとSRラッチに \(S=1, R=0\) を入れた状態なので、\(Q=1\) になります。
\(G=0, D=1\) だとSRラッチに \(S=0, R=1\) を入れた状態なので、\(Q=0\) になります。
要するに、
\(G=0\) → \(Q\) の値は \(D\) の値によらず保持
\(G=1\) → \(Q\) の値は \(D\) と同じ
になります。つまり、\(G\) は「入力の受付」をコントロールする信号です。
真理値表はこのようになります。
| \(D\) |
\(G\) |
\(Q\) |
| \(x\) |
0 |
保持 |
| 0 |
1 |
0 |
| 1 |
1 |
1 |
\(x\) : don't care
※ 真理値表の \(x\) は「この値が何であっても」を意味します。真理値表の中で \(x\) を使った場合は、意味を明示するために真理値表とセットで「\(x\) : don't care」を書く必要があります。
Dラッチ で \(D, G\) を以下のように切り替え、オシロスコープ部分のスクリーンショットを撮ってください。
※ 回路を開いたら、まず 「\(G\) を1にする」「\(G\) を0に戻す」という操作を行ってください。それで図と同じ初期状態になります。
課題3解説