基本情報技術者 2019年 秋期 午前(科目A) 問21
問題文
クロックの立上りエッジで、8ビットのシリアル入力パラレル出力シフトレジスタの内容を上位方向へシフトすると同時に正論理のデータをレジスタの最下位ビットに取り込む。また、ストローブの立上りエッジで値を確定する。各信号の波形を観測した結果が図のとおりであるとき、確定後のシフトレジスタの値はどれか。ここで、数値は16進数で表記している。

選択肢
ア:63
イ:8D(正解)
ウ:B1
エ:C6
##: シリアル入力・パラレル出力シフトレジスタの波形解析【午前2 解説】
要点まとめ
- 結論:ストローブ立上り時点でのパラレル出力は 、すなわち 16進で イ(0x8D)です。
- 根拠:ストローブ立上りがクロック立上りと対応するため,その立上りまでの直近8回のクロックで取り込まれたデータ列を上位方向へシフトして並べた結果です。
- 差がつくポイント:データの遷移が「破線(クロックエッジ)で起きている」場合,そのエッジでサンプリングされる値は遷移前のレベルと解釈するのが標準的な解法です。
正解の理由
問題文の条件により,クロックの立上りエッジで LSB(最下位)にデータを取り込み,ストローブの立上りエッジでレジスタの値を確定します。
ストローブ立上り(図中の5本目の破線)はクロック立上りに対応しているため,その時点までに取り込まれた直近8ビット(古い順に b7→b0)を並べると
1,0,0,0,1,1,0,1 となり,これは に該当します。よって正解は イ です。
ストローブ立上り(図中の5本目の破線)はクロック立上りに対応しているため,その時点までに取り込まれた直近8ビット(古い順に b7→b0)を並べると
1,0,0,0,1,1,0,1 となり,これは に該当します。よって正解は イ です。
よくある誤解
-
- 「破線でデータが変わっているときは新しい値がサンプリングされる」と誤解する。図の遷移がクロックと同じ瞬間に描かれる場合は,通常は遷移前の値をサンプリングしたと考えます。
-
- ビット順(MSB/LSB)を取り違える。シフトは下位(LSB)へ入力し,上位方向へシフトするため,新しいビットは b0 に入り,古い順が b7 へ移る点を忘れやすい。
-
- ストローブは「次のクロックで確定」だと誤認する。問題文は「ストローブの立上りで確定」と明記しているので,ストローブ立上り時点の値を評価します。
解法ステップ
- ストローブ立上りがどの破線(クロックエッジ)に対応するかを確認する(図では5本目の破線)。
- その立上りまでに行われた「直近8回のクロック立上り」でサンプリングされたデータ列を古い順に並べる。
- 図から,各クロック立上り時のデータレベルを読み取る(破線で変化している場合は「変化前」のレベルを使用)。
- その8ビットを b7…b0 として並べ,2進→16進に変換する。例:1,0,0,0,1,1,0,1 → 。
(実際の読み取り例:古い方からの8サンプル=1,0,0,0,1,1,0,1 → b7=1 … b0=1)
選択肢別の誤答解説
- ア: 63(0x63 = )
→ 0x63 はビット列 0,1,1,0,0,0,1,1 を意味し,図のデータ遷移パターン(特に破線での遷移前の値を採る点)とは合致しません。 - イ: 8D(0x8D = )
→ 正解。直近8回のサンプリングを古い順に並べるとこの列になります。 - ウ: B1(0xB1 = )
→ 0xB1 は 1,0,1,1,0,0,0,1 の並びで,図中の「高→低→高(2サイクル)→低(2サイクル)→高」によるサンプル順と一致しません。 - エ: C6(0xC6 = )
→ 0xC6 は 1,1,0,0,0,1,1,0 の並び。こちらも,最後のビット(最終サンプル)が1になる点や,直前2サイクルのパターンと不一致です。
補足コラム
- 実回路ではデータ遷移がクロック立上りに近接するとメタスタビリティやセットアップ/ホールド違反の問題が起きます。波形図問題では「遷移が破線上に描かれているときはエッジ直前の値をサンプルする」という慣例的解釈を使うと設問どおりに解けます。
- SIPO(Serial-In Parallel-Out)の理解は,LSBに新しいデータが入るのかMSBに入るのか,シフト方向が上位か下位かを明確にすることが重要です。設問文にある「上位方向へシフト」「最下位に取り込む」を必ず確認してください。
FAQ
Q1: 破線とクロックエッジが同じ位置にあるとき,どちらの値を採るべきですか?
A1: 多くの図問の解釈では「破線で遷移している場合は,そのエッジでサンプリングされる値は遷移前のレベル」とします。設問文に別の指示があればそれに従います。
A1: 多くの図問の解釈では「破線で遷移している場合は,そのエッジでサンプリングされる値は遷移前のレベル」とします。設問文に別の指示があればそれに従います。
Q2: ストローブ立上りがクロック立上りと同時なら,先にシフトが起きるのかラッチが先か?
A2: 本問は「ストローブの立上りで値を確定する」と明記されているため,ストローブ立上り時点でのレジスタ内容をそのまま評価します。図示が同時であれば,クロック立上りでのサンプリング結果を含めて確定すると読むのが一般的です。
A2: 本問は「ストローブの立上りで値を確定する」と明記されているため,ストローブ立上り時点でのレジスタ内容をそのまま評価します。図示が同時であれば,クロック立上りでのサンプリング結果を含めて確定すると読むのが一般的です。
Q3: ビット列を見て16進にする際の注意点は?
A3: b7…b0 の順に並べた2進数をそのまま16進に変換します。新しいデータが b0 に入る点を忘れないこと。
A3: b7…b0 の順に並べた2進数をそのまま16進に変換します。新しいデータが b0 に入る点を忘れないこと。
関連キーワード: シフトレジスタ, シリアル入力, パラレル出力, クロック同期, ストローブ, サンプリング, MSB, LSB, セットアップホールド, メタスタビリティ

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

