- シフトレジスタとは:
- デジタルエレクトロニクスのレジスタの種類
- 1.シリアル入力-シリアル出力シフトレジスタ
- 2.シリアル入力–パラレル出力シフトレジスタ
- 3.パラレル入力–シリアル出力シフトレジスタ
- 4.パラレルイン–パラレルアウトシフトレジスタ
- 5.双方向シフトレジスタ
- 6.カウンター
- シフトレジスタのアプリケーション
シフトレジスタとは:
シフトレジスタは、データの保存と転送が可能なシーケンシャルロジック回路です。これらは、作成されるシフトレジスタのタイプに応じて、一方のフリップフロップの出力がもう一方のフリップフロップの入力として機能できるように接続されたフリップフロップで構成されています。
シフトレジスタは基本的に、データを転送(「シフト」)する機能を備えたレジスタの一種です。レジスタは一般に、特定の数のフリップフロップを直列に接続することによって作成されるストレージデバイスであり、レジスタによって格納できるデータの量(ビット数)は、各フリップフロップのように、常にフリップフロップの数に正比例します。フロップは一度に1ビットしか保存できません。 レジスタ内のフリップフロップが、一方のフリップフロップの出力がもう一方の入力になるように接続されると、シフトレジスタが作成されます。
フリップフロップは、ラッチと同様の動作をするデバイスです。これは、2つの状態(0または1)間を移動でき、データをビット単位で格納できる双安定バイブレーターと呼ばれます。新しいデータは各クロックサイクルでフリップフロップに読み込まれ、前のデータが出力で送信されます。
シフトレジスタはどのフリップフロップで構成されていますか?
ただし、フリップフロップ間の入力、出力、およびクロックサイクルの関係は異なるため、これはフリップフロップの種類によって異なります。フリップフロップにはさまざまな種類がありますが、シフトレジスタの作成で最も一般的に使用されるのはD(遅延)フリップフロップです。
シフトレジスタに非常に望ましいDフリップフロップの動作については、Dフリップフロップのクロックに変化があるときはいつでも(フリップフロップの仕様に応じて立ち上がりエッジまたは立ち下がりエッジのいずれか)。出力「Q」のデータは、入力「D」のデータと同じデータになります。フリップフロップの出力「Q」は、次のクロックサイクルまでその値に留まり、次のクロックサイクルで、入力で値(HighまたはLow、1または0)に再び変化します。
Siftレジスタが何であるかがわかったので、フリップフロップのタイプとそのアプリケーションについてさらに深く掘り下げていきます。しかしその前に、シフトレジスタが使用される場所をより実用的に説明するために、ディスプレイまたはLEDのシーケンスをインターフェイスするためにさまざまなマイクロコントローラで使用した人気のあるシフトレジスタ74HC595を見てみましょう。
- LEDのシーケンスを制御するためのArduinoを備えた74HC595のシフトレジスタ
- ESP32でレジスタをシフトして7セグメントディスプレイをインターフェースする
- 複数のLEDを制御するためのRaspberryPiのシフトレジスタ
- LEDのシーケンスを制御するためのPICとのシフトレジスタ
デジタルエレクトロニクスのレジスタの種類
シフトレジスタは、主にシリアルまたはパラレルの動作モードによってタイプに分類されます。
以下にリストされている6つの基本的なタイプのシフトレジスタがありますが、それらのいくつかは、右シフトまたは左シフトのいずれかのデータフローの方向に基づいてさらに分割することができます。
1.シリアル入力–シリアル出力シフトレジスタ(SISO)
2.シリアル入力–パラレル出力シフトレジスタ(SIPO)
3.パラレルイン–パラレルアウトシフトレジスタ(PIPO)
4.パラレル入力–シリアル出力シフトレジスタ(PISO)
5.双方向シフトレジスタ
6.カウンター
1.シリアル入力-シリアル出力シフトレジスタ
シリアル入力–シリアル出力シフトレジスタは、データをシリアルに(クロックサイクルごとに1ビット)ストリーミングし、同じ方法で次々にデータをストリーミングするシフトレジスタです。
単純なシリアル入力–シリアル出力4ビットシフトレジスタを上に示します。レジスタは4つのフリップフロップで構成され、その動作の内訳を以下に説明します。
起動時に、シフトレジスタが最初にクリアされ、すべてのフリップフロップの出力が強制的にゼロになり、入力データが一度に1ビットずつシリアルに入力に適用されます。
SISOシフトレジスタを介してデータをシフトアウトする基本的な方法は2つあります。
- 非破壊読み出し
- 破壊的な読み出し
- 非破壊読み出し
非破壊読み出しベースのシフトレジスタには、常に 読み取り/書き込み 動作モードがあり、読み取り動作モードと書き込み動作モードを切り替えることができるように追加の行が追加されています。
デバイスが「書き込み」動作モードの場合、シフトレジスタは各データを一度に1ビットずつシフトアウトし、破壊的な読み出しバージョンとまったく同じように動作するため、データは失われますが、動作モードが「読み取り」に切り替わると、データが失われます。入力でシフトアウトされたものはシステムに戻り、シフトレジスタへの入力として機能します。これにより、データがより長く留まるようになります(読み取りモードに留まっている限り)
- 破壊的な読み出し
破壊的な読み出しの場合、フリップフロップが情報をシフトするだけなので、データは完全に失われます。上記の4ビットシフトレジスタを想定して、ワード「1101」を送信します。シフトレジスタをクリアすると、すべてのフリップフロップの出力が0になるため、このデータ(1101)をシリアルに適用する最初のクロックサイクルでは、フリップフロップの出力は次の表のようになります。
最初のクロックサイクル:
FF0 |
FF1 |
FF2 |
FF3 |
1 |
0 |
0 |
0 |
2番目のクロックサイクル:
FF0 |
FF1 |
FF2 |
FF3 |
0 |
1 |
0 |
0 |
3番目のクロックサイクル:
FF0 |
FF1 |
FF2 |
FF3 |
1 |
0 |
1 |
0 |
4番目のクロックサイクル:
FF0 |
FF1 |
FF2 |
FF3 |
1 |
1 |
0 |
1 |
2.シリアル入力–パラレル出力シフトレジスタ
検討する2番目のタイプのシフトレジスタは、SIPOシフトレジスタとも呼ばれるシリアル入力–パラレル出力シフトレジスタです。これらのタイプのシフトレジスタは、データをシリアルからパラレルに変換するために使用されます。データはクロックサイクルごとに次々に送られ、シフトして置き換えるか、各出力で読み取ることができます。これは、データが読み込まれると、各読み込みビットがそれぞれの出力ラインで同時に使用可能になることを意味します(以下に示す4ビットシフトレジスタのQ0〜Q3)。
次の画像に、4ビットのシリアル入力–パラレル出力シフトレジスタを示します。
データがシリアル入力–パラレル出力の4ビットシフトレジスタからどのようにシフトアウトされるかを示す表を以下に示します。データ入力は1001です。
晴れ |
FF0 |
FF1 |
FF2 |
FF3 |
1001 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
|
0 |
1 |
0 |
0 |
|
0 |
0 |
1 |
0 |
|
1 |
0 |
0 |
1 |
シリアル入力-パラレル出力シフトレジスタの良い例は、8ビットシフトレジスタである74HC164シフトレジスタです。
このデバイスは、2つのシリアルデータ入力(DSAおよびDSB)、8つのパラレルデータ出力(Q0〜Q7)を備えています。データはDSAまたはDSBを介してシリアルに入力され、どちらの入力も、もう一方の入力を介したデータ入力のアクティブなHIGHイネーブルとして使用できます。データは、クロック(CP)入力のLOWからHIGHへの遷移でシフトされます。マスターリセット入力(MR)がLOWの場合、レジスタがクリアされ、他の入力とは関係なく、すべての出力が強制的にLOWになります。入力にはクランプダイオードが含まれます。これにより、電流制限抵抗を使用して、入力をVCCを超える電圧に接続できます。
3.パラレル入力–シリアル出力シフトレジスタ
パラレル入力-シリアル出力シフトレジスタでは、データは並列に供給されます。たとえば、以下に示す4ビットレジスタについて考えてみます。
このレジスタは、4ビットワードを格納およびシフトするために使用でき、書き込み/シフト(WS)制御入力がシフトレジスタの動作モードを制御します。WS制御ラインがロー(書き込みモード)の場合、データはD0からD3を介して書き込みおよびクロックインできます。データをシリアルにシフトアウトするには、WS制御ラインをHIGH(シフトモード)にし、レジスタはクロック入力でデータをシフトアウトします。シリアルのパラレルシフトレジスタは、PISOシフトレジスタとも呼ばれます。
パラレル入力–シリアル出力シフトレジスタの良い例は、74HC165 8ビットシフトレジスタですが、シリアル入力–シリアル出力シフトレジスタとして操作することもできます。
このデバイスは、シリアルデータ入力(DS)、8つのパラレルデータ入力(D0〜D7)、および2つの相補シリアル出力(Q7およびQ7 ')を備えています。パラレルロード入力(PL)がLOWの場合、D0からD7までのデータがシフトレジスタに非同期にロードされます。PLがHIGHの場合、データはDSでシリアルにレジスタに入ります。クロックイネーブル入力(CE)がLOWの場合、データはCP入力のLOWからHIGHへの遷移でシフトされます。CEをHIGHにすると、CP入力が無効になります。入力は15Vまでの過電圧耐性があります。これにより、デバイスをHIGHからLOWへのレベルシフトアプリケーションで使用できます。
シフトレジスタの機能図を以下に示します。
システムのタイミング図は下の画像のようになります。
4.パラレルイン–パラレルアウトシフトレジスタ
パラレル入力–パラレル出力シフトレジスタの場合、パラレル出力全体の出力データは、入力データが入力されると同時に表示されます。このタイプのシフトレジスタは、PIPOシフトレジスタとも呼ばれます。
D0〜D3の各入力ピンの入力データは、デバイスのクロック時に同時に読み込まれ、同時に、各入力から読み込まれたデータは、対応する出力(Q0から)に渡されます。 Q3へ)。
74HC195シフトレジスタは、多目的シフトレジスタであるシフトレジスタアウトパラレル-私たちは、特に並列として、これまで議論してきたすべてのタイプによって記載された形態のほとんどで作業が可能です。
5.双方向シフトレジスタ
シフトレジスタは、シフトレジスタの種類とその構成に応じて、右または左のデータシフト、あるいはその両方を実行できます。右シフト演算では、バイナリデータは2で除算されます。この操作を逆にすると、バイナリデータは2倍になります。組み合わせロジックを適切に適用することで、シリアルシフトレジスタを構成して両方の操作を実行できます。
下の画像の4ビットレジスタについて考えてみます。いくつかのNANDゲートはORゲートとして構成され、右または左のシフト方向を制御するために使用されます。
制御線の左/書き込みは、データが右または左にシフトされる方向を決定するために使用されます。
74HC194双方向シフトレジスタが良い例です。レジスタは、シリアルおよびパラレル入力または出力のすべてのモードとバリエーションで動作できます。制御ライン、クロック、入力および出力ピンを強調した74HC194の機能図を以下に示します。
デバイスのタイミング図も以下に示されています。これは、制御ラインがレジスタのアクションをどのように制御するかを理解するのに役立ちます。
6.カウンター
回転シフトレジスタと呼ばれることもあるカウンタは、基本的に、特定のパターンを作成するように出力が入力としてデバイスにフィードバックされるシフトレジスタです。これらの種類のレジスタは、それらが示すパターンとシーケンスのためにカウンタと呼ばれます。最も一般的なタイプのシフトレジスタカウンタは、リングカウンタです。
リングカウンター
リングカウンタは基本的に、最上位ビットの出力が最下位ビットへの入力としてフィードバックされるタイプのカウンタです。次の図に、Dフリップフロップを使用した4ビットのリングカウンタを示します。
クロックパルスが印加されると、各ステージの出力が次のステージにシフトされ、サイクルが継続します。clearをHighにすると、最初のフリップフロップ(1に設定されます)を除くすべてのフリップフロップがゼロにリセットされます。
シフトレジスタのアプリケーション
シフトレジスタは多くのアプリケーションで使用されており、その一部は次のとおりです。
1.パラレルからシリアルへの変換。シリアル通信では、送信されるビット数に依存するパラレルと比較して、通常2本のワイヤーしか必要としないため、2つのデバイス間の通信に必要なワイヤーまたはラインの数を減らすために使用されます。
2.マイクロコントローラーのIO拡張。現代の電子機器では、マイクロコントローラーのIOピンは不動産と呼ばれ、100個のLEDをオンにしたり、ArduinoやAtmeg328pマイクロコントローラーなどで100個のリードスイッチを読み取ったりするなど、特定のアプリケーションには可能な限り多くのことが必要です。たとえば、以下の回路図は、シリアルからパラレルへのシフトレジスタを使用して、マイクロコントローラのIOピンを3つだけ使用して8つのLEDを制御する方法を示しています。
3.シーケンシャルデバイスで使用される状態レジスタで使用されます。有限メモリマシンのように、デバイスの次の状態は常に、前の位置に新しいデータをシフトして挿入することによって決定されます。
4.もう1つの主要なアプリケーションは、時間遅延にあります。シフトレジスタは、デバイスの時間遅延に使用され、時間はクロックによって調整されるか、シフトレジスタをカスケードすることによって増加するか、下位の有効ビットから出力を取得することによって減少します。
時間遅延は通常、次の式を使用して計算されます。
t = N *(1 / fc)
Nは出力が取得されるフリップフロップステージの数、Fcはクロック信号の周波数、tは決定される値であり、出力が遅延する時間です。
範囲が広いために特定のタスクのシフトレジスタを選択するときは、動作モード、ビットサイズ(フリップフロップの数)、右または左、またはなどを考慮して、特定のニーズに一致するものを選択することが重要です。双方向など
最も人気のあるシフトレジスタのいくつかは次のとおりです。
- 74HC 1944ビット双方向ユニバーサルシフトレジスタ
- 74HC 198 8ビット双方向ユニバーサルシフトレジスタ
- 74HC595シリアル入力パラレル出力シフトレジスタ
- 74HC165Parallel-In-Serial-Outシフトレジスタ
- IC 74291 4ビットユニバーサルシフトレジスタ、バイナリアップ/ダウンカウンタ、同期。
- IC74395スリーステート出力を備えた4ビットユニバーサルシフトレジスタ。
- IC74498パラレル入力とスリーステート出力を備えた8ビット双方向シフトレジスタ。
- IC 746714ビット双方向シフトレジスタ。
- IC74673出力ストレージレジスタを備えた16ビットシリアル入力シリアル出力シフトレジスタ。
- IC74674スリーステート出力を備えた16ビットパラレル入力シリアル出力シフトレジスタ。
他にもいくつかありますが、アプリケーションに最適なものを見つける必要があります。
次回までお読みいただきありがとうございます。