導入
エレクトロニクスおよびコンピューティングにおいて、シフト レジスタは、クロック ストロークごとにビットがシフトされる固定サイズのレジスタです (クロック同期システムの場合)。
シフト レジスタは通常、クロックと同期したフリップフロップのチェーンで構成され、1 つのフリップフロップの出力が次のフリップフロップの入力に接続されます。これにはいくつかのバリエーションがあります。
- SIPO (シリアル入力 – パラレル出力)
- SISO (シリアル入力 – シリアル出力)
- PISO (パラレルイン – シリアルアウト)
- PIPO (パラレルイン – パラレルアウト)
並列入力または出力により、複数のビットを同時に挿入および取得できます。 4 ビット情報 (例: 1001) の例を見てみましょう。
- パラレルとは、それぞれが 1ビットを返す 4 本のワイヤを指します。したがって、最初のワイヤは 2 番目のワイヤが “0” を返すと同時に “1” を返します。
- シリーズとは、「1」に続いて「0」、「0」、最後に「1」を送信する 1 つのワイヤを指します。したがって、シリアル システムでは配線の数は少なくなりますが、時間がかかります。
可逆シフトレジスタの存在も指摘しましょう。 「シフト方向」入力に適用される論理レベルに応じて、シフトが右または左に行われるレジスタの数。

応用例
- SISO: レジスタに導入したい情報は、最初のフリップフロップの入力に表示されます。クロック パルス中に、情報ビットがレジスタに入力され、他のすべてのビットがシフトされます。最後のフリップフロップに格納されたビットは、何らかの方法で構造に格納または再挿入されなかった場合、失われます。 SISO レジスタはデジタル遅延線の作成に使用されます。レジスタへの情報の入力とその出力の間の遅延は、フリップフロップの数とクロック周波数によって異なります。
- PIPO: 2 進数のすべてのビットを右または左にシフトすることで、数値を 2 で割るか、2 で乗算します。したがって、PIPO レジスタを使用して計算 (2 の累乗による乗算または除算) を実行できます。レジスタにビットを導入してからビットを取得するまでの間に、適切な数のシフトを左または右に行うだけです。
- PISO および SIPO: これら 2 種類のレジスタはシリアル リンクで使用されます。これらは UART とモデムの基礎を形成します。数メートルまたは数十メートル離れた 2 台のコンピューター間で情報を送信したいと考えてみましょう。情報を「並列」形式で送信するには、コンピュータ間の対話のための追加のワイヤを除いて、少なくとも 9 本のワイヤ (8 ビットに 8 本、グランドに 1 本) が必要になります。 PISO レジスタを使用して、送信したい各バイトを構成するビットを 1 つのラインに次々に現れる一連の 8 ビットで送信する方が簡単です。ラインの終端では、SIPO レジスタがキューに到着したビットを受け取り、宛先コンピュータに送信されるバイトを再構成します。

