シフトレジスタとは?わかりやすく解説
![シフトレジスタ](https://ediy-fan.com/wp-content/uploads/2022/05/shift_register07.jpg)
シフトレジスタとは、入力されたデータがレジスタ(記憶装置)内をシフト(移動)していくように作られた回路です。
言葉だけでは分かりにくいので、図を使ってできるだけ分かりやすく説明していきます。
シフトレジスタの仕組みと原理
8bitのシフトレジスタの場合、8個のデータの入れ物があると考えます。
ここに01001010というデータを順番に入れていきます。
![シフトレジスタの原理](https://ediy-fan.com/wp-content/uploads/2022/05/shift_register01.jpg)
データを入力するたびに前に入力したデータがシフトしてずれていきます。
こうして8bitのデータがレジスタ内に保存されます。
ちなみに、この状態で9個目のデータを入力すると、一番はじめに入力されたデータが消えます。
9個目に「1」を入力した場合、このようになります。
![シフトレジスタの動作](https://ediy-fan.com/wp-content/uploads/2022/05/shift_register02.jpg)
シフトレジスタのタイムチャート
タイムチャートを使ってシフトレジスタの動きを説明していきます。
はじめにシフトレジスタICのブロック図を示します。
![シフトレジスタICのブロック図](https://ediy-fan.com/wp-content/uploads/2022/05/shift_register03.jpg)
各端子の説明です。
- SI:シリアルデータ入力
- SCK:クロック。HIGHでレジスタにデータをセットする。
- RCK:LOWで出力をラッチし、HIGHで出力を更新する。
- QA~QH:パラレル出力
シフトレジスタにデータを入力し、出力するまでの流れをタイミングチャートで説明していきます。
![シフトレジスタのタイムチャート](https://ediy-fan.com/wp-content/uploads/2022/05/shift_register04.jpg)
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ポートで済みます。
![シフトレジスタを使わない場合](https://ediy-fan.com/wp-content/uploads/2022/05/shift_register05.jpg)
シフトレジスタを使わない場合はGPIOを8ポート使用
![シフトレジスタの用途](https://ediy-fan.com/wp-content/uploads/2022/05/shift_register06.jpg)
シフトレジスタを使うとマイコンのGPIOは3ポートのみ
次回はシフトレジスタIC:74HC595を使って7セグLEDを制御する方法をご紹介します。