2022年04月23日 | 更新。 |
シフトレジスタ(shift register)とは、複数のDフリップフロップが縦続(カスケード)に接続された構造を持ち、各Dフリップフロップに共通のクロックパルスが入力されるたびに、記憶しているデータが次のDフリップフロップに移動する様に働く論理回路の事です。
シフトレジスタは、シフト演算を行う回路だけではなく、遅延回路や、パラレル-シリアル変換回路、シリアル-パラレル変換回路などによく使われます。
シフトレジスタは、広義のレジスタの一種です。
図1に、典型的な4ビットシフトレジスタの回路図を示します。
図1のシフトレジスタを、このページでは図2の回路記号で表す事にします。
この回路の各信号線の名称と働きについて、表1にまとめました。
名称 | 働き |
---|---|
CLK | シフトレジスタを駆動するクロック信号です。 |
SH/LD | この信号線がLの時、D0~D3のパラレルバスの信号をシフトレジスタに取り込みます。(パラレル入力) Hの時は、SINのシリアルバスの信号を1ビット取り込みます。(シリアル入力) |
D0~D3 | 入力用の4ビットパラレルバスです。 |
Q0~Q3 | 出力用の4ビットパラレルバスです。なお、Q3はSOUTを兼ねています。パラレル出力時はQ3として働き、シリアル出力時はSOUTとして働きます。 |
SIN | 入力用のシリアルバスです。 |
SOUT | 出力用のシリアルバスです。Q3と兼ねています。パラレル出力時はQ3として働き、シリアル出力時はSOUTとして働きます。 |
図1のシフトレジスタの動作を理解するのに、知っておく必要がある回路要素として、Dフリップフロップとマルチプレクサについて説明します。
図3にDフリップフロップの回路記号を示します。
Dフリップフロップには、3つの信号線がありますが、それぞれの名称と働きを表に2まとめました。
注:DフリップフロップにはQを論理反転した出力(Q)を持ったものや、非同期に1(H)を書き込む(非同期セットする)ための端子(SあるいはSET)や非同期に0(L)を書き込む(非同期リセットする)ための端子(RまたはPRE)を持つものもありますが、ここでは一番簡単な3つの信号端子のDフリップフロップを扱います。
名称 | 働き |
---|---|
CLK | クロック信号です。この信号の立ち上がる瞬間のD端子への入力をDフリップフロップが記憶します。 |
D | 入力信号です。CLK信号が立ち上がる瞬間に、この信号をフリップフロップが取り込んで記憶します。 |
Q | 出力信号です。Dフリップフロップが記憶している論理信号を出力します。 |
Dフリップフロップというのは、簡単に言うと、1ビットの情報を記憶するメモリです。D端子に記憶させたい論理信号(HまたはL)を加えた状態で、CLK端子の電圧をLからHに立ち上げると、その瞬間にD端子の論理信号を記憶します。記憶した論理信号はQ端子から出力されます。
CLK信号が一定周波数の信号の場合、Dフリップフロップにより入力信号の状態を一定時間(CLKの周期)ごとに読み出す事になります。この操作をサンプリングといいます。
図4に、Dフリップフロップのタイミングチャートの例を示します。この図から、CLKの立ち上がり部分以外でのD信号の状態は、Dフリップフロップが無視する様子が分かります。
次に、図5に示すように、2つのDフリップフロップを縦続に接続した場合を考えます。
この回路では、D端子に信号を加えると、一つ目のDフリップフロップであるFF1がDの信号をCLKの立ち上がりでサンプリングします。そうして得られたQ1信号を2つ目のフリップフロップであるFF2によりCLKの立ち上がりでサンプリングすると、得られるQ2信号は、Q1信号より1クロック遅れた信号になります。
図5の回路のタイミングチャートの例を図6に示します。
このタイミングチャートの赤い楕円で囲んだ部分を見ると、CLK信号がLからHに立ち上がると同時に、Q1信号がHからLに立ち下がっている様に見えます。これでは、CLKが立ち上がった瞬間のQ1信号の論理が決まらず、FF2の動作が不確定になりそうな気がします。
しかし、図7に示す様に、赤い楕円で囲んだ部分を時間軸方向に拡大してみると、様子が変わってきます。
フリップフロップ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フリップフロップの項目をご覧ください。
複数の入力端子があり、それらの内、制御信号により決められた信号を、1つの出力端子に出力する回路をマルチプレクサまたはセレクタといいます。
このページでは、2入力端子が2つのマルチプレクサについて説明し、マルチプレクサの回路記号として図8の記号を使う事にします。
各信号線の名称と働きについて表3にまとめました。
名称 | 働き |
---|---|
A | 入力信号です。 |
B | 入力信号です。 |
Y | 出力信号です。SがHの時はA端子に入力された信号を、SがLの時はB端子に入力された信号を出力します。 |
S | Yに出力する信号をAとBの2つの入力信号のどちらにするかを選択するための入力信号です。SがHの時はAが選択されます。SがLの時はBが選択されます。 |
この回路の動作のイメージは、図9の様なスイッチで説明できます。
この図が表しているのは、Y端子をA端子につなぐかB端子につなぐかを選択できるスイッチです。機械的なスイッチの場合、指でレバーなどを操作する必要があるのですが、マルチプレクサの場合、S信号をHにするかLにするかで、自動的にスイッチを切り替えてくれます。この様に考えると、2入力のマルチプレクサは、c接点のリレーに似ていますね。
注:マルチプレクサの働きを直感的に理解しやすい様に、機械的なスイッチやリレーに例えましたが、機械的なスイッチやリレーと、論理回路であるマルチプレクサでは、異なる点が色々あります。機械的なスイッチやリレーでは、AやBを出力端子にし、Yを入力端子にして信号の流れる方向を逆にもできますが、マルチプレクサではそれができません。また、リレーがスイッチを切り替えるには数msと長い時間がかかりますが、マルチプレクサなら数nsで切り替えられます。リレーの場合はコイルを駆動するために、S信号にたくさんの電流が流れますが、マルチプレクサの場合、消費電力がはるかに小さくなります。さらに一番大きな違いは、機械的なスイッチやリレーではアナログ信号を扱えますが、論理回路のマルチプレクサの場合、HとLの二値信号しか扱えません。(アナログマルチプレクサという半導体製品の場合は、アナログ信号の選択ができます)
マルチプレクサの意味が分かったところで、ANDやORなどの基本ゲートをどう組み合わせれば、マルチプレクサの機能を実現できるかを考えてみます。
結論から言えば、例えば図10の様な回路でマルチプレクサが実現できます。
この回路がマルチプレクサとして働くことを確認しておきましょう。まず、図11の様にS=Hの場合の動作を考えてみます。
ここで、AND回路やOR回路やNOT回路には次の様な性質がある事を確認しておきます。
図12に示す様に、AND回路の一方の入力端子にHを加えた場合は、もう一方の入力Xを直接出力するのと同じになります。
図13に示す様に、AND回路の一方の入力端子にLを加えた場合は、必ずLを出力します。
図14に示す様に、OR回路の一方の入力端子にLを加えた場合は、もう一方の入力Xを直接出力するのと同じになります。
図15に示す様に、NOT回路にLを入力した場合は、Hを出力します。
図16に示す様に、NOT回路にHを入力した場合は、Lを出力します。
図12~図14と図16の性質を使うと、図11の回路は図17の様に変形する事ができます。
この図から分かる様に、マルチプレクサのS端子にHを入力すると、Y端子にはA信号が出力されます。
同様に、図12~図15の性質を使うと、S端子にLを入力したマルチプレクサは、図18の様に変形できます。
この図から分かる様に、マルチプレクサのS端子にLを入力すると、Y端子にはB信号が出力されます。
以上の様に、図10の回路のS端子にHを加えると出力YにA信号が出力され、S端子にLを加えると出力YにB信号が出力される事が分かります。
図1の4ビットシフトレジスタには、マルチプレクサが4つ含まれています。ただし、4つのマルチプレクサで1つのNOT回路を共有しているため、少しわかりにくいかもしれません。NOT回路の共有をやめると、図1の回路は図19の様になります。
図19の回路図の中の4つのマルチプレクサを、図8の回路記号を使って書き直すと、図20の様になります。
かなり整理されて、回路図が見やすくなりました。図1の回路図はDフリップフロップと基本ゲートのみで書かれているのが利点ですが、シフトレジスタの動作を考えるには図20を使う方が分かりやすいです。
図20のシフトレジスタの動作を、シリアル入力時とパラレル入力時に分けて説明します。
図20のシフトレジスタのSH/LD端子にHを入力して、シリアル入力モードにした場合について考えます。
この時、4つのマルチプレクサはA端子の信号を出力しますから、マルチプレクサのB端子につながっているD0~D3の信号は、回路の動作に影響を与えなくなります。
SH/LD端子にHを入力した場合の、図20のシフトレジスタの等価回路を図21に示します。
シリアル入力時には、4つのフリップフロップが縦続に接続されている(前の段のフリップフロップの出力端子が後の段のフリップフロップの入力につながれている)事が分かります。この形式の回路が、シフトレジスタの最も基本的な形だといえます。
図21の回路のタイミングチャートの例を図22に示します。
CLK信号の立ち上がりでSIN信号を読み取り、Q0信号に出力します。Q1、Q2、Q3の各信号は順に、1クロックずつ遅れた信号を出力します。
図22のA、B、C、Dの各時点でのQ0~Q3の信号の状態を表にして、状態の変化の様子を説明したのが図23です。
1クロック時間が進むごとに、Q0~Q2の値1つ右にずれる様子が分かります。この様な動作をシフト動作といいます。シフト動作するのが、「シフトレジスタ」の語源になっています。
また、シフト動作を、シフトレジスタに記憶している数値への演算ととらえる場合、この演算をシフト演算といいます。
参考:シフトレジスタの「レジスタ」は、小容量の記憶素子を意味します。通常レジスタは、記憶したい情報のビット数と同じだけのDフリップフロップを使って構成されます。
図20にシフトレジスタのSH/LD端子にLを入力して、パラレル入力モードにした場合について考えます。
この時、4つのマルチプレクサはB端子の信号を出力しますから、一番左のマルチプレクサのA端子につながっているSIN信号は、回路の動作に影響を与えなくなります。
SH/LD端子にLを入力した場合の、図20のシフトレジスタの等価回路を図24に示します。
この回路図から、4つのDフリップフロップは、お互いに配線でつながっておらず、別々に動作する事が分かります。
図24の回路のタイミングチャートの例を図25に示します。
信号線が離れていて見にくいですが、Q0信号とD0信号を比較してください。CLK信号の立ち上がり時のQ0信号の値がD0信号に取り込まれています。例えば、左から2番目のCLK信号の立ち上がり時には、Q0信号はLなので、それ以降はD0信号もLになっています。(赤い矢印を参照)
同様に、CLK信号の立ち上がり時に、Q1信号を取り込んで、D1信号に出力します。(緑の矢印を参照) Q2信号は、CLK信号の立ち上がり時にD2信号に取り込まれます。(青い矢印参照) Q3信号は、CLK信号の立ち上がり時にD3信号に取り込まれます。(紫の矢印参照)
要するに、CLK信号の立ち上がり時にQ0~Q3の信号が4つのDフリップフロップに取り込まれて、D0~D3の信号に出力されるのです。この様な回路を(狭義の)レジスタといいます。図20のシフトレジスタは、SH/LD端子にLを入力している時は、シフト機能のない、パラレル入力パラレル出力の、単なるレジスタ(ストレージレジスタ)として働きます。
シフトレジスタの応用例を以下にいくつか示します。
この例では、SH/LD端子の入力をHに固定して、シリアル入力モードでシフトレジスタを使います。つまり、シリアル入力時の動作の項で説明した回路をそのまま使います。
図26の様に4ビットシフトレジスタのSH/LD端子をHに固定すると、等価回路は図21の様になります。また、この回路のタイミングチャートの例は、図22の様になります。
VDDは電源電圧です。SH/LD端子をVDDに接続して、Hを入力しています。
D0~D3の入力端子は使用しません。CMOS回路の場合、使用しない入力端子でも明示的にLまたはHの論理に確定しないといけないので、ここではGNDに接続してLを入力しています。別にD0~D3の入力端子にHを入力しても構いませんが、その場合はそれらの端子をVDDに接続してください。なおTTLの場合は、入力端子をオープンにすると、Hが入力されたものとして処理されます。
SIN信号はCLK信号の立ち上がりで左端のDフリップフロップに取り込まれるため、Q0信号は、SIN信号に対して、0~1クロックの範囲で遅延します。(SIN信号がCLK信号の立ち上がりに同期して出力される信号なら、ちょうど1クロックの遅延になります) また、Q1信号、Q2信号、Q3信号と進むにつれ、1クロックずつ遅延時間が増えます。この様に、シフトレジスタをシリアル入力モードで使用すると、必要なクロック数だけSIN信号から遅延した信号が得られます。Q3端子では3~4クロックの範囲で遅延が発生しますが、それより大きな遅延が必要な場合は、4ビットより多いビット数のシフトレジスタが必要になります。
なお、この項では図20の回路の機能を持った4ビットシフトレジスタのICがあるものとして、それを使って図26の回路で遅延回路を構成しましたが、Dフリップフロップを使って遅延回路を作る場合は、パラレル入力ポート(D0~D3)を持った図20のシフトレジスタを組んで、SH/LD信号をLにしてパラレル入力ポートをわざわざ無効にするよりは、直接図21の様な単純なシフトレジスタを組む方が、部品が少なくなり、合理的です。
例えばUARTの様な、外部とデジタル通信する回路を設計する場合、外部から来た信号にノイズが乗っている可能性がある事を考慮して設計する事が必要になります。(図27参照) 短時間のパルス性のノイズを除去するには、アナログ回路によるローパスフィルタとシュミットトリガ入力の論理素子を組み合わせるのが理想ですが、アナログフィルタは高価で実装面積が大きくなる傾向があります。(図28参照)
そのような場合、アナログのフィルタを使った回路よりは性能が劣るものの、論理回路だけである程度のノイズ対策ができます。その時に使われるのが、この項で説明するデジタル的なノイズフィルタ回路です。(図29参照)
ノイズフィルタ回路は、前項で説明した遅延回路を応用して作られます。簡単なノイズフィルタ回路の例を図30および図31に示します。
図30では、4ビットのシフトレジスタのD3とQ3の端子を使わない事で、実質3ビットのシフトレジスタとして使っています。そのため図31では、3ビットのシフトレジスタを3つのDフリップフロップで組んでいます。
3ビットシフトレジスタの出力信号Q0~Q2が3入力の多数決回路に入力されています。
3入力の多数決回路の回路図と真理値表を図32に示します。
この多数決回路は、3つの入力信号A、B、Cの中で、Lが2つ以上あれば出力信号YにLを出力します。逆に、3つの入力信号の中で、Hが2つ以上あればHを出力します。この様に、入力信号の中で過半数を占める真理値を選び出して出力するので、「多数決」回路と呼ばれます。
多数決回路の動作が分かったところで、図30(あるいは図31)の回路のタイミングチャートの例を見てみましょう。(図33参照)
IN信号としては、クロック(CLK信号)の周期よりもずっと長いタイミングで真理値が変化する遅い信号(周波数の低い信号)を想定しています。ただし、通信線路を伝わってくる間に、時間の短いパルス状のノイズが乗って、ところどころ論理が元の信号から反転しています。
図33のタイミングチャートでは、図中の時間範囲全体を見ると、IN信号はL→H→Lと緩やかに変化しています。ただし、前述のノイズのため、ところどころ論理が反転している部分があります。
3ビットのシフトレジスタにより、IN信号をクロックの立ち上がりでサンプリングして1段~3段遅延し、それぞれQ0~Q2の信号に取り出します。サンプリングにより、CLK信号の立ち上がりと次の立ち上がりの間に発生するパルス状のノイズは、消えてしまいます。(IN信号の中でピンク色に着色されている部分)
CLK信号の立ち上がりのタイミングでノイズにより信号の論理が反転している場合は、Q0~Q2の信号にもノイズが現れます。(Q0~Q2の信号で、薄緑に着色されている部分) その後、多数決回路によりQ0~Q2の3つの信号の中で、多い方の論理をMAJ信号に出力します。
今、IN信号の変化の周期は、CLK信号の周期よりもずっと長いと仮定しているので、IN信号は、同じ真理値が何クロックにもわたって続く性質があります。そのため、ほとんどの場合、Q0~Q2信号の真理値は一致しています。Q0~Q2信号の真理値が一致しないのは、IN信号の立ち上がりや立下りの時と、パルス状のノイズによりIN信号の論理が反転している時だけです。
パルス状のノイズが信号に乗っている倍を考えると、Q1~Q2の過去3つのサンプリング信号の中で1つだけ論理反転が起こっていても、MAJ信号の出力は反転しません。MAJ信号の論理を反転させるには、2サンプルがノイズにより論理反転する必要があります。
この様に、図30(あるいは図31)の回路は連続する3サンプルの内、2サンプル以上がノイズにより論理反転しないと、ノイズの影響が信号に出ないのです。
IN信号の立ち上がりや立下がりのタイミング近くにノイズが乗ると、MAJ信号にジッタ(時間的な揺らぎ)が発生しますが、同様の事は、アナログ方式のフィルタ回路を使っても発生します。
なお、MAJ信号を一度DフリップフロップでサンプリングしてからOUT信号として取り出していますが、ここにDフリップフロップを使うのは、OUT信号の波形にハザード)が発生するのを防ぐためです。OUT信号にハザードが発生しても問題がない用途には、最後のDフリップフロップは不要で、MAJ信号を直接OUT信号として使っても問題がありません。
UART、SPI、I2Cなどのシリアルインターフェースの受信回路に、シフトレジスタを使ったシリアル-パラレル変換回路が使われます。この場合は、SH/LD信号をHに固定して、IN端子に受信したシリアル信号を入力します。また、Q0~Q3のパラレル出力端子を使い、パラレル化した信号を、これらのパラレル出力端子から読み出します。
図34と図35に回路図を、図36にタイミングチャートの例を示します。
図36のタイミングチャートでは、CLK信号を4波だけ入力しています。そして、それら4波のCLK信号の立ち上がりに同期して、SIN端子にH、L、H、Hの順に、パラレル信号を入力しています。そうすると、CLK信号の4回目の立ち上がり以降では、Q3、Q2、Q1、Q0の4つの出力端子に、それぞれH、L、H、Hの信号が出力されます。つまり、SIN端子に入力した4ビットのシリアル信号が、Q0~Q3の出力端子に、パラレル信号として出力されるのです。パラレル信号に変換されると、マイコンのCPU等が、データバスに1度アクセスするだけで受信信号を読み取る事ができる様になります。
この様に、この回路はシリアル信号をパラレル信号に変換する機能がある事から、シリアル-パラレル変換回路と呼ばれます。
この項では、4ビットのシリアル-パラレル変換を行う回路を示しましたが、8ビットのシリアル-パラレル変換を行う場合は、Dフリップフロップを8個使った8ビットのシフトレジスタを使い、CLK信号を8波入力します。
参考:図35の様なシリアル-パラレル変換を行うシフトレジスタICとしては、74HC164がよく使われます。74HC164はシリアル入力、パラレル出力の、8ビットのシフトレジスタです。74HC164は、シフトレジスタのビット数が8ビットに増えている点と、シリアル入力端子の前にANDゲートを配置している点と、非同期クリア端子を備えている点で、図35のシリアル-パラレル変換回路のシフトレジスタよりは拡張されていますが、基本的な使い方はここで説明している方法と同じです。
前節で説明したシリアルパラレル変換回路を使えば、GPIOピンの少ないマイコンなどのICの出力ピンを拡張する事ができます。
例えば、図35のQ0~Q3の出力信号のそれぞれに、LED(と電流制限抵抗)を付けて、4つのLEDを制御する回路(図37)を考えます。
この回路を使えば、図38のタイミングチャートの様に、2本の信号線で4つのLEDを制御できるので、4つの信号線で4つのLEDの制御をする場合に比べて、信号線を2つ削減できます。
このタイミングチャートの例では、最初にLED0、LED1およびLED3を点灯させ、LED2を消灯させています。そのために、CLK信号の1~4波目でH、L、H、Hの順にシリアル信号をSIN端子に入力しています。(早く送った信号ほど番号の大きいLEDに届いている事に注意)
そしてしばらく経った後、次にLED0とLED2を点灯させ、LED1とLED3を消灯させています。そのために、CLK信号の5~8波目で、L、H、L、Hの順にシリアル信号をSIN端子に入力しています。
この回路は、おおむね意図通りに動作するのですが、SIN信号からシリアル信号を送っている間に、一時的に、LEDが意図しない点灯状態になるのが問題です。
ただし、意図通りの点灯状態になる直前に、一瞬LEDが点滅するとしても、その時間が十分短ければ、人間の目には留まりません。例えば1μsごとにクロックを送れば(クロック周波数1MHz)、たった4μsでシリアル信号の送信が終わります。その間、LEDが点滅しても、人間には全く知覚できません。
制御対象がLEDなら、図37の様にシフトレジスタにLEDを直結した回路でもあまり問題はないのですが、一瞬でも、出力が意図と違う状態になってはいけない回路を制御するには、もっと工夫が必要です。
この問題を解決するには、図39の回路の様に、シフトレジスタとLEDの間にストレージレジスタを挟むのが有効です。
この回路では、LED制御に必要な信号線が3本と、図37の回路より1本多くなるものの、図40のタイミングチャートに示す様に、LEDの表示が切り替わる際に、LEDが意図しない点灯状態になる事を防げます。
この回路では、SCLK信号の1~4波目にSIN信号でH、L、H、Hの順にシリアルデータを送ると、4波目の立ち上がりにQ0~Q3にパラレル変換されたデータが出力されるものの、そのままではLEDの点灯状態に反映されません。その後、RCLK信号を立ち上げた瞬間に、シフトレジスタが出力するパラレルデータがストレージレジスタに転送され、この時点でLEDが意図通りの点灯状態になります。
その後しばらくして、LEDの点灯状態を変えるために、SCLK信号の5~8波目にSIN信号で次のLEDの点灯パターンを、シリアル信号として送っていますが、実際にLEDに反映されるのは、RCLK信号を立ち上げた瞬間です。この時、LEDの点灯状態は、意図しない点灯状態を一時的にでも経ることなく、目的の点灯状態に変化します。
LEDの状態を最初に設定するまではLEDの状態が不定になるのは仕方ないとして、2度目以降の設定においては、図39の回路では意図しない点灯状態を経ることなく次の点灯状態に遷移させる事が可能になります。
図39の回路では3本の信号線で4個の4つのLEDを制御しているので、マイコンなどの出力ピンが1本しか減らないのですが、図41の様に制御するLEDの数を8つに増やしても、あるいはそれ以上の数に増やしても、やはり信号線は3本のままです。ただし、制御対象のLEDが増えると、点灯状態の変更の際に送るシリアル信号のビット数が増えるので、時間がかかってしまうという問題点はあります。この様に、図39や図41の回路は、出力信号の数が多く、かつ出力状態をそれほど頻繁に変更しない用途に使うと、マイコンのGPIOピンを劇的に節約できます。
図41の様に、ストレージレジスタを加える事で、出力信号が変化する際に、意図しない出力信号が一時的にでも出ない様にした構造の8ビットシフトレジスタICは、74HCシリーズの中では、74HC594、74HC595および74HC4094の3つが挙げられます。これらのICは、いずれも機能もよく似ていますが、入手が容易な事から74HC595が最もよく使われている様です。
UART、SPI、I2Cなどのシリアルインターフェースの送信回路にも、シフトレジスタを使ったパラレル-シリアル変換回路が使われます。この場合は、D0~D3のパラレル入力端子に送信したい信号を入力し、SOUT端子からその信号をシリアルで取り出します。SINおよびQ0~Q2の端子は使用しません。
図42と図43に回路図を、図44にタイミングチャートの例を示します。
CLK信号には4波の信号が入力されています。
CLK信号の1度目の立ち上がりのタイミングでは、SH/LD信号がLになっており、D0~D3のパラレル入力端子に入力された、送信したいパラレルデータが、4つのDフリップフロップにそれぞれ取り込まれます。この時点で、シリアル出力端子SOUTには、D3端子に入力した信号が出力されます。
CLK信号の2度目~4度目の立ち上がりのタイミングでは、SH/LD信号がHになっており、レジスタがシフト動作します。このシフト動作により、D2、D1、D0の各端子に1クロック目で入力した信号が、SOUT端子に順に出力されます。
この様に、この回路にはパラレル信号をシリアル信号に変換する機能がある事から、パラレル-シリアル変換回路と呼ばれます。
74HCシリーズの汎用ロジックICの中にも、シフトレジスタの機能を持ったものがいくつかあります。それらのシフトレジスタICの型番と、主な機能を表4にまとめます。
型番 | ビット数 | シリアル入力・パラレル入力 | ストレージレジスタの有無 | 備考 | 製品紹介ページ |
---|---|---|---|---|---|
ピン数 | シリアル出力・パラレル出力 | シフト方向 | |||
74HC164 | 8ビット | シリアル入力 | なし | 8ビット、シリアル入力・パラレル出力シフトレジスタ | SN74HC164 |
14ピン | パラレル出力 | 単方向 | |||
74HC165 | 8ビット | シリアル入力、パラレル入力(非同期ロード) | なし | 8ビット、パラレル入力・シリアル出力シフトレジスタ | SN74HC165 |
16ピン | シリアル出力 | 単方向 | |||
74HC166 | 8ビット | シリアル入力、パラレル入力(同期ロード) | なし | 8ビット、パラレル入力・シリアル出力シフトレジスタ | SN74HC166 |
16ピン | シリアル出力(正論理・負論理) | 単方向 | |||
74HC194 | 4ビット | シリアル入力(MSB・LSB)、パラレル入力(同期ロード) | なし | 4ビット、双方向多目的シフトレジスタ | CD74HC194 |
16ピン | パラレル出力 | 双方向 | |||
74HC195 | 4ビット | シリアル入力(J・K)、パラレル入力(同期ロード) | なし | 4ビット、パラレルアクセスシフトレジスタ | CD74HC195 |
16ピン | パラレル出力 | 単方向 | |||
74HC299 | 8ビット | シリアル入力(MSB・LSB)、パラレル入力(同期ロード) | なし | 8ビット、多目的シフトレジスタ、3ステート出力 | CD74HC299 |
20ピン | パラレル出力(3ステート)、シリアル出力(MSB・LSB) | 双方向 | |||
74HC589 | 8ビット | シリアル入力、パラレル入力(ストレージレジスタ付き) | あり | 8ビット、ストレージレジスタ付きパラレル入力・シリアル出力シフトレジスタ、3ステート出力 | MC74HC589A |
16ピン | シリアル出力(3ステート) | 単方向 | |||
74HC594 | 8ビット | シリアル入力 | あり | 8ビット、シリアル入力・ストレージレジスタ付きパラレル出力シフトレジスタ | SN74HC594 |
16ピン | パラレル出力(ストレージレジスタ付き)、シリアル出力 | 単方向 | |||
74HC595 | 8ビット | シリアル入力 | あり | 8ビット、シリアル入力・ストレージレジスタ付きパラレル出力シフトレジスタ、3ステート出力 | SN74HC595 |
16ピン | パラレル出力(ストレージレジスタ付き、3ステート)、シリアル出力 | 単方向 | |||
74HC597 | 8ビット | シリアル入力、パラレル入力(ストレージレジスタ付き) | あり | 8ビット、ストレージレジスタ付きシリアル入力・パラレル出力シフトレジスタ | CD74HC597 |
16ピン | シリアル出力 | 単方向 | |||
74HC4015 | 4ビット、2回路 | シリアル入力(各回路1本) | なし | 4ビット、2回路入りシフトレジスタ | CD74HC4015 |
16ピン | パラレル出力(各回路4ビット) | 単方向 | |||
74HC4094 | 8ビット | シリアル入力 | あり | 8ビット、シリアル入力・ストレージレジスタ付きパラレル出力シフトレジスタ、3ステート出力 | CD74HC4094 |
16ピン | パラレル出力(ストレージレジスタ付き、3ステート)、シリアル出力(遅延のない信号と半クロック遅れた信号) | 単方向 |