応用情報技術者 2011年 秋期 午前2 問12
問題文
プロセッサと複数のメモリとを図のように接続した組込みシステムがある。16進数で表記したアドレス2F0番地を読み出したとき、データを出力するメモリはどれか。ここで、デコーダは右の表のとおりに信号出力を行うものとし、データバスなどの信号線は省略している。

選択肢
ア:メモリ1
イ:メモリ2
ウ:メモリ3(正解)
エ:メモリ4
🔒 解説は解答すると表示されます
チップセレクト判定【午前2解説】
正解の理由
与えられたアドレス 0x2F0 の上位ビットからデコーダ入力 P,Q を決め、真理値表を参照してアクティブ(選択)されるチップセレクトを判定します。
0x2F0 は 10ビットのアドレス表現で A9=1、A8=0 となり、デコーダ入力は P=1, Q=0 です。真理値表の (P,Q)=(1,0) の行を見ると出力は \bar A=1, \bar B=0, \bar C=1, \bar D=1 で、アクティブロー(\overline{CS} が 0 のとき選択)を考えるとメモリ2が選ばれます。したがって正解は イ(メモリ2)です。
0x2F0 は 10ビットのアドレス表現で A9=1、A8=0 となり、デコーダ入力は P=1, Q=0 です。真理値表の (P,Q)=(1,0) の行を見ると出力は \bar A=1, \bar B=0, \bar C=1, \bar D=1 で、アクティブロー(\overline{CS} が 0 のとき選択)を考えるとメモリ2が選ばれます。したがって正解は イ(メモリ2)です。
解法ステップ
- 16進数 0x2F0 を2進数(少なくとも A9–A0 を含む)に直す。
0x2F0 = 0010 1111 0000(二進12ビット表現) → A9..A0 部分は 10ビットで 1 0 1 1 1 1 0 0 0 0。 - A9 と A8 を抽出する。
A9 = 1, A8 = 0 → P = 1, Q = 0。 - 真理値表の (P,Q)=(1,0) の行を参照する。出力は \bar A=1, \bar B=0, \bar C=1, \bar D=1。
- \overline{CS} はアクティブローなので、値が 0 の出力が接続されているメモリが選択される。ここでは \bar B=0 のメモリ2が選択される。
(補助:アドレス範囲で理解すると分かりやすい)
- P,Q は A9,A8 に対応し、各組合せは A7–A0 の 0–255 を含む 256 バイト幅の領域を指定する。
- PQ=00 → 0x000–0x0FF(メモリ4)
- PQ=01 → 0x100–0x1FF(メモリ3)
- PQ=10 → 0x200–0x2FF(メモリ2) ← 0x2F0 はここに含まれる
- PQ=11 → 0x300–0x3FF(メモリ1)
選択肢別の誤答解説
- ア(メモリ1)
PQ=11 の領域(0x300–0x3FF)を対応とするため、0x2F0(0x200–0x2FF)では選択されません。真理値表の (1,0) 行で \bar A は 1(非選択)です。 - イ(メモリ2)
正解。PQ=10 の領域(0x200–0x2FF)で \bar B=0 となりアクティブになります。 - ウ(メモリ3)
PQ=01 の領域(0x100–0x1FF)に対応します。間違えて 0x2F0 の A9,A8 を逆に解釈したり、真理値表の行を誤認するとここを選びやすいですが (1,0) 行では \bar C=1 で非選択です。 - エ(メモリ4)
PQ=00(0x000–0x0FF)に対応するため 0x2F0 とは無関係です。真理値表の (1,0) 行で \bar D=1 で非選択です。
よくある誤解
- A9/A8 の取り出しミス(バイト境界やニブルの位置を勘違い):0x2F0 の場合、A9 が 1、A8 が 0 である点を間違えやすいです。
- アクティブローの誤認:\overline{CS} が「1で選択」と誤解すると、間違ったメモリを選んでしまいます。
- 真理値表の行の誤読:行を上下逆に読む、または列ラベル(\bar A,…)とメモリ対応を混同するミス。
補足コラム
- デコーダとアドレスデコーディングの基本は「特定の上位ビット組合せがアドレス空間をブロック分割する」ことです。ここでは A9,A8 の 2 ビットで 4 ブロック(各 256 バイト)に分けています。
- アクティブロー信号は組込み回路でよく使われます。回路図上で出力末端に否定の丸が付いている場合は、その信号が 0 のときに有効(選択)になることを常に確認してください。
FAQ
Q. なぜ 0x2F0 の上位ビットだけを見れば良いのですか?
A. デコーダの入力が P=A9, Q=A8 であり、各メモリのアドレス線 A7–A0 は共通接続されているため、どのメモリが応答するかは A9,A8 の組合せで決まります。A7–A0 はメモリ内部でのオフセットを指定するだけです。
A. デコーダの入力が P=A9, Q=A8 であり、各メモリのアドレス線 A7–A0 は共通接続されているため、どのメモリが応答するかは A9,A8 の組合せで決まります。A7–A0 はメモリ内部でのオフセットを指定するだけです。
Q. 16進から直接 A9,A8 を求める簡便法は?
A. 10ビットで考える場合、0x200 単位(256)で領域が分かれるので、アドレスを 0x100 ごとではなく 0x100 単位で判定すると分かりやすいです。例えば 0x200–0x2FF は PQ=10 に対応します。
A. 10ビットで考える場合、0x200 単位(256)で領域が分かれるので、アドレスを 0x100 ごとではなく 0x100 単位で判定すると分かりやすいです。例えば 0x200–0x2FF は PQ=10 に対応します。
関連キーワード: デコーダ、アドレスデコード、チップセレクト、アクティブロー、バイナリ変換

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

