シフトレジスタとは?わかりやすく解説
シフトレジスタとは、入力されたデータがレジスタ(記憶装置)内をシフト(移動)していくように作られた回路です。
言葉だけでは分かりにくいので、図を使ってできるだけ分かりやすく説明していきます。
シフトレジスタの仕組みと原理
8bitのシフトレジスタの場合、8個のデータの入れ物があると考えます。
ここに01001010というデータを順番に入れていきます。
データを入力するたびに前に入力したデータがシフトしてずれていきます。
こうして8bitのデータがレジスタ内に保存されます。
ちなみに、この状態で9個目のデータを入力すると、一番はじめに入力されたデータが消えます。
9個目に「1」を入力した場合、このようになります。
シフトレジスタのタイムチャート
タイムチャートを使ってシフトレジスタの動きを説明していきます。
はじめにシフトレジスタICのブロック図を示します。
各端子の説明です。
- SI:シリアルデータ入力
- SCK:クロック。HIGHでレジスタにデータをセットする。
- RCK:LOWで出力をラッチし、HIGHで出力を更新する。
- QA~QH:パラレル出力
シフトレジスタにデータを入力し、出力するまでの流れをタイミングチャートで説明していきます。
SIに入力するデータを01001010というシリアルデータとします。
最下位bit(一番右側の値)から順番に入力していきます。
データを入力後、SCKをLOWからHIGHに切り替えます。
SCKの立ち上がりエッジでSIのデータがレジスタに保存されます。
SCKを再びLOWに切り替えてから次のbitのデータをSIに入力します。
先程と同様にSCKを切り替えてレジスタにデータを保存します。
この時、直前に保存されたデータは次のレジスタへシフトされて保存されます。
この動きを繰り返して、SIに入力されたbit0~bit7の8つのデータをレジスタに保存します。
最後にRCKをLOWからHIGHに切り替えることで、レジスタに保存した値が出力に反映されます。
シフトレジスタの用途
シフトレジスタはシリアルで入力されたデータをパラレルで出力することができます。
これをシリアル・パラレル変換(シリ・パラ変換)と言います。
つまり、シフトレジスタを使うことでマイコンなどのGPIOポートの使用数を節約することができるのです。
この図のように、8個のLEDをマイコンから直接駆動する場合はGPIOが8ポート使いますが、シフトレジスタを使えば3ポートで済みます。
シフトレジスタを使わない場合はGPIOを8ポート使用
シフトレジスタを使うとマイコンのGPIOは3ポートのみ
次回はシフトレジスタIC:74HC595を使って7セグLEDを制御する方法をご紹介します。