応用情報技術者過去問題 令和3年春期 午後問7
⇄問題文と設問を画面2分割で開く⇱問題PDF問7 組込みシステム開発
デジタル補聴器の設計に関する次の記述を読んで,設問1~3に答えよ。
H社は,デジタル補聴器を開発している会社である。開発するデジタル補聴器(以下,新補聴器という)は,ソフトウェアでの信号処理によって,入力された音を八つの周波数帯(以下,それぞれを帯域という)に分割し,帯域ごとの音量設定ができる。さらに,入力された音の大きさに応じて自動的に音量の調節を行う自動音量調節(以下,AVCという)の機能がある。想定される利用者は,特定の帯域の音が聞き取りにくい人などである。入力された音の帯域への分割を図1に示す。 利用者は,スマートフォンのアプリケーションプログラム(以下,スマホアプリという)を使用して,帯域ごとの音量設定に必要な各種パラメータ(音量パラメータなど)を変更する。
〔ハードウェア構成〕
新補聴器のハードウェア構成を図2に示す。
〔入力バッファ及び出力バッファ〕
入力バッファ及び出力バッファは,それぞれ三つのブロックで構成されている。一つのブロックには1フレーム分のデータを格納できる。入力バッファ及び出力バッファのサイズはともにaバイトである。
ADC及びDACは,入力バッファ及び出力バッファの同じブロック番号のブロックにアクセスする。制御部は,ADCによるデータの書込みが完了したブロックにアクセスする。ADC,DAC及び制御部は,ブロック3にアクセスした後,ブロック1のアクセスに戻る。
バッファの使用例を図3に示す。(1)ADC及びDACがブロック1にアクセスしているとき,制御部はブロック3にアクセスする。次に,(2)ADC及びDACがブロック2にアクセスしているとき,制御部はブロック1にアクセスする。 マイクからのアナログ信号がADCで処理されてから,イヤホンから出力されるまでの時間はbミリ秒になる。
〔新補聴器のソフトウェア〕
制御部のソフトウェアの主な処理内容は,①信号処理,②合成,③AVCである。制御部が受信完了通知を受けると,次に示すように処理を行う。
最適なクロック周波数を決定するために,高速クロックの周波数を用いて,①~③の実行時間を計測した。
1フレーム分のデータを処理するとき,①の一つの帯域の最大実行時間をTf,②の最大実行時間をTs,③の最大実行時間をTaとしたとき,1フレーム分のデータを処理する最大実行時間Tdは,8×c+d+eで表すことができる。
受信完了通知から次の受信完了通知までの時間をTframeとし,高速クロックとして周波数f0を供給したときの各処理の実行時間を表1に示す。①~③の全ての処理がTframe内に完了し,かつ,消費電力が最も抑えられる周波数について,表1を基に決定する。〔AVC処理〕
〔新補聴器のソフトウェア〕の③の処理は,1フレームごとに実行し,適切な音声を出力するように音量を調節する。合成されたデジタル信号の大きさを確認して所定の大きさよりも大きいときは音量を小さくし,所定の大きさよりも小さいときは音量を大きくする。
音量を変更するときは1フレームごとに音量を変化させ,M又はM+1フレーム間で徐々に目標の音量にする。Mは2以上の値でシステムの定数である。目標の音量に到達したら,その次のフレームの合成された信号について目標の音量を決定し,同様の音量調節を行う。
〔AVC処理のソフトウェア〕
AVCの処理フローで使用する変数,関数,定数を表2に,AVCの処理フローを図4に示す。特定の条件では,目標の音量を決定したとき,直ちに音量を目標の音量にする。そのための判定を網掛けした判定部で行っている。演算は全て整数演算である。
H社は,デジタル補聴器を開発している会社である。開発するデジタル補聴器(以下,新補聴器という)は,ソフトウェアでの信号処理によって,入力された音を八つの周波数帯(以下,それぞれを帯域という)に分割し,帯域ごとの音量設定ができる。さらに,入力された音の大きさに応じて自動的に音量の調節を行う自動音量調節(以下,AVCという)の機能がある。想定される利用者は,特定の帯域の音が聞き取りにくい人などである。入力された音の帯域への分割を図1に示す。 利用者は,スマートフォンのアプリケーションプログラム(以下,スマホアプリという)を使用して,帯域ごとの音量設定に必要な各種パラメータ(音量パラメータなど)を変更する。
〔ハードウェア構成〕
新補聴器のハードウェア構成を図2に示す。
- BTモジュールは,Bluetoothを介してスマホアプリと通信する。
- ADCは,マイクから入力されたアナログ信号を,1秒間に24,000回サンプリングし,16ビットの符号付き整数のデータに変換して入力バッファに書き込む。64サンプルのデータを1フレームとして書き込み,書込みが完了したことを制御部に通知する。この通知を受信完了通知という。
- 制御部は,受信完了通知を受けると1フレーム分のデータを処理して出力バッファに書き込む。演算は全て整数演算であり,浮動小数点演算は使用しない。
- DACは,出力バッファに書き込まれた16ビットの符号付き整数のデータをアナログ信号に変換する。
- 低速クロック部は,ADC及びDACに24kHzのサンプリングクロックを供給する。
- 高速クロック部は,制御部に高速クロックを供給する。高速クロックの周波数はf0又はその整数倍で,ソフトウェアによって決定することができる。
〔入力バッファ及び出力バッファ〕
入力バッファ及び出力バッファは,それぞれ三つのブロックで構成されている。一つのブロックには1フレーム分のデータを格納できる。入力バッファ及び出力バッファのサイズはともにaバイトである。
ADC及びDACは,入力バッファ及び出力バッファの同じブロック番号のブロックにアクセスする。制御部は,ADCによるデータの書込みが完了したブロックにアクセスする。ADC,DAC及び制御部は,ブロック3にアクセスした後,ブロック1のアクセスに戻る。
バッファの使用例を図3に示す。(1)ADC及びDACがブロック1にアクセスしているとき,制御部はブロック3にアクセスする。次に,(2)ADC及びDACがブロック2にアクセスしているとき,制御部はブロック1にアクセスする。 マイクからのアナログ信号がADCで処理されてから,イヤホンから出力されるまでの時間はbミリ秒になる。
〔新補聴器のソフトウェア〕
制御部のソフトウェアの主な処理内容は,①信号処理,②合成,③AVCである。制御部が受信完了通知を受けると,次に示すように処理を行う。
- サンプリングしたデータから一つの帯域を抽出し,帯域に割り当てられた音量パラメータを乗じる。これを八つの帯域に対して行う。
- ①で得られたそれぞれの帯域のデジタル信号を合成して一つのデジタル信号にする。
- 合成されたデジタル信号について,AVCで音量を調節して,出力バッファに書き込む。
最適なクロック周波数を決定するために,高速クロックの周波数を用いて,①~③の実行時間を計測した。
1フレーム分のデータを処理するとき,①の一つの帯域の最大実行時間をTf,②の最大実行時間をTs,③の最大実行時間をTaとしたとき,1フレーム分のデータを処理する最大実行時間Tdは,8×c+d+eで表すことができる。
受信完了通知から次の受信完了通知までの時間をTframeとし,高速クロックとして周波数f0を供給したときの各処理の実行時間を表1に示す。①~③の全ての処理がTframe内に完了し,かつ,消費電力が最も抑えられる周波数について,表1を基に決定する。〔AVC処理〕
〔新補聴器のソフトウェア〕の③の処理は,1フレームごとに実行し,適切な音声を出力するように音量を調節する。合成されたデジタル信号の大きさを確認して所定の大きさよりも大きいときは音量を小さくし,所定の大きさよりも小さいときは音量を大きくする。
音量を変更するときは1フレームごとに音量を変化させ,M又はM+1フレーム間で徐々に目標の音量にする。Mは2以上の値でシステムの定数である。目標の音量に到達したら,その次のフレームの合成された信号について目標の音量を決定し,同様の音量調節を行う。
〔AVC処理のソフトウェア〕
AVCの処理フローで使用する変数,関数,定数を表2に,AVCの処理フローを図4に示す。特定の条件では,目標の音量を決定したとき,直ちに音量を目標の音量にする。そのための判定を網掛けした判定部で行っている。演算は全て整数演算である。
設問1
入力バッファ及び出力バッファについて,(1),(2)に答えよ。
- 本文中のaに入れる適切な数値を答えよ。
- 本文中のbに入れる適切な数値を答えよ。答えは小数第2位を四捨五入して,小数第1位まで求めよ。ここで,ADCの変換時間及びDACの変換時間は無視できるものとする。
解答入力欄
- a:
- b:
解答例・解答の要点
- a:384
- b:8.0
解説
- 〔aについて〕
空欄には、入力バッファ及び出力バッファのサイズ(バイト単位)が入ります。
問題文の〔入力バッファ及び出力バッファ〕には、「入力バッファ及び出力バッファは、それぞれ三つのブロックで構成されている。一つのブロックには1フレーム分のデータを格納できる」と説明されています。この記述から、入力バッファ及び出力バッファのサイズは、「1フレームのデータサイズ×3ブロック」で求められることがわかります。
次に、1フレーム分のデータサイズを考えます。
問題文の〔ハードウェア構成〕の2つ目の箇条書きに、「…1秒間に24,000回サンプリングし、16ビットの符号付き整数のデータに変換して入力バッファに書き込む。64サンプルのデータを1フレームとして書き込み、…」と説明されています。この記述から、1フレームのデータサイズは、「16ビット×64サンプル」で求められることがわかります。
16ビット=2バイトであるため、1フレーム(=1ブロック)のデータサイズは「2バイト×64サンプル=128バイト」、これにブロック数の3を乗じた「128バイト×3ブロック=384バイト」が入力バッファ及び出力バッファのサイズです。
∴a=384 - 〔bについて〕
ADC、DAC及び制御部がバッファにアクセスする流れは、〔入力バッファ及び出力バッファ〕の説明と図3より、ADC及びDACは同じ番号のバッファにアクセスし、制御部は1回遅れでそのバッファ間の転送を行う仕組みになっていることがわかります。ADCが書き込んだ入力バッファと同じ番号の出力バッファにDACが再びアクセスするのは3回後です。1ブロックには1フレームのデータを格納するので、ADCの処理完了後からイヤホンに出力するまでの時間は、ADCがフレームを3回書き込む(再び同じブロックにフレームを書き込むまでの)時間と同じ時間であることがわかります。ADCの処理完了後から考えると、①制御部による転送、②アクセス待ち、③DACによる読み出しと処理という流れです。入力バッファに1フレームを書き込む時間(ミリ秒)を考えます。
1フレーム=64サンプルであり、アナログ信号のサンプリング回数は1秒間に24,000回なので、
サンプリング回数:24,000回/秒=24回/ミリ秒
1フレーム(64サンプル)に要する時間:64÷24=8/3ミリ秒
よって、3フレームの書込みに要する時間は、
8/3×3=8ミリ秒
これがマイクからのアナログ信号がADCで処理されてから、イヤホンから出力されるまでの時間となります。設問の指示に「小数第1位まで求めよ」とあるので「8.0」と解答することになります。
∴b=8.0
設問2
新補聴器のソフトウェアについて,(1),(2)に答えよ。
- 本文中のc~eに入れる適切な字句を答えよ。
- 決定した高速クロックの周波数はf0の何倍か。適切な数値を整数で答えよ。
解答入力欄
- c:
- d:
- e:
- 倍
解答例・解答の要点
- c:Tf
- d:Ts
- e:Ta
- 3
解説
- 制御部で1フレーム分のデータを処理する最大実行時間Tdを求める式を考えます。
Tdは、①の最大実行時間+②の最大実行時間+③の最大実行時間で求めることができます。
①の最大実行時間は、8つの帯域それぞれで最大実行時間Tfがかかった場合の、8×Tfとなります。
②の最大実行時間は、問題文で示されている通り、Tsとなります。
③の最大実行時間は、問題文で示されている通り、Taとなります。
よって、Td=8×Tf+Ts+Ta となるため、[c]には「Tf」、[d]には「Ts」、[e]には「Ta」が当てはまります。TsとTaは入れ替わっていても問題ありません。
∴c=Tf
d=Ts
e=Ta - 表1の実行時間を、(1)で求めた式に当てはめて1フレーム分のデータを処理する最大実行時間Tdを求めます。
8×0.30×Tframe+0.05×Tframe+0.20×Tframe
=2.65×Tframe
周波数f0を供給したときの処理時間は 2.65×Tframe で、目標とするTframe以内に収まっていません。Tframe以内に収めるには処理時間を 1/2.65 倍にする必要があり、実行時間は高速クロックの周波数に反比例するので、高速クロックには少なくともf0の2.65倍の周波数が必要ということがわかります。問題文中で「高速クロックはf0又はその整数倍」と説明されていますから、2.65以上の最小の整数である「3(倍)」が適切となります。
∴3
設問3
AVC処理のソフトウェアについて,(1),(2)に答えよ。
- 図4中のア~ウに入れる適切な字句を答えよ。
- 図4中の網掛けした判定部において,判定結果が"Yes" となるのは,音量がどのような場合か。40字以内で述べよ。
解答入力欄
- ア:
- イ:
- ウ:
解答例・解答の要点
- ア:dv>0 and v≧vt
- イ:vt
- ウ:0
- 現在の音量が目標値に近く,変化量が0となり音量を変更する必要がない場合 (35文字)
解説
- フローチャートには3つの空欄がありますが、[イ]と[ウ]から考えるとわかりやすいと思います。
〔イ、ウについて〕
問題文の〔AVC処理のソフトウェア〕には、「特定の条件では、目標の音量を決定したとき、直ちに音量を目標の音量にする。そのための判定を網掛けした判定部で行っている」という説明があります。網掛け部の判定部が"Yes"のときには[イ]と[ウ]を含む処理に移るので、ここでは「直ちに音量を目標の音量にする」処理を行うべきであると判断できます。現在の音量を保持する変数は v、目標の音量を保持する変数は vt ですから、現在の音量を目標の音量にする処理は「v ← vt」になります。よって、[イ]には「vt」が当てはまります。
音量が目標の音量に達した場合、その後のフレームでは段階的に音量を増減させる処理は不要となるので、フレームごとの変化分を保持する変数 dv には「0」を設定することになります。
∴イ=vt
ウ=0
〔アについて〕
音量を変化させた後の判定部であり、この判定が"Yes"の場合には前述の「直ちに音量を目標の音量にする」処理が行われます。Yesになる条件式の1つ「dv<0 and v≦vt」の意味を考えると、"変化分がマイナス"かつ"現在の音量が目標音量以下"という状況を表します。これは、音量を下げている局面において変化分だけ音量を下げた結果、音量が目標音量以下まで下がった状況を検知するための条件式です。目標音量に達したのですから、現在の音量=目標音量にして変化を終了させる処理に進むというわけです。
これとは逆に、音量を上げている局面において変化分だけ音量を大きくした結果、音量が目標音量以上まで上がった状況においても、同じように目標音量まで戻す処理を行わなくてはなりません。このため、"変化分がプラス"かつ"現在の音量が目標音量以上"のときに"Yes"となるような条件式が必要となります。したがって[ア]には「dv>0 and v≧vt」という条件式が当てはまります。
∴ア=dv>0 and v≧vt - 条件式の「dv = 0 and v ≠ vt」が"Yes"となるのは、現在の音量が目標音量とは異なるにもかかわらず、変化量が0と算出される場合です。
問題文にある「演算は全て整数演算であり,浮動小数点演算は使用しない」に着目すると、「1 / 2 = 0」「5 / 3 = 1」のように除算の商の小数部は切り捨てられる仕様であることがわかります。したがって1つ前の「dv ← (v-vt)/M」において、(v-vt)がMより小さければdvは0になります。これはフレームごとの変化分が1未満である状況を示しています。dvが0のときにはその後のフレームにおいて変化分の増減処理は行われませんから、その場で目標音量に設定しなければなりません。
音量というキーワードを使って状況を説明すると、「現在の音量と目標の音量が近いため変化量が0となり、徐々に音量を変化させる必要がない場合」などの解答に収斂すると思います。
∴現在の音量が目標値に近く,変化量が0となり音量を変更する必要がない場合