e-DIY
基礎知識

シフトレジスタとは?わかりやすく解説

シフトレジスタ

シフトレジスタとは、入力されたデータがレジスタ(記憶装置)内をシフト(移動)していくように作られた回路です。

言葉だけでは分かりにくいので、図を使ってできるだけ分かりやすく説明していきます。

シフトレジスタの仕組みと原理

8bitのシフトレジスタの場合、8個のデータの入れ物があると考えます。
ここに01001010というデータを順番に入れていきます。

シフトレジスタの原理

データを入力するたびに前に入力したデータがシフトしてずれていきます。
こうして8bitのデータがレジスタ内に保存されます。

ちなみに、この状態で9個目のデータを入力すると、一番はじめに入力されたデータが消えます。
9個目に「1」を入力した場合、このようになります。

シフトレジスタの動作

シフトレジスタのタイムチャート

タイムチャートを使ってシフトレジスタの動きを説明していきます。

はじめにシフトレジスタICのブロック図を示します。

シフトレジスタICのブロック図

各端子の説明です。

  • SI:シリアルデータ入力
  • SCK:クロック。HIGHでレジスタにデータをセットする。
  • RCK:LOWで出力をラッチし、HIGHで出力を更新する。
  • QA~QH:パラレル出力

シフトレジスタにデータを入力し、出力するまでの流れをタイミングチャートで説明していきます。

シフトレジスタのタイムチャート

SIに入力するデータを01001010というシリアルデータとします。
最下位bit(一番右側の値)から順番に入力していきます。

データを入力後、SCKLOWからHIGHに切り替えます。
SCKの立ち上がりエッジでSIのデータがレジスタに保存されます。

SCKを再びLOWに切り替えてから次のbitのデータをSIに入力します。
先程と同様にSCKを切り替えてレジスタにデータを保存します。
この時、直前に保存されたデータは次のレジスタへシフトされて保存されます

この動きを繰り返して、SIに入力されたbit0~bit7の8つのデータをレジスタに保存します。

最後にRCKLOWからHIGHに切り替えることで、レジスタに保存した値が出力に反映されます。

シフトレジスタの用途

シフトレジスタはシリアルで入力されたデータをパラレルで出力することができます。
これをシリアル・パラレル変換(シリ・パラ変換)と言います。

つまり、シフトレジスタを使うことでマイコンなどのGPIOポートの使用数を節約することができるのです。
この図のように、8個のLEDをマイコンから直接駆動する場合はGPIOが8ポート使いますが、シフトレジスタを使えば3ポートで済みます。

シフトレジスタを使わない場合

シフトレジスタを使わない場合はGPIOを8ポート使用

シフトレジスタの用途

シフトレジスタを使うとマイコンのGPIOは3ポートのみ

次回はシフトレジスタIC:74HC595を使って7セグLEDを制御する方法をご紹介します。

関連キーワード

フリーワード検索