応用情報技術者 2020年 秋期 午前2 問23
問題文
次の表に示す値が格納された LUT (Lookup Table) と等価な回路はどれか。ここで、LUTのアドレス信号はがLSBで、ア〜エの回路の入力信号が、が、がに対応する。


選択肢
ア:
イ:(正解)
ウ:
エ:
🔒 解説は解答すると表示されます
LUT論理式導出【午前2解説】
正解の理由
LUTの出力が1となるアドレスは 1, 3, 5, 6 です。これを総和形で表すと
すなわち
です。代数的に整理すると
となります。つまり出力は「a と b のAND」と「c」の排他的論理和(XOR)です。選択肢の中で a と b をANDし、その結果を c とXORしている回路が対応するため、イが等価になります。
(回路対応の説明)
イは a と b をANDして得た信号と c を二入力の排他的論理和(XOR)で結んだ構成と読めます。ANDの出力が 、XORの出力が であり、これが上の と一致します。
解法ステップ
- LUTの出力が1となるアドレス(10進)を拾う:1, 3, 5, 6。
- 各アドレスを対応するミンターン( の組)に変換し、和(OR)で結ぶ:。
- 和積形(sum-of-products)を代数的に整理する/Karnaughマップで最小化する。
- 代数操作で から を導き、さらに とする。
- 回路図を読み、どの選択肢が を実現するかを確認する。ANDで を作り、それと をXORする回路が一致するため イ を選ぶ。
選択肢別の誤答解説
- ア:回路は (ANDの出力とのOR)を表す。 はアドレス7()で1となるが、LUTは0なので不一致。
- イ:ANDで を作り、右側ゲートが排他的論理和(XOR)なら出力は 。上で示した簡約式と一致するため正しい。
- ウ:左で と をORしてからその結果を とANDするので 。例えばアドレス6()では なので0となり、LUTの値1と合わない。
- エ:左で と をORし、さらに右でそれと をORするため 。アドレス2()では となるが LUT は0なので不一致。
(要点)各回路から対応する論理式を明示してから LUT の式 と比較することが重要です。
よくある誤解
- XOR と OR の記号を取り違える:XORは OR に似た記号だが、入力側にもう一つ弧(追加の曲線)がある点で区別します。見落とすと イ を OR と読み誤り、誤答につながります。
- アドレスのビット順(MSB/LSB)の誤認識:問題文の指定(A2 が MSB,A0 が LSB、a=A2,b=A1,c=A0)を逆に読むとミンターンが狂います。
- 最小化を省略して「各1出力にANDを用いてORする」実装を前提に考える:最小化により単純なAND+XORで済む場合があるため、まず式を簡約するクセをつけると良いです。
補足コラム
- (論理式の別表現) は展開すると となり、AND+OR+NOTで実装する場合の構成も読み取れます。
- LUT は任意の真理値表を直に格納できるため、得られた式をそのままハードウェアで実装するか、簡約して低コスト回路に置き換えるかは設計目標(遅延、面積、消費電力)によって選びます。
FAQ
Q1: XOR の図記号が分かりにくいときはどう確認すればよいですか?
A1: 入力側に「もう一つ小さな弧(補助弧)」が付いているのがXORです。疑わしい場合は、図のゲートの説明(凡例)や問題文中の用語(排他的和等)を探してください。
A1: 入力側に「もう一つ小さな弧(補助弧)」が付いているのがXORです。疑わしい場合は、図のゲートの説明(凡例)や問題文中の用語(排他的和等)を探してください。
Q2: この関数を AND/OR/NOT だけで表すとどうなりますか?
A2: 先に示した通り、 や のように展開できます。これをAND/OR/NOTゲートで構成可能です。
A2: 先に示した通り、 や のように展開できます。これをAND/OR/NOTゲートで構成可能です。
Q3: 手早く式を最小化するコツは?
A3: 小さめの変数数(3〜4)なら Karnaugh マップが速く確実です。代数的には共通因子でまとめてみる(cでくくる等)とXOR形が見つかることがあります。
A3: 小さめの変数数(3〜4)なら Karnaugh マップが速く確実です。代数的には共通因子でまとめてみる(cでくくる等)とXOR形が見つかることがあります。
コードで真理値表を確認(例)
# a,b,c の順で 0..7 を評価して LUT の値と (a&b) XOR c を比較
lut = [0,1,0,1,0,1,1,0]
def f_from_expr(a,b,c):
return (a & b) ^ c
for i in range(8):
a = (i>>2)&1
b = (i>>1)&1
c = i&1
print(i, lut[i], f_from_expr(a,b,c))
関連キーワード: LUT、真理値表、排他的論理和、論理式簡約、Karnaughマップ、合成論理、論理回路読み取り

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

