応用情報技術者 2024年 春期 午前2 問21
問題文
入力がAとB,出力がYの論理回路を動作させたとき、図のタイムチャートが得られた。この論理回路として、適切なものはどれか。


選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
NANDゲートのグリッチ【午前2解説】
正解の理由
選択肢ウは NAND(入力の論理積を否定)を示す記号であり、与えられたタイムチャートの振る舞いは NAND の論理特性と伝播遅延によるグリッチで最も自然に説明できます。NAND の真理値は A・B がともに 1 のときのみ 0、それ以外は 1 です。タイミング図の区間①・②・④(A,B が (0,1)、(1,0)、(1,0))で Y が 1 である点は NAND と一致します。一方で区間③(A=0,B=1)で Y=0 になっているのは、直前の入力変化(点線②)で一瞬 A=B=1 となり Y が 0 に落ち、その後の復帰が出力の伝播遅延や遷移速度の差のため遅れ、区間③でも低レベルが観測されているためです。以上により、回路記号も含めて ウ(NAND)が適切です。
解法ステップ
- 各安定区間の入力 (A,B) に対して NAND の論理値 Y = NOT(A AND B) を計算する。
- (0,1) → 1、(1,0) → 1、(1,1) → 0、(0,0) → 1
- 各区間の実測 Y と比較する。
- 区間① (0,1)→Y=1:NAND と一致
- 区間② (1,0)→Y=1:NAND と一致
- 区間④ (1,0)→Y=1:NAND と一致
- 区間③ (0,1)→Y=0:論理値だけでは矛盾(NANDなら1)が生じる
- 矛盾(区間③)を、入力遷移時の相対タイミング(どちらが先に変化したか)とゲートの伝播遅延で説明する。
- 点線②の変化で、入力の変化順序/立ち上がり・立ち下がりのタイミングにより一瞬 A=1,B=1 となり、Y が 0 に下がる。
- その後入力が安定して (0,1) になっても、出力の 0→1 の復帰が遅く(立ち上がり遅延が大きく)区間③で 0 のまま観測される。
- 記号上の特徴(入力線の形状、出力の否定マーク)も照合し、NAND 記号(直線入力+出力に小丸)が一致する選択肢を選ぶ。
選択肢別の誤答解説
- ア(XOR)
- XOR は入力が異なるときに出力が 1、同じときに 0 です。問題の安定区間では A と B が常に異なるため XOR は常に 1 を出し、区間③で観測される 0 を説明できません。また記号に否定小丸がない点も合いません。
- イ(XNOR)
- XNOR は入力が同じときに 1、異なるときに 0 です。与えられた安定区間では入力は常に異なるため XNOR は常に 0 を出すはずで、実測の多数区間で Y=1 となっている点と矛盾します。記号形状(XOR の否定)も合いません。
- ウ(NAND)
- 直線入力+出力に小丸の記号が NAND を表します。論理特性と、入力遷移時に「一瞬両方 1 になる」可能性(伝播遅延に起因するグリッチ)で区間③の 0 を説明できるため適合します。
- エ(NOR)
- NOR は入力のいずれかが 1 なら出力は 0 になるため、与えられた波形(多くの区間で Y=1)と合いません。記号的には OR の否定ですが、波形の傾向と不一致です。
よくある誤解
- 伝播遅延を無視して「同じ入力は常に同じ出力」だけで判断する
- 静的な真理値は同じでも、遷移時の順序や遅延で一時的なグリッチが発生し得ます。
- 記号の見た目(曲線やアーチ)だけで即断する
- 入力線の形状や出力の小丸(否定)を正確に見ると論理種別が判断できます。見落としや勘違いが多い点です。
- グリッチが起きても必ず瞬時に元に戻ると考える
- 出力の立ち上がり/立ち下がりの遅延や非対称性により、グリッチの状態が次の安定区間まで継続して観測されることがあります。
補足コラム:静的ハザードと対策
今回の現象は「静的1ハザード(static-1 hazard)」の典型です。論理的には常に 1 であるべき条件のもとで、入力の同時遷移が不完全な重なりを生じると一瞬 0 に落ちることがあります。対策例:
- 回路式に冗長項(コンセンサス項)を追加してハザードを除去する(組合せ論理の冗長化)。
- 演算を同期化して同時変化を避ける(フリップフロップで同期する)。
- ゲートの立ち上がり/立ち下がり遅延をバランスさせる(タイミング調整)。 ハードウェア設計ではこれらを組み合わせてグリッチ対策を行います。
FAQ
Q1. なぜ区間①ではグリッチが起きず、点線②では起きたのですか?
A1. 入力が同時に変わっているように見えても、実際はどちらが先に変化するか/どちらの遷移が速いかが異なります。点線①では B の変化が先行して一瞬 A=B=1 の状態が発生しなかったため Y は変化しませんでした。点線②では一瞬両方が 1 になる順序(または重なり)が生じ、Y が 0 に落ちました。
A1. 入力が同時に変わっているように見えても、実際はどちらが先に変化するか/どちらの遷移が速いかが異なります。点線①では B の変化が先行して一瞬 A=B=1 の状態が発生しなかったため Y は変化しませんでした。点線②では一瞬両方が 1 になる順序(または重なり)が生じ、Y が 0 に落ちました。
Q2. NAND の出力が論理的に 1 のはずなのに区間③で 0 のままなのはおかしくないか?
A2. グリッチで出力が 0 に落ちた後、0→1 の復帰に要する遅延(出力の立ち上がり遅延)が長く、区間③の観測時点まで回復していなかったためです。伝播遅延が原因で観測上「安定」区間でも一時の状態が残ることがあります。
A2. グリッチで出力が 0 に落ちた後、0→1 の復帰に要する遅延(出力の立ち上がり遅延)が長く、区間③の観測時点まで回復していなかったためです。伝播遅延が原因で観測上「安定」区間でも一時の状態が残ることがあります。
Q3. 実物のゲートでテストすると同じ現象が確実に見られるか?
A3. 観測しやすさは入力の遷移タイミング、立ち上がり/立ち下がり速度、ゲートの特性、負荷などに依存します。条件を調整すれば実際にグリッチが観測できます。
A3. 観測しやすさは入力の遷移タイミング、立ち上がり/立ち下がり速度、ゲートの特性、負荷などに依存します。条件を調整すれば実際にグリッチが観測できます。
関連キーワード: NANDゲート、グリッチ、伝播遅延、静的ハザード、回路タイミング

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

