基本情報技術者試験 令和元年度 秋季 午前 問21
シフトレジスタ?ストロープ?エッジ?となる問題。
--------------------------
令和元年度 秋期 午前 問21
クロックの立上りエッジで、8 ビットのシリアル入力パラレル出力シフトレジスタの内容を上位方向へシフトすると同時に正論理のデータをレジスタの最下位ビットに取り込む。また、ストロープの立上りエッジで値を確定する。各信号の波形を観測した結果が図のとおりであるとき、確定後のシフトレジスタの値はどれか。ここで、数値は 16 進数で表記している。
ア 63
イ 8D
ウ B1
エ C6
--------------------------
解説
問題文に耳慣れない単語がでてきて一瞬戸惑うけど、問題を解くために考えることは非常に単純な問題。
まずは問題文の言葉を説明しておく。
"クロックの立上りエッジで"
簡単な言葉にすると "クロックの波形が立ち上がったタイミングで" になる(あまり変わらないか)。
図にそのタイミングをオレンジの矢印で追加してみる。
上の図の 10 箇所が、該当するタイミングになる。
"8 ビットのシリアル入力パラレル出力シフトレジスタの"
シリアル入力パラレル出力は言葉の通りで、入力の口は一つ(シリアル)であるけど出力の口は複数(パラレル)ということ。
この部分は問題を解くのに必須な情報ではないので、無視して OK。
レジスタはデータを保管する場所と思えばよく、シフトレジスタは保管されているデータ(ビット)がシフト(スライド)できるようになっているレジスタのこと。
8 ビットのシフトレジスタを図にしてみると上の様になる。
上段のレジスタの状態から、内容を上位方向へシフトすると下段の状態になる。
- シフト前の最上位ビットはシフト先がないので、情報はなくなってしまう。
- シフト後の最下位ビットは別のところからデータを持ってくる必要がある(次の部分で説明)。
"内容を上位方向へシフトすると同時に正論理のデータをレジスタの最下位ビットに取り込む"
クロックの立上りエッジにて、シフトレジスタの内容を上位方向にシフトして、さらに、シフトレジスタの最下位ビットに正論理のデータを取り込む。
上の図でオレンジの矢印のタイミング毎に以下の操作を実施するということ。
"正論理" とは、電圧の高い方を 1、電圧の低い方を 0 に対応させること。
※この逆に対応させること(電圧の高い方が 0 とする)を負論理と呼ぶ。
クロック立上りエッジ毎においてシフトレジスタの最下位ビットに取り込まれるデータをオレンジの矢印の下に書き足している。
データは正論理なので、電圧が高いときは 1、低いときは 0 となる。
"また、ストロープの立上りエッジで値を確定する"
クロックではなく、ストロープの波形が立ち上がったタイミングでシフトレジスタの値を確定させる。
ストロープの波形が立ち上がったタイミングを青の矢印で示している。
このタイミングでシフトレジスタの値が確定した場合、その値はいくつになるか?
がこの問題が聞いていること。
時間の矢印の方向は右でありシフトレジスタは 8 ビットなので、青の矢印のタイミングにおけるシフトレジスタは "(上位)1 0 0 0 1 1 0 1(下位)" になる。
最下位ビットに 1, 1, 0, 0, 0, 1, 1, 0, 1 の順に取り込むので、一番最初の 1 は 8 ビットに収まらず消えている。
これを 16 進数にすると 1 0 0 0 = 8、1 1 0 1 = D となるので 8D になる。
ということで正解は選択肢イの 8D である。
ストロープという単語を調べてみたけどよくわからなかった。。。
前後の問題はこちら。