シフトレジスタの確定値はどう読み取るか
基本情報技術者試験 令和元年度秋期 午前 問21 / ハードウェア › ハードウェア
過去問にチャレンジ
クロックの立上りエッジで、8ビットのシリアル入力パラレル出力シフトレジスタの内容を上位方向へシフトすると同時に正論理のデータをレジスタの最下位ビットに取り込む。また、ストローブの立上りエッジで値を確定する。各信号の波形を観測した結果が図のとおりであるとき、確定後のシフトレジスタの値はどれか。ここで、数値は16進数で表記している。

- ア
63
- イ
8D
- ウ
B1
- エ
C6
会話形式の解説
講師クロックの立上りで取り込んだビットを順に追い、ストローブの立上り時点で残る8ビットを確かめます。
受験者ストローブが立ち上がる前のクロックを数えると、入力は9回あるようです。8ビットのレジスタなら、どのビットを使いますか。
講師各立上りでデータを読むと、順に1、1、0、0、0、1、1、0、1です。新しいビットは最下位に入り、既存のビットは上位へ移るので、9回目には最初の1が押し出されます。
受験者では、2回目から9回目までのビットを使うのですね。上位から並べるとどうなりますか。
講師古い順に上位から並べて、10001101です。4ビットずつ区切ると1000と1101なので、16進数では8Dです。
受験者63も候補にありますが、ビット列を比べれば判断できますか。
講師はい。63は2進数で01100011です。確定時に残る10001101とは一致しません。
受験者B1はどうですか。並べる向きを取り違えた場合に選びそうです。
講師B1は10110001です。確定時のビットの並びとは異なります。
受験者C6は11000110ですね。最後の1を取り込む前の値に見えます。
講師そのとおりです。ストローブ前の最後のクロックで1を取り込んだ結果が反映されていないため、C6も違います。
受験者ストローブまでに取り込んだ9ビットのうち、最後の8ビットを上位から並べて8Dにするのですね。
講師はい。入力回数がレジスタの幅を超えたら、古いビットから押し出されます。ストローブの立上りまでに起きたクロックを漏らさず数えることが大切です。
まとめ
クロックの立上りごとに読み取るデータは、ストローブの立上りまでに9ビットあります。8ビットのレジスタでは最初の1が押し出され、残るビットは上位から10001101です。4ビットずつ16進数に直すと8Dになります。
解答・解説
正解はイです
この問題のテーマ
クロックで取り込んだビットのうち、ストローブの立上り時点で8ビットのシフトレジスタに残る値を求める問題です。
解き方の考え方
クロックの立上りごとにデータ信号を読み取ると、ストローブが立ち上がるまでの入力は順に1、1、0、0、0、1、1、0、1です。9回取り込むので、最初の1は8ビットの範囲から押し出されます。残るビットを古い順に上位から並べると10001101となり、4ビットずつ区切ると1000と1101、つまり16進数の8Dです。
選択肢ごとの解説
- ×ア 6363を2進数に直すと01100011です。波形から得た確定時のビット列とは一致しません。
- ○イ 8D8Dを2進数に直すと10001101です。ストローブの立上り時点で残る8ビットと一致します。
- ×ウ B1B1を2進数に直すと10110001です。確定時のレジスタの内容とはビットの並びが異なります。
- ×エ C6C6を2進数に直すと11000110です。この値はストローブ前の最後のクロックで取り込む1を反映した結果と一致しません。
POINT
- データを取り込む時点は、クロックが立ち上がる瞬間です。
- 新しいビットは最下位に入り、既存のビットは上位へ移ります。
- 入力回数がレジスタの幅を超えたら、古いビットから押し出されます。
- ストローブでは、その立上り時点までのクロックを反映した値を確定します。
