移位寄存器
概述
- 用途:移位寄存器是一种时序逻辑电路,用于存储二进制数据并在每个时钟脉冲时将其内容移动一位。它可以向左或向右移动数据,实现顺序数据操作和存储。
- 符号:移位寄存器由矩形方块表示,包含数据输入(串行和可选并行)、时钟、复位和模式控制输入,以及存储/移位数据的输出。
- DigiSim.io 角色:作为数字电路设计中串行和并行格式之间数据转换、数据存储和信号处理应用的基本组件。

功能描述
逻辑行为
移位寄存器通过在每个时钟脉冲时沿指定方向移动存储的位来存储和操作二进制数据。根据类型不同,它可以串行加载数据(一次一位)或并行加载(同时所有位),并以串行或并行格式输出数据。
典型操作模式:
| 模式控制 | 功能 | 描述 |
|---|---|---|
| 00 | 保持 | 保持当前状态 |
| 01 | 右移 | 位右移,新位从左侧进入 |
| 10 | 左移 | 位左移,新位从右侧进入 |
| 11 | 并行加载 | 同时加载所有位 |
真值表示例(4位通用移位寄存器):
| CLK | DIR | S/L | SI | D3 | D2 | D1 | D0 | Q3 (Next) | Q2 (Next) | Q1 (Next) | Q0 (Next) | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ↑ | X | 1 | X | d3 | d2 | d1 | d0 | d3 | d2 | d1 | d0 | 并行加载 |
| ↑ | 0 | 0 | si | X | X | X | X | si | Q3 | Q2 | Q1 | 右移 |
| ↑ | 1 | 0 | si | X | X | X | X | Q2 | Q1 | Q0 | si | 左移 |
| ↓ | X | X | X | X | X | X | X | Q3 | Q2 | Q1 | Q0 | 无变化 |
注:↑ 表示时钟上升沿,↓ 下降沿,X 无关,si 串行输入,dn 并行数据输入。Qn 为当前状态。
输入和输出
输入(共8个):
- SI(串行输入):1位串行数据输入。
- CLK(时钟):1位输入;操作在上升沿发生。
- DIR(方向):1位输入;当 S/L 为 0 时控制移位方向(0 = 右移,1 = 左移)。
- S/L(移位/加载):1位输入;模式控制(0 = 移位,1 = 并行加载)。
- D0、D1、D2、D3:四个1位并行数据输入,当 S/L 为 1 时同时加载数据。
输出(共5个):
- Q0、Q1、Q2、Q3:四个1位并行输出,表示寄存器当前存储的位。
- SO(串行输出):1位输出。行为取决于移位方向:
- 右移期间(DIR=0):SO 通常反映 Q0。
- 左移期间(DIR=1):SO 通常反映 Q3。
可配置参数
- 位宽:移位寄存器可存储的位数(通常为4、8、16等)。
- 移位方向:寄存器向左移、向右移或双向。
- 类型:寄存器的配置(SISO、SIPO、PISO、PIPO或通用型)。
- 时钟边沿灵敏度:寄存器响应上升沿还是下降沿。
- 传播延迟:触发事件后输出变化所需的时间。
DigiSim.io 中的视觉表示
移位寄存器显示为矩形方块,左侧标注输入(SI、D0-D3、CLK、DIR、S/L),右侧为输出(Q0-Q3、SO)。时钟输入通常用三角形符号标记,表示边沿灵敏。在电路中连接时,组件通过输出值和连接线的颜色变化直观显示其当前状态。
教育价值
核心概念
- 顺序数据处理:演示数据如何按顺序逐位处理。
- 串并转换:说明顺序和同时数据格式之间的转换。
- 时间存储:展示数字系统如何随时间存储和延迟数据。
- 时钟操作:强化对同步数字系统的理解。
- 数字通信:介绍数字数据传输的基本概念。
学习目标
- 理解顺序数据存储和操作的原理。
- 学习数字系统如何在串行和并行数据格式之间转换。
- 认识不同类型的移位寄存器及其应用。
- 将移位寄存器概念应用于解决数字电路中的数据处理问题。
- 理解移位寄存器在数字通信协议中的作用。
使用示例/场景
- 串行通信:在微处理器的并行数据和传输用串行数据之间转换。
- 延迟线:为信号处理应用创建精确的数字延迟。
- 数据缓冲:在处理之前临时存储数据位。
- 模式生成:为测试或显示目的创建重复的位模式。
- 数字滤波器:为信号处理实现有限脉冲响应(FIR)滤波器。
- 显示驱动:用有限的控制线控制LED/LCD矩阵显示器。
技术说明
- 移位寄存器通常使用D触发器实现,每个存储位一个触发器。
- 最大工作频率受触发器链中传播延迟的限制。
- 通用移位寄存器提供最大灵活性,但需要更多控制输入和内部逻辑。
- 线性反馈移位寄存器(LFSR)是用于伪随机数生成和CRC计算的特殊配置。
- 在 DigiSim.io 中,移位寄存器模拟典型的边沿触发行为,并提供清晰的移位操作视觉反馈。
- 多个移位寄存器可以级联以处理比单个组件更大的数据宽度。
移位寄存器类型
串入串出(SISO)
- 数据一次进入一位,一次输出一位
- 作为延迟线或数字存储元件
串入并出(SIPO)
- 数据串行进入但可并行访问
- 用于串行到并行转换
- 在通信接口(UART、SPI)中常见
并入串出(PISO)
- 数据并行加载但串行移出
- 用于并行到串行转换
- 在数据传输系统中必不可少
并入并出(PIPO)
- 数据并行进出
- 提供临时存储并可移位数据
- 用于系统间的数据缓冲
双向移位寄存器
- 可向左或向右移位数据
- 允许灵活的数据操作
通用移位寄存器
- 支持多种工作模式(以上所有)
- 通过控制输入配置
- 提供最大灵活性
操作模式
| 模式控制 (S/L, DIR) | 功能 | 描述 |
|---|---|---|
| 1, X | 并行加载 | Q[3:0] = D[3:0] |
| 0, 0 | 右移 | SI → Q3, Q3 → Q2, Q2 → Q1, Q1 → Q0 |
| 0, 1 | 左移 | Q2 → Q3, Q1 → Q2, Q0 → Q1, SI → Q0 |
真值表(4位通用移位寄存器)
| CLK | DIR | S/L | SI | D3 | D2 | D1 | D0 | Q3 (Next) | Q2 (Next) | Q1 (Next) | Q0 (Next) | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ↑ | X | 1 | X | d3 | d2 | d1 | d0 | d3 | d2 | d1 | d0 | 并行加载 |
| ↑ | 0 | 0 | si | X | X | X | X | si | Q3 | Q2 | Q1 | 右移 |
| ↑ | 1 | 0 | si | X | X | X | X | Q2 | Q1 | Q0 | si | 左移 |
| ↓ | X | X | X | X | X | X | X | Q3 | Q2 | Q1 | Q0 | 无变化 |
注:↑ 表示时钟上升沿,↓ 下降沿,X 无关,si 串行输入,dn 并行数据输入。Qn 为当前状态。
特性
- 位容量:通常为4、8或16位(可为任意长度)
- 移位方向:根据配置为左/右/双向
- 时钟要求:在时钟边沿上同步操作
- 时序:传播延迟限制最大移位频率
- 采样:在有效时钟边沿采样输入数据
- 复位行为:通常将所有位清零
- 预置选项:某些寄存器允许设置初始值
- 数据流控制:可能包含使能/禁用功能
- 功耗要求:与触发器数量和时钟频率成正比
应用
数据转换
- 串行到并行和并行到串行转换
- 串行总线和并行处理器之间的接口
数字通信
- UART、SPI、I2C接口
- 编码/解码操作
- 位帧和数据格式化
信号处理
- 数字滤波器(FIR滤波器)
- 数字信号处理的延迟线
- 相关和卷积运算
数据存储
- 临时缓冲存储
- 位模式生成和识别
计算系统
- CPU移位/旋转操作
- CRC生成和检查
- 伪随机序列生成
显示系统
- LED/LCD显示复用
- 滚动显示
- 显示面板数据分配
时序和控制
- 序列生成
- 事件时序和控制
实现
移位寄存器可以使用以下方式实现:
触发器链:
- D触发器(最常用)
- JK触发器
- 主从配置
集成电路:
- 74xx系列:
- 7491:8位SISO
- 74164:8位SIPO
- 74165:8位PISO
- 74194/74195:4位通用/4位并行访问
- 74299:8位通用
- 74xx系列:
基于存储器:
- FIFO存储器配置
- 环形缓冲器实现
- FPGA中的移位寄存器LUT
电路实现
基本4位串入串出移位寄存器:
### 串入串出(SISO)移位寄存器
```mermaid
graph LR
SIN[Serial In] --> FF0[D FF0]
CLK[Clock CLK] --> FF0
FF0 -->|Q0| FF1[D FF1]
CLK --> FF1
FF1 -->|Q1| FF2[D FF2]
CLK --> FF2
FF2 -->|Q2| FF3[D FF3]
CLK --> FF3
FF3 -->|Q3| SOUT[Serial Out]
相关组件
- 寄存器:通用数据存储
- 计数器:计数脉冲的时序电路
- 触发器:移位寄存器的基本构建模块(D、JK)
- 多路复用器:常用于通用移位寄存器设计
- 串行通信接口:UART、SPI、I2C
- 线性反馈移位寄存器:用于伪随机序列生成
- 桶形移位器:单周期多位移位
- FIFO/LIFO缓冲器:高级数据存储结构
- 数字滤波器:使用移位寄存器实现延迟线
- 序列检测器:模式识别电路