8ビットシフトレジスタ
概要
- 目的: 8ビットシフトレジスタは、8ビットのバイナリデータを格納し左右にシフトする順序デジタル回路で、シリアルからパラレルおよびパラレルからシリアルへのデータ変換、一時格納、ビット操作を可能にします。
- シンボル: 通常、シリアル入力(SI)、パラレルデータ入力(D0-D7)、制御入力(CLK、LOAD、SCLR)、パラレル出力(Q0-Q7)、シリアル出力(SO)を持つ矩形ブロックとして表されます。
- DigiSim.ioでの役割: データ伝送、通信インターフェース、およびデータのシフト、格納、シリアルとパラレル形式間の変換が必要な順序デジタル操作のための不可欠なビルディングブロックとして機能します。

機能説明
論理動作
8ビットシフトレジスタは3つの主要な操作を実行します: パラレルロード(8ビットの同時キャプチャ)、シリアルシフト(レジスタ内のビット移動)、出力(パラレルまたはシリアル形式での格納データへのアクセス提供)。動作はクロック、ロード、クリア信号で制御されます。
真理値表(8ビットユニバーサルシフトレジスタ):
| CLK | DIR | S/L | SI | D7..D0 | Q7..Q0 (Next) | 備考 |
|---|---|---|---|---|---|---|
| ↑ | X | 1 | X | d7..d0 | d7..d0 | パラレルロード |
| ↑ | 0 | 0 | si | X | si, Q7, Q6, Q5, Q4, Q3, Q2, Q1 | 右シフト |
| ↑ | 1 | 0 | si | X | Q6, Q5, Q4, Q3, Q2, Q1, Q0, si | 左シフト |
| ↓ | X | X | X | X | Q7..Q0 (変化なし) | 変化なし |
注: ↑は立ち上がりクロックエッジ、↓は立ち下がりエッジ、Xはドントケア、siはシリアル入力、d7..d0はパラレルデータ入力。Qnは現在の状態。
入力と出力
入力(合計12):
- SI(シリアル入力): シリアルデータ入力用の1ビット入力。
- CLK(クロック): 1ビット入力; 操作は立ち上がりエッジで発生。
- DIR(方向): 1ビット入力; S/Lが0のときシフト方向を制御(0 = 右、1 = 左)。
- S/L(シフト/ロード): 1ビット入力; モード制御(0 = シフト、1 = パラレルロード)。
- D0、D1、D2、D3、D4、D5、D6、D7: S/Lが1のときデータを同時にロードするための8つの1ビットパラレルデータ入力。
出力(合計9):
- Q0、Q1、Q2、Q3、Q4、Q5、Q6、Q7: レジスタの現在格納ビットを表す8つの1ビットパラレル出力。
- SO(シリアル出力): 1ビット出力。動作はシフト方向に依存:
- 右シフト時(DIR=0): SOは通常Q0を反映。
- 左シフト時(DIR=1): SOは通常Q7を反映。
設定可能なパラメータ
- クロックエッジ: 操作が立ち上がりまたは立ち下がりクロックエッジでトリガーされるかどうか。
- シフト方向: 右シフト、左シフト、または双方向(一部の実装)。
- クリアタイプ: 同期(クロック式)または非同期クリア機能。
- 制御信号論理: 制御信号がアクティブHIGHかアクティブLOWか。
- シリアルI/O構成: レジスタのどちら側がシリアル入力および出力として機能するか。
- タイミングパラメータ: セットアップ時間、ホールド時間、伝搬遅延。
DigiSim.ioでの視覚的表現
8ビットシフトレジスタは、左側にデータ入力ピン(D0-D7およびSI)、下部に制御信号(CLK、DIR、S/L)、右側にデータ出力ピン(Q0-Q7およびSO)を持つ矩形ブロックとして表示されます。回路に接続すると、接続ワイヤの色の変化を通じて格納値とシフト操作を視覚的に示します。
教育的価値
主要概念
- 順序論理: デジタル回路で時間経過とともにデータを格納・操作する方法を実証します。
- データシフト: デジタルシステムにおけるビットの移動とローテーション操作を示します。
- 形式変換: データをシリアルとパラレル形式間で変換する方法を示します。
- クロック動作: 順序回路におけるタイミングと同期化の重要性を強調します。
- 一時格納: データバッファリングと段階的処理の概念を提示します。
- デジタル通信: シリアルおよびパラレルデータ伝送の基本概念を紹介します。
学習目標
- シフトレジスタがシリアルとパラレルデータ形式間でどのように変換するかを理解する。
- デジタルシステムにおけるクロックベースの順序操作について学ぶ。
- 通信インターフェースにおけるシフトレジスタの重要性を認識する。
- データ伝送システムの設計にシフトレジスタの概念を適用する。
- 制御信号とレジスタ操作の関係を理解する。
- 複数の動作モードを持つ順序回路の分析と設計スキルを開発する。
- シリアルデータ操作におけるタイミング関係を習得する。
使用例/シナリオ
- シリアル通信: シリアルプロトコルとパラレルデータバス間の変換のためのUART、SPI、またはI2Cインターフェース実装。
- LEDディスプレイ制御: ディスプレイデータをシリアルでシフトすることにより、少ない制御線で複数のLEDディスプレイを駆動。
- データ取得: シリアルセンサーデータをキャプチャし、処理用にパラレル形式に変換。
- デジタルフィルタ: デジタル信号処理アプリケーション用の遅延線の作成。
- キーボードスキャン: 単一のアクティブビットをシフトしてマトリクスキーボードをスキャン。
- パターン生成: テストまたは制御アプリケーション用の繰り返しビットパターンの作成。
- CRC計算: 通信システムにおけるエラーチェック用の多項式除算の実装。
- パラレルからシリアルへの変換: シリアル通信チャネルを通じたパラレルデータの伝送。
技術ノート
- 実装は通常、パラレルロード用の追加マルチプレクサを備えた、直列接続された8つのDフリップフロップを使用します。
- シフトレジスタは、1つのシリアル出力を別のシリアル入力に接続することでカスケード接続して、より長いビット長を作成できます。
- 重要なタイミングパラメータには、セットアップ時間(クロックエッジ前5-15ns)とホールド時間(クロックエッジ後0-5ns)が含まれます。
- 異なる構成には、SISO(シリアル入力、シリアル出力)、SIPO(シリアル入力、パラレル出力)、PISO(パラレル入力、シリアル出力)、ユニバーサル(パラレルロード付き双方向)があります。
- 一般的なIC実装には、74HC164(SIPO)、74HC165(PISO)、74HC595(出力ラッチ付きSIPO)があります。
- 最大シフト周波数はフリップフロップチェーンの伝搬遅延によって制限されます。
- DigiSim.ioでは、シフトレジスタシミュレーションが実際のシフトレジスタコンポーネントのタイミング依存性とビット移動操作を正確にモデル化します。
特性
入力構成:
- 8つのパラレルデータ入力(D0-D7)
- データシフト用のシリアル入力(SI)
- クロック入力(CLK) - 通常立ち上がりエッジトリガ
- レジスタリセット用の同期クリア入力(SCLR)
- パラレルデータロード用のパラレルロードイネーブル(LOAD)
- 双方向タイプではシフト方向制御を含む場合がある
- 標準デジタル論理レベルと互換
出力構成:
- 8つのパラレルデータ出力(Q0-Q7)
- シリアル出力(SO) - 右シフトレジスタでは通常Q0
- 各出力は対応するステージの現在状態を表す
- 標準デジタル負荷を駆動可能
- 一部の実装では相補出力を含む場合がある
- クロック遷移と同期して状態が変化
機能:
- 8ビットのバイナリデータを格納してシフト
- パラレルまたはシリアルでのデータロードが可能
- パラレルまたはシリアル形式でのデータアクセスを提供
- データを右に(双方向バリアントでは左にも)シフト
- シリアルとパラレルデータ形式間の変換
- シリアル入力/シリアル出力、シリアル入力/パラレル出力、パラレル入力/シリアル出力、パラレル入力/パラレル出力操作の実装
- より大きなビット幅にカスケード可能
伝搬遅延:
- クロックから出力 (tCO): 通常10-25ns
- セットアップ時間 (tS): クロックエッジ前5-15ns
- ホールド時間 (tH): クロックエッジ後0-5ns
- クリアから出力 (tCLR): 5-20ns
- 技術依存(TTL、CMOSなど)
- 高速シリアル操作にとって重要なパラメータ
- 同期設計では全ビットで一貫
ファンアウト:
- 通常10-20の標準負荷を駆動
- 出力負荷が伝搬遅延に影響
- 高ファンアウトアプリケーションではバッファリングが必要な場合がある
- シリアル出力は後続ステージの駆動用に設計されることが多い
消費電力:
- CMOS実装では静的電力が最小
- クロック周波数に伴い動的電力が増加
- シフト活動に比例した消費電力
- 複数ビット遷移中の電力スパイク
- クロックゲーティングによる電力管理
- 技術依存(CMOSが最低静的電力)
回路複雑度:
- 中程度の複雑度
- 8つのフリップフロップと制御論理が必要
- パラレルロード用の追加マルチプレクサ
- モード選択用の入力制御論理
- 追加機能(双方向など)により複雑度が増加
- 統合実装により外部コンポーネント数を削減
実装方法
Dフリップフロップチェーン
- 共通クロックを持つ8つのカスケードDフリップフロップ
- シリアル入力/シリアル出力の最もシンプルな実装
- 各フリップフロップの出力が次のフリップフロップの入力に接続
- パラレルロード機能のための追加マルチプレクサ
- 操作選択のためのモード制御論理
- シフトレジスタ動作の一般的な教育例
集積回路実装
- 専用8ビットシフトレジスタIC
- 例: 74HC164(シリアル入力/パラレル出力)、74HC165(パラレル入力/シリアル出力)、74HC595(出力ラッチ付きシリアル入力/パラレル出力)
- 各種機能: パラレルロード、トライステート出力など
- 異なる論理ファミリで利用可能(TTL、CMOSなど)
- コンポーネント数と基板面積の削減
- 明確に定義されたタイミング特性
ユニバーサルシフトレジスタ
- 左シフト、右シフト、パラレルロードに設定可能
- より複雑な制御論理と内部パスウェイ
- 異なる操作に対する最大の柔軟性
- 例: 74HC194、74HC299
- モード選択入力が操作を決定
- より複雑だが非常に汎用的
双方向シフトレジスタ
- データを左右にシフト可能
- 方向制御入力がシフト方向を選択
- 方向制御のための追加マルチプレクサ
- 算術演算(乗算、除算)で一般的
- ユニバーサルシフトレジスタで実装されることが多い
- 双方向機能により複雑度が増加
SIPO(シリアル入力/パラレル出力)構成
- データがシリアルで入力、パラレルで読み出し
- シリアルからパラレルへの変換に一般的
- シリアルデータストリームのキャプチャを可能にする
- シリアル通信インターフェースで使用
- この機能に特化する場合、ユニバーサル設計よりシンプル
- 典型例: 74HC164
PISO(パラレル入力/シリアル出力)構成
- データがパラレルで入力、シリアルで出力
- パラレルからシリアルへの変換を可能にする
- トランスミッタおよびシリアルインターフェースで使用
- パラレルロード機能が必要
- シリアルシフト用のクロック制御
- 典型例: 74HC165
FPGA/ASIC実装
- フリップフロップとマルチプレクサを使用して実装
- 高度に設定可能な設計オプション
- 特定の要件に最適化可能
- ターゲット技術の特殊機能を活用可能
- HDL記述から合成されることが多い
- カスタム機能を容易に追加可能
アプリケーション
シリアルからパラレルへの変換
- シリアル周辺機器とパラレルバスシステム間のインターフェース
- UART/USARTレシーバの実装
- SPIスレーブインターフェース
- I2Cスレーブレシーバ
- シリアルセンサーデータ取得
- シリアルデータデシリアライザ
パラレルからシリアルへの変換
- パラレルバスシステムとシリアル周辺機器間のインターフェース
- UART/USARTトランスミッタの実装
- SPIマスターインターフェース
- 伝送用データのシリアル化
- ディスプレイドライバインターフェース
- シリアルデータシリアライザ
データバッファリングと一時格納
- データパスのパイプラインレジスタ
- 入力データキャプチャと保持
- システム間のデータレート適応
- データストリームのマルチステージバッファ
- 処理用の一時格納
- バイト幅データバッファリング
デジタル信号処理
- デジタルフィルタ(FIR/IIR実装)
- 信号処理用遅延線
- 相関および畳み込み演算
- デジタル波形生成
- シリアルストリームのパターン検出
- シーケンス認識
算術演算
- バイナリ乗算と除算
- シリアル算術ユニット
- 多項式除算(CRC計算)
- ビット操作演算
- 特定アルゴリズムのハードウェアアクセラレータ
- リニアフィードバックシフトレジスタ実装
タイミングと制御
- シーケンス生成
- 固定シーケンスのステートマシン
- 時間遅延の実装
- パルスシーケンス制御
- パターン生成器
- 擬似乱数シーケンス生成器
データ通信
- フレーム同期
- プロトコルカプセル化
- データフォーマット
- ビットスタッフィングとデスタッフィング
- データパケット化
- エラー検出コード生成
制限事項
タイミング制約
- セットアップ時間とホールド時間の要件
- 最大クロック周波数の制限
- シリアルストリームのデータ遷移タイミングが重要
- カスケードシステムでのクロックスキュー感度
- 最大速度を制限する伝搬遅延
- 外部システムとの同期化問題
データ容量
- カスケードなしでは8ビットに制限
- より広いデータパスには複数のデバイスが必要
- カスケードにより伝搬時間が増加
- 実装後のデータ幅は固定
- 専用メモリよりも格納容量が少ない
- 小規模データアプリケーションでの制御論理のオーバーヘッド
動作制約
- 非ユニバーサルタイプではシフト方向が固定
- 外部格納なしではシフト中にデータが失われる
- モード制御のタイミング要件
- シフトされたデータへの逐次アクセス
- 内部ステージへの限定的なアクセス
- リセット/プリセット機能は実装によって異なる
消費電力
- 連続クロッキングにより消費電力が増加
- 高周波動作は動的電力を増加
- ビット遷移に比例するアクティブ電力
- 電力管理にはクロック制御が必要
- バッテリー駆動アプリケーションでは慎重な設計が必要
- 高速シフトは電力要件を増加
設計複雑度
- より大きなビット幅へのカスケードの複雑さ
- 制御信号の調整
- モード選択論理のオーバーヘッド
- クロック配信の考慮事項
- テストおよび検証の課題
- 非同期システムとの統合
回路実装の詳細
基本的な8ビットシリアル入力/パラレル出力シフトレジスタ
graph LR
SI[Serial In] --> FF0[D FF 0]
CLK[Clock] --> FF0
FF0 -->|Q0| OUT0[Q0]
FF0 --> FF1[D FF 1]
CLK --> FF1
FF1 -->|Q1| OUT1[Q1]
FF1 --> FF2[D FF 2]
CLK --> FF2
FF2 -->|Q2| OUT2[Q2]
FF2 --> FF7[D FF 7]
CLK --> FF7
FF7 -->|Q7| OUT7[Q7]
動作: 各クロックエッジでデータが右にシフトし、全フリップフロップでパラレル出力が利用可能です。
74HC595 出力ラッチ付き8ビットシリアル入力/パラレル出力シフトレジスタ
ピン構成:
| ピン | 信号 | 機能 |
|---|---|---|
| SER | シリアル入力 | データ入力 |
| SRCLK | シフトクロック | 立ち上がりエッジでデータをシフト |
| RCLK | レジスタクロック | シフトレジスタを出力にラッチ |
| /SRCLR | クリア | アクティブLOWクリア |
| /OE | 出力イネーブル | アクティブLOW出力イネーブル |
| QA-QH | 出力 | パラレルデータ出力 Q0-Q7 |
| QH' | シリアル出力 | カスケード出力 |
| VCC, GND | 電源 | +5Vおよびグラウンド |
機能:
- デュアルステージ: シフトレジスタ + 出力ラッチ
- カスケード: QH'により複数デバイスのチェーンが可能
- 出力制御: /OEによるトライステート出力
74HC165 8ビットパラレル入力/シリアル出力シフトレジスタ
ピン構成:
| ピン | 信号 | 機能 |
|---|---|---|
| A-H | データ入力 | パラレルデータ入力 D0-D7 |
| SER | シリアル入力 | カスケード/シリアルデータ入力 |
| CLK | クロック | シフトクロック入力 |
| CLK INH | クロック禁止 | HIGH時にクロック停止 |
| SH//LD | シフト/ロード | LOW=パラレルロード、HIGH=シフト |
| QH | シリアル出力 | シリアルデータ出力 |
| QH' | 反転出力 | 反転シリアル出力 |
| VCC, GND | 電源 | +5Vおよびグラウンド |
動作:
- ロードモード (SH//LD=LOW): パラレルデータがロードされる
- シフトモード (SH//LD=HIGH): データがシリアルでシフトアウト
CLK = クロック、CLK INH = クロック禁止、SH/LD = シフト/ロード、SER = シリアル入力、QH = シリアル出力、QH' = 相補シリアル出力
関連コンポーネント
- 4ビットシフトレジスタ: ニブルサイズ操作用の小型バージョン
- 16ビットシフトレジスタ: ワードサイズ操作用の拡張バージョン
- ユニバーサルシフトレジスタ: 複数のシフトモードを持つ柔軟なレジスタ
- 双方向シフトレジスタ: データを左右にシフト可能
- SIPO(シリアル入力/パラレル出力)レジスタ: シリアルからパラレルへの変換に特化
- PISO(パラレル入力/シリアル出力)レジスタ: パラレルからシリアルへの変換に特化
- SISO(シリアル入力/シリアル出力)レジスタ: シリアル入出力のシンプルなシフトレジスタ
- PIPO(パラレル入力/パラレル出力)レジスタ: シフト機能のない基本レジスタ
- ジョンソンカウンタ: シーケンス生成用の反転フィードバック付きシフトレジスタ
- リングカウンタ: シーケンス生成用の直接フィードバック付きシフトレジスタ