クロックの立上りエッジで,8ビットのシリアル入力パラレル出力シフトレジスタの内容を上位方向へシフトすると同時に正論理のデータをレジスタの最下位ビットに取り込む。
また,ストローブの立上りエッジで値を確定する。
各信号の波形を観測した結果が図のとおりであるとき,確定後のシフトレジスタの値はどれか。
ここで,数値は16進数で表記している。
正答2
解説
正解は2です。
シフトレジスタは、クロックの立上りごとに内容を上位方向へ1ビットずらし、そのときのデータ信号を最下位ビットに取り込みます。
8ビットのレジスタなので、ストローブが立ち上がった時点で、直前の8回のクロックで取り込んだ値が残っています。
図の波形を読み取ります。
クロックの立上りは図中に10回あり、ストローブは9回目と10回目の立上りの間で立ち上がります。
したがって、値の確定に関係するのは1〜9回目の立上りで取り込んだデータです。
データ信号は、最初は高レベルで、2回目の立上り直後に低レベルへ下がります。
その後、5回目の立上り直後に高レベルへ上がり、7回目の立上り直後に低レベルへ下がります。
そして、9回目の立上りの直前に再び高レベルへ上がります。
【計算】
各立上りで取り込む値を正論理で読むと、1回目から順に1、1、0、0、0、1、1、0、1です。
9ビット取り込んだので、最初の1ビットはレジスタの外へ押し出されます。
残る8ビットは2〜9回目の値で、上位から10001101になります。
上位4ビット1000は16進数の8、下位4ビット1101は16進数のDです。
よって、確定後の値は8Dです。
【選択肢別解説】
1:× 63は01100011であり、波形から読み取ったビット列と一致しません。
2:○ 2〜9回目の立上りで取り込んだ10001101を16進数で表した8Dです。
3:× B1は10110001で、ビット列を逆順に読んだ値です。
最初に取り込んだビットほど上位に移動することに注意します。
4:× C6は11000110で、1〜8回目の立上りで取り込んだ値です。
ストローブの前に9回目の立上りがあるので、1回目の値は押し出されています。
【ポイント】
上位方向へシフトするレジスタでは、先に取り込んだビットほど上位に移ります。
ストローブの直前までに何回クロックが立ち上がったかを正確に数えることが重要です。