応用情報技術者 2018年 春期 午前2 問22
問題文
クロックの立上りエッジで、データを入力の最下位ビットに取り込んで上位方向へシフトし、ストローブの立上りエッジで値を確定する 8ビットのシリアル入力パラレル出力シフトレジスタがある。各信号の波形を観測した結果が図のとおりであるとき、確定後のシフトレジスタの値はどれか。ここで、数値は16進数で表記している。

選択肢
ア:63
イ:8D(正解)
ウ:B1
エ:C6
🔒 解説は解答すると表示されます
シリアル入力シフトレジスタのビット取り込み【午前2解説】
正解の理由
図のクロック立上り(左から8回)で観測されるデータの各サンプリング値を順に取り込んで、最下位ビット(LSB)へ挿入し上位方向へシフトする動作を8回繰り返すと、シフトレジスタに格納される8ビットは になります。これは16進数で 0x8D なので、選択肢は イ が正解です。
(要点)
- 各クロック立上りでのサンプリング値を明示すると、取り込まれるビット列は 1,0,0,0,1,1,0,1(左が最初のサンプリング、右が8回目)である。
- 「データを最下位ビットに取り込み上位へシフトする」動作規則の下で、1回ごとに左方向(上位)へシフトし新しい値をLSBに入れると最終的に MSB→LSB = 1 0 0 0 1 1 0 1 となる。
解法ステップ
- 図を左から右へ見て、クロック立上りのたびにデータが High(1) か Low(0) かを記録する(8回分)。
- サンプリング結果(第1〜第8立上り):1、0、0、0、1、1、0、1
- 初期レジスタ値を 0000 0000 とする(通常は不定だが問題はこの動作で決まる)。
- 各クロックで「上位へシフト+LSBに新しいデータを格納」を実行していく(ステップごとのレジスタ状態):
- クロック1 (D=1):0000 0001
- クロック2 (D=0):0000 0010
- クロック3 (D=0):0000 0100
- クロック4 (D=0):0000 1000
- クロック5 (D=1):0001 0001
- クロック6 (D=1):0010 0011
- クロック7 (D=0):0100 0110
- クロック8 (D=1):1000 1101
- ストローブの立上りでその時点の並列出力が確定されるため、最終値は = 。
選択肢別の誤答解説
- ア: 63 → 。今回観測されたシフト後のビット配列(1000 1101)とはビットパターンが一致しないため誤り。
- イ: 8D → 。上のステップで示した通り、各クロックでの取り込みとシフトの結果と一致するため正解。
- ウ: B1 → 。シフト操作の途中経過(各クロック後の状態)と照合しても一致しない。
- エ: C6 → 。同様に、サンプリング順により得られる最終ビット列とは異なる。
よくある誤解
- 誤解1:データの変化(立下り・立上り)が「直後」か「直前」かの読み違い
図の説明で「第3点線直後にLowへ」「第7点線直後にHighへ」とあるとき、クロック立上りの瞬間のデータは「直後」側の変化前(=その時点の直前のレベル)ではなく、各立上りでの瞬間のレベルを読み取ることが重要です。今回のサンプリングは各立上りの瞬間で決まります。 - 誤解2:シフト方向とビットの並び順の取り違え
「LSBに取り込む」+「上位へシフト」は、新しいビットが毎回右端(LSB)へ入り、既存ビットは左(MSB側)へ押し上げられることを意味します。これを逆に考えるとビット順が反転してしまい、誤答につながります。
補足コラム
- 実務・回路設計での注目点:シリアル→パラレルのシフトレジスタは、サンプリングタイミング(クロックとデータのセットアップ/ホールドタイム)とラッチ(ストローブ、イネーブル)タイミングが重要です。図題のようにストローブで出力を確定する構成は、シフト中に出力が変わるのを防ぎ安定した並列出力を得るためによく用いられます。
- 覚え方:新しいビットが毎回LSBに入る操作なら「読んだ順がMSB側へ積み上がる」と考えると、最初に読んだビットが最終的にMSBになることを直感的に理解しやすいです。
FAQ
Q1. 立上り直後にデータが変化した場合、どちらの値を採るのか?
A1. サンプリングはクロックの立上り「の瞬間」で行います。問題文で「直後に変化」とある場合、立上りでのサンプリング値は変化前のレベル(立上りの瞬間の信号)になります。図を読む際は「変化タイミングがどの点線の前後か」に注意してください。
A1. サンプリングはクロックの立上り「の瞬間」で行います。問題文で「直後に変化」とある場合、立上りでのサンプリング値は変化前のレベル(立上りの瞬間の信号)になります。図を読む際は「変化タイミングがどの点線の前後か」に注意してください。
Q2. ストローブの立上りが8回目のクロックと重なるときはどうなる?
A2. ストローブがシフト完了後(第8クロックの後)に立ち上がって出力をラッチすることで並列出力が確定します。ストローブが早すぎる(第8クロックより前)と、未完成のビット列が確定されるため注意が必要です。
A2. ストローブがシフト完了後(第8クロックの後)に立ち上がって出力をラッチすることで並列出力が確定します。ストローブが早すぎる(第8クロックより前)と、未完成のビット列が確定されるため注意が必要です。
関連キーワード: シフトレジスタ、LSB挿入、シリアル→パラレル、データサンプリング、クロック同期、ストローブタイミング

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

