D/A変換器で最下位1ビット分の電圧変化を求める考え方
基本情報技術者試験 平成29年度春期 午前 問20 / ハードウェア › ハードウェア
過去問にチャレンジ
分解能が8ビットのD/A変換器に,ディジタル値0を入力したときの出力電圧が0Vとなり,ディジタル値128を入力したときの出力電圧が2.5Vとなる場合,最下位の1ビットの変化による当該D/A変換器の出力電圧の変化は何Vか。
- ア
2.5/128
- イ
2.5/255
- ウ
2.5/256
- エ
2.5/512
会話形式の解説
講師今回はD/A変換器、つまりディジタル値を電圧に変える装置の計算問題です。注目点は、入力値と出力電圧の対応が1組だけ与えられていることです。そこから、ディジタル値が1変わったときの電圧を求めます。
受験者8ビットとあるので、私は2の8乗の256で2.5Vを割るのかと思いました。分解能の問題では256を使うと覚えていたので。
講師そこが一番つまずきやすいところです。まず確かめたいのですが、2.5Vになるのはディジタル値がいくつのときでしたか。
受験者128のときです。0のときは0Vです。最大値の255のときの電圧ではないのですね。
講師そうです。D/A変換器の出力は入力に比例するとみなせるので、入力が0から128に増える、つまり差が128で、電圧は2.5V増えています。では、入力が1増えると電圧はどれだけ増えますか。
受験者差の比で考えると、2.5Vを128で割った値です。最下位1ビットの変化は入力値が1増減することなので、2.5/128がそのまま答えになるわけですね。
講師その通りです。約0.0195Vです。検算として、2.5/128に128を掛けると2.5Vに戻り、条件と一致します。この検算をほかの選択肢にも当てはめてみましょう。
受験者2.5/256だと、128を掛けると1.25Vで半分になってしまいます。2.5/512なら0.625Vで、さらに小さくなりますね。
講師どちらも条件の2.5Vになりません。512については、8ビットの入力は0〜255なので、問題のどこからも出てこない数です。残る2.5/255はどうでしょう。
受験者2.5/255を1段階とすると、2.5Vになるのは入力が255のときです。最大値で2.5Vという問題なら合いそうですが、今回は128で2.5Vなので合いません。
講師よく整理できています。8ビットなら256通りといったビット数からの計算は、最大値や全範囲の電圧が与えられたような場合に使います。今回のように途中の点の対応が示されたときは、出力電圧の差を入力値の差で割るのが確実です。
受験者数字を見てすぐ公式に当てはめず、どの入力でどの電圧なのかを先に確かめるようにします。
講師補足すると、128は2進数で10000000、最上位ビットだけが1の値です。つまり条件は「最上位ビットが1のとき2.5V」と言い換えられ、最下位ビットの重みはその1/128になります。こう見ると、計算の意味がつかみやすくなります。
まとめ
8ビットのD/A変換器で、入力0のとき0V、入力128のとき2.5Vという条件から、最下位1ビット分の電圧変化を求める問題です。出力は入力に比例するとみなせるので、電圧差2.5Vを入力差128で割った2.5/128V(約0.0195V)が答えです。8ビットだから256や255で割るという思い込みは誤りで、求めた値に128を掛けて2.5Vに戻るかを検算すると見分けられます。ビット数からの計算は、最大値や全範囲の電圧が与えられたような場合に使います。
解答・解説
正解はアです
この問題のテーマ
D/A変換器で、入力値と出力電圧の対応が1組与えられたとき、ディジタル値が1変わったときの出力電圧の変化(最下位1ビット分の電圧)を求める問題です。
解き方の考え方
D/A変換器の出力は入力値に比例するとみなせるので、「入力の変化量」と「出力電圧の変化量」の比から1段階あたりの電圧が求まります。入力を0から128に変えると出力は0Vから2.5Vになるため、入力差128で電圧差2.5Vです。最下位1ビットの変化は入力値が1増減することにあたるので、1段階あたりの電圧は 2.5V ÷ 128 = 2.5/128 V(約0.0195V)です。検算すると (2.5/128) × 128 = 2.5V となり、問題の条件と一致します。
選択肢ごとの解説
- ○ア 2.5/128アの2.5/128は、入力差128で2.5V変わるという条件を、入力1あたりに直した値です。最下位1ビットの変化は入力が1変わることなので、これが求める電圧変化になります。
- ×イ 2.5/255イの2.5/255で1段階を計算すると、2.5Vになるのは入力が255のときです。問題では入力128で2.5Vになっているので、この値は条件と合いません。
- ×ウ 2.5/256ウの2.5/256では、入力128のときの出力は (2.5/256)×128 = 1.25V です。問題の条件の2.5Vにならないので誤りです。
- ×エ 2.5/512エの2.5/512では、入力128のときの出力は (2.5/512)×128 = 0.625V で、条件の2.5Vと一致しません。8ビットの入力は0〜255なので、512という値は問題のどこからも出てきません。
補足
8ビットの128は2進数で10000000で、最上位ビットだけが1の値です。そのため、この問題の条件は「最上位ビットが1のとき2.5V」と言い換えることもでき、最下位ビットの重みはその1/128になります。
POINT
- D/A変換器の1段階あたりの電圧は、与えられた2点の「出力電圧差 ÷ 入力値の差」で求められます。
- 最下位1ビットの変化は、ディジタル値が1増減することにあたります。
- 分解能のビット数(8ビットなら256通り)が使えるのは、最大値や全範囲の電圧が与えられたときだけで、この問題では入力128の対応から計算します。
- 求めた1段階の電圧を与えられた入力値に掛けて、条件の電圧に戻るかを確かめると誤りを防げます。
