シフトレジスタ (シフトレジスタ) とは | 意味や読み方など丁寧でわかりやすい用語解説
シフトレジスタ (シフトレジスタ) の読み方
日本語表記
シフトレジスタ (シフトレジスタ)
英語表記
shift register (シフトレジスタ)
シフトレジスタ (シフトレジスタ) の意味や用語解説
シフトレジスタは、デジタル回路における基本的な記憶素子の一つであり、複数のフリップフロップが直列に接続されて構成される論理回路である。フリップフロップは1ビットの情報を記憶できる最小単位の記憶素子であり、シフトレジスタはこのフリップフロップ群に記憶されたデータを、クロックと呼ばれる同期信号のタイミングに合わせてビット単位で左右いずれかの方向に移動させる(シフトさせる)機能を持つ。このデータのシフト機能により、シリアルデータとパラレルデータの相互変換、データの一時記憶、データ遅延、特定のパターン生成など、多岐にわたる用途に利用される。マイクロプロセッサの内部、通信インターフェース、ディスプレイ制御など、現代の多くの電子機器で不可欠な構成要素として機能している。 シフトレジスタの基本的な動作原理は、各フリップフロップが直列に接続され、共通のクロック信号によって同期される点にある。クロック信号の立ち上がり、あるいは立ち下がりのタイミングで、各フリップフロップに保持されているデータは、一つ隣のフリップフロップへと一斉に移動する。例えば、右方向へシフトする設定の場合、一番左のフリップフロップには外部からの新しいデータが入力され、そのデータが次のクロックで右隣のフリップフロップへと移る。同時に、その右隣のフリップフロップに保持されていたデータはさらにその右隣へと移り、最終的に一番右のフリップフロップのデータが外部へと出力される。Nビットのシフトレジスタであれば、N個のフリップフロップが接続されており、N回のクロックパルスによって、入力されたデータはレジスタ内を順次移動し、最終的にN番目のフリップフロップから出力される仕組みである。このデータの移動(シフト)機能によって、データの順序を操作したり、特定のタイミングでデータを取り出したりすることが可能となる。 シフトレジスタはデータの入出力形式によっていくつかの種類に分類される。主なものとしては、シリアル入力・シリアル出力(SISO)、シリアル入力・パラレル出力(SIPO)、パラレル入力・シリアル出力(PISO)、パラレル入力・パラレル出力(PIPO)の四つがある。 SISOシフトレジスタは、データをシリアル(直列)に入力し、シリアルに出力する最も基本的なタイプである。主にデータの一時記憶や遅延回路として利用され、例えば8ビットのデータを入力するには8回のクロックパルスが必要であり、そのデータが出力されるまでにさらに8回のクロックパルスが必要となる。 SIPOシフトレジスタは、シリアルに入力されたデータをパラレル(並列)に出力する。例えば、8ビットのシフトレジスタであれば、8回のクロックパルスでシリアルにデータを入力した後、一度に8ビットのデータを並列で取り出すことができる。これは、シリアル通信で受信したデータを、CPUなどの並列データ処理装置が扱える形式に変換する際に不可欠な機能であり、RS-232CやSPIといった通信インターフェースの受信部に利用されることが多い。 PISOシフトレジスタは、パラレルに入力されたデータをシリアルに出力する。これは、複数のデータ線を一本のデータ線にまとめる、いわゆる多重化の役割を果たす。CPUが出力するパラレルデータをシリアル通信で送信する場合や、多数のLEDを少ない配線で制御する場合などに利用され、配線数を削減し、回路の複雑さを低減できる。例えば、8ビットのパラレルデータを1本の信号線で送信したい場合、PISOシフトレジスタに8ビットのデータを一括で入力した後、クロック信号に合わせて1ビットずつ順次出力することで実現する。 PIPOシフトレジスタは、パラレルに入力されたデータをパラレルに出力する。一般的なレジスタと似ているが、内部にシフト機能を持つ点が特徴である。データの同時記憶とシフト機能を併せ持つため、汎用性が高い。また、データが左右どちらの方向にもシフトできる双方向シフトレジスタもこの範疇に含まれることが多く、データ操作の柔軟性が高い。 これらのシフトレジスタは、様々なデジタルシステムに応用される。例えば、SPI(Serial Peripheral Interface)やI2C(Inter-Integrated Circuit)などのシリアル通信インターフェースでは、送信側でPISOシフトレジスタを使ってパラレルデータをシリアル化し、受信側でSIPOシフトレジスタを使ってシリアルデータをパラレルに戻すことで、効率的なデータ伝送を実現している。ディスプレイ制御においても、LEDドットマトリクスやセグメントディスプレイなどの多数の表示素子を制御する際に、PISOやSIPOシフトレジスタを用いることで、マイコンからの配線数を大幅に削減し、回路基板の小型化やコスト削減に貢献する。データ遅延回路としては、SISOタイプが入力データを特定クロック数だけ遅延させるために利用され、信号のタイミング調整やデジタルフィルタなどで応用される。さらに、シフトレジスタは線形帰還シフトレジスタ(LFSR: Linear Feedback Shift Register)として構成されることで、再現性のある擬似乱数を生成する回路としても利用される。これは暗号化、テストパターン生成、シミュレーションなどの分野で重要な役割を果たす。 シフトレジスタを扱う上での注意点としては、データがフリップフロップを通過するごとに伝播遅延が発生する点が挙げられる。特に長大なシフトレジスタでは、この遅延がシステム全体の性能に影響を与える可能性があるため、設計時に考慮する必要がある。また、すべてのフリップフロップが単一のクロック信号に同期して動作するため、異なるクロックドメインを持つ回路との連携には適切な同期処理が必要となる。回路規模の観点では、ビット数が増えるほどフリップフロップの数が増加し、回路の物理的なサイズや消費電力が増大するため、集積回路においては効率的な設計が求められる。PISOやSIPOのように複数の入出力を持つタイプでは、データのロード(並列入力)やラッチ(並列出力の保持)のための制御線が必要となり、インターフェースが複雑になる場合がある。