「シフトレジスタ」の解説このページをスマートフォンなどでご覧になる場合は、画面を横長にする方が読みやすくなる事があります。register)とは、複数のDフリップフロップが縦続(カスケード)に接続された構造を持ち、各Dフリップフロップに共通のクロックパルスが入力されるたびに、記憶しているデータが次のDフリップフロップに移動する様に働く論理回路の事です。シフトレジスタは、シフト演算を行う回路だけではなく、遅延回路や、パラレル-シリアル変換回路、シリアル-パラレル変換回路などによく使われます。シフトレジスタは、広義のレジスタの一種です。1ページ広告1.典型的な4ビットシフトレジスタ図1に、典型的な4ビットシフトレジスタの回路図を示します。図1のシフトレジスタを、このページでは図2の回路記号で表す事にします。図2、図1のシフトレジスタの回路記号この回路の各信号線の名称と働きについて、表1にまとめました。シフトレジスタを駆動するクロック信号です。この信号線がLの時、D0~D3のパラレルバスの信号をシフトレジスタに取り込みます。Hの時は、SINのシリアルバスの信号を1ビット取り込みます。入力用の4ビットパラレルバスです。出力用の4ビットパラレルバスです。Q3はSOUTを兼ねています。パラレル出力時はQ3として働き、シリアル出力時はSOUTとして働きます。入力用のシリアルバスです。出力用のシリアルバスです。パラレル出力時はQ3として働き、シリアル出力時はSOUTとして働きます。図1のシフトレジスタの動作を理解するのに、知っておく必要がある回路要素として、Dフリップフロップとマルチプレクサについて説明します。2-1.Dフリップフロップ図3にDフリップフロップの回路記号を示します。図3、Dフリップフロップの回路記号Dフリップフロップには、3つの信号線がありますが、それぞれの名称と働きを表に2まとめました。注:DフリップフロップにはQを論理反転した出力(Q)を持ったものや、非同期に1(H)を書き込む(非同期セットする)ための端子(SあるいはSET)や非同期に0(L)を書き込む(非同期リセットする)ための端子(RまたはPRE)を持つものもありますが、ここでは一番簡単な3つの信号端子のDフリップフロップを扱います。この信号の立ち上がる瞬間のD端子への入力をDフリップフロップが記憶します。CLK信号が立ち上がる瞬間に、この信号をフリップフロップが取り込んで記憶します。Dフリップフロップが記憶している論理信号を出力します。Dフリップフロップというのは、簡単に言うと、1ビットの情報を記憶するメモリです。D端子に記憶させたい論理信号(HまたはL)を加えた状態で、CLK端子の電圧をLからHに立ち上げると、その瞬間にD端子の論理信号を記憶します。記憶した論理信号はQ端子から出力されます。CLK信号が一定周波数の信号の場合、Dフリップフロップにより入力信号の状態を一定時間(CLKの周期)ごとに読み出す事になります。この操作をサンプリングといいます。図4に、Dフリップフロップのタイミングチャートの例を示します。この図から、CLKの立ち上がり部分以外でのD信号の状態は、Dフリップフロップが無視する様子が分かります。図4、Dフリップフロップのタイミングチャートの例Uは不定(LかHか分からない状態)を表します。Dフリップフロップの電源投入時の状態は一般には不定で、初めて値をセットされるまで不定状態は続きます。次に、図5に示すように、2つのDフリップフロップを縦続に接続した場合を考えます。図5、2つのDフリップフロップを縦続に接続した回路この回路では、D端子に信号を加えると、一つ目のDフリップフロップであるFF1がDの信号をCLKの立ち上がりでサンプリングします。して得られたQ1信号を2つ目のフリップフロップであるFF2によりCLKの立ち上がりでサンプリングすると、得られるQ2信号は、Q1信号より1クロック遅れた信号になります。図5の回路のタイミングチャートの例を図6に示します。図6、図5の回路のタイミングチャートの例Uは不定(LかHか分からない状態)を表します。このタイミングチャートの赤い楕円で囲んだ部分を見ると、CLK信号がLからHに立ち上がると同時に、Q1信号がHからLに立ち下がっている様に見えます。これでは、CLKが立ち上がった瞬間のQ1信号の論理が決まらず、FF2の動作が不確定になりそうな気がします。図7に示す様に、赤い楕円で囲んだ部分を時間軸方向に拡大してみると、様子が変わってきます。図7、図6のタイミングチャートの赤い楕円で囲まれた部分を時間軸方向に拡大した図フリップフロップFF1は、CLK信号の立ち上がり時のD信号の論理を読み取り、それをQ1信号として出力しますが、実際にD信号を読み取ってから、Q1信号にそれが反映されるまでには、わずかですが伝搬遅延が発生します。その時間は、使うDフリップフロップによって変わりますが、高速CMOSデバイスを用いる場合はおおむね数nsです。そのため、CLK信号の立ち上がりの瞬間にD信号がLであるのを読み取ってから、数ns経過して、Q1信号がHからLに立ち下がります。この結果、CLK信号が立ち上がる瞬間のQ1信号はHとなります。そのため、CLK信号が立ち上がった後のQ2信号もHとなります。この様に、DフリップフロップのD信号として、CLK信号の立ち上がりに同期して変化する信号を入力した場合、D信号がCLK信号に対してわずかな時間遅れて変化するため、Dフリップフロップは、D信号の変化前の状態を読み取ります。注:この議論を厳密に行うためには、伝搬遅延時間、セットアップ時間、ホールド時間などについて説明する必要があるのですが、ここでは概念的な説明にとどめておきます。Dフリップフロップに関するさらに詳しい説明については、Dフリップフロップの項目をご覧ください。2-2.マルチプレクサ複数の入力端子があり、それらの内、制御信号により決められた信号を、1つの出力端子に出力する回路をマルチプレクサまたはセレクタといいます。このページでは、2入力端子が2つのマルチプレクサについて説明し、マルチプレクサの回路記号として図8の記号を使う事にします。各信号線の名称と働きについて表3にまとめました。