3856 字
19 分钟
ECE2050-Chapter8
2025-08-24

好的,这份中文自学讲义根据您提供的PPT内容编写,旨在帮助您全面理解“移位寄存器”这一章节。


ECE 2050 数字逻辑与系统 - 第八章:移位寄存器#

讲师:Yue ZHENG, Ph.D. 香港中文大学(深圳)


第一部分:章节回顾与基础知识#

在深入学习移位寄存器之前,我们首先回顾一下相关的基础概念,这些是理解本章内容的关键。

  • 状态 (State): 指的是一个逻辑电路在特定时间点的输出或内部存储单元的组合。
  • 锁存器 (Latch):
    • SR 锁存器: 基本的存储元件,可以设置 (Set) 或复位 (Reset)。
    • D 锁存器: SR锁存器的改进版,只有一个数据输入端D,避免了SR同时为1的无效状态。
  • 触发器 (Flip-Flop): 边沿触发的存储元件,只在时钟信号 (CLK) 的上升沿或下降沿改变状态。
    • D 触发器: 最常用的触发器,在时钟边沿将D输入端的状态传递到Q输出端。
    • J-K 触发器: 功能更全面的触发器,可以保持、置位、复位或翻转。
  • 寄存器 (Registers): 由一组触发器构成,可以存储一组二进制数据(一个二进制字)。
    • 使能触发器 (Enabled Flip-Flops): 带有使能端,只有在使能信号有效时,才响应时钟信号。
    • 可复位/置位触发器 (Resettable/Settable Flip-Flops): 带有异步的清零(复位)或置位端,可以强制输出为0或1,而无需等待时钟。

第二部分:移位寄存器的两大基本功能#

移位寄存器是一种特殊的寄存器,它不仅能存储数据,还能在时钟信号的控制下,将存储的数据逐位向左或向右移动。其核心功能有两个:数据存储数据移动

1. 数据存储 (Data Storage)

移位寄存器的基本单元是D触发器,因此它继承了D触发器的数据存储能力。

  • 存储逻辑 “1”: 当数据输入端 D 为高电平(逻辑1)时,在时钟 (CLK) 的触发边沿(通常是上升沿)到来后,输出端 Q 会变为1。如果Q已经是1,则保持不变。
  • 存储逻辑 “0”: 当数据输入端 D 为低电平(逻辑0)时,在时钟的触发边沿到来后,输出端 Q 会变为0。如果Q已经是0,则保持不变。

2. 数据移动 (Data Movement)

这是移位寄存器最核心的功能。数据可以在寄存器内部从一个触发器移动到下一个相邻的触发器。根据数据的输入和输出方式,数据移动可以分为多种类型:

  • (a) 串行输入/右移/串行输出 (Serial in/shift right/serial out): 数据逐位从左侧输入,在每个时钟脉冲下向右移动一位,并最终从最右侧逐位输出。
  • (b) 串行输入/左移/串行输出 (Serial in/shift left/serial out): 数据逐位从右侧输入,在每个时钟脉冲下向左移动一位,并最终从最左侧逐位输出。
  • (c) 并行输入/串行输出 (Parallel in/serial out): 数据一次性同时加载到所有触发器中,然后在时钟控制下逐位从一端移出。
  • (d) 串行输入/并行输出 (Serial in/parallel out): 数据逐位串行输入,但可以随时从所有触发器的输出端同时读取。
  • (e) 并行输入/并行输出 (Parallel in/parallel out): 数据一次性并行加载,并可以随时并行读取。这实际上就是一个基本的数据寄存器。
  • (f) 循环右移 (Rotate right): 最右侧一位的输出连接到最左侧一位的输入,数据在寄存器内循环向右移动。
  • (g) 循环左移 (Rotate left): 最左侧一位的输出连接到最右侧一位的输入,数据在寄存器内循环向左移动。

第三部分:移位寄存器的类型与工作原理#

1. 串行输入/串行输出 (SISO) 移位寄存器#
  • 结构: 由多个D触发器级联而成,前一个触发器的输出 (Q) 连接到后一个触发器的输入 (D)。所有触发器共享同一个时钟信号。

  • 工作原理:

    • 数据输入: 数据从第一个触发器 (FF0) 的D输入端串行输入。
    • 数据移位: 每当一个时钟脉冲的有效边沿到来时,每个触发器都会将它左边相邻触发器的当前状态锁存进来。这样,整个数据就在寄存器中向右移动了一位。
    • 数据输出: 数据从最后一个触发器 (FF3) 的Q输出端串行输出。
  • 示例分析:

    • 数据移入 (Table 8-1): 假设初始状态全为0,我们要移入4位数据 “1010”(注意:串行输入时,最低位先输入,即先输入0,再输入1,再输入0,最后输入1)。但从图表示例看,是先输入1,再输入0,再输入1,最后输入0。让我们以来看PPT中1010的例子(假设从左到右输入),初始全0,第一个时钟输入1,寄存器变为1000;第二个时钟输入0,寄存器变为0100;第三个时钟输入1,寄存器变为1010;第四个时钟输入0,寄存器变为0101
    • 数据移出 (Table 8-2): 假设寄存器中已存有数据 “1010”。在接下来的时钟脉冲下,如果没有新的数据输入(即输入端保持为0),那么数据将逐位向右移出。4个时钟脉冲后,寄存器中的数据将全部被移出,状态变回 “0000”。

时序图示例: 下图展示了将数据 “11010” 移入一个5位寄存器的过程。数据输入端在每个时钟周期前准备好要输入的数据位。在第5个时钟脉冲之后,寄存器中的内容为 Q₄Q₃Q₂Q₁Q₀ = 11010。

2. 串行输入/并行输出 (SIPO) 移位寄存器#
  • 结构: 与SISO类似,数据串行输入。但它的每一个触发器都有一个独立的输出端 (Q₀, Q₁, Q₂, Q₃),可以同时读取所有位的数据。
  • 应用: 核心应用是将串行数据转换为并行数据,这在串行通信(如USB、串口)中非常重要。

集成电路 (IC) 示例 - 74HC164: 这是一个8位的SIPO移位寄存器。它有两个串行输入端 A 和 B,这两个输入会先经过一个与门(AND gate),然后才进入第一个触发器。

  • CLR’ (Clear): 低电平有效。当它为低电平时,无论时钟和输入如何,所有输出都会被强制清零。
  • CLK (Clock): 上升沿触发。
3. 并行输入/串行输出 (PISO) 移位寄存器#
  • 结构: 具有并行数据输入端 (D₀-D₃) 和一个串行输出端。通过一个控制信号 SHIFT/LOAD 来选择工作模式。
  • 工作模式:
    • 加载模式 (LOAD): 当 SHIFT/LOAD 为低电平 (LOW) 时,控制逻辑门 G₁-G₄ 打开,G₅-G₇ 关闭。在下一个时钟脉冲的有效边沿,并行输入端 D₀-D₃ 上的数据会同时被加载到对应的触发器 FF₀-FF₃ 中。
    • 移位模式 (SHIFT): 当 SHIFT/LOAD 为高电平 (HIGH) 时,控制逻辑门 G₁-G₄ 关闭,G₅-G₇ 打开。这时,电路就变成了一个串行移位寄存器,数据在每个时钟脉冲下向右移动一位,并从 Q₃ 端串行输出。

时序图示例:

  1. 时钟脉冲1: SHIFT/LOAD 为低电平,并行数据 1010 被加载。Q₃ 输出为 D₃ 的值,即 0。
  2. 时钟脉冲2-4: SHIFT/LOAD 变为高电平,寄存器进入移位模式。数据逐位右移并从 Q₃ 输出。
  3. 时钟脉冲5后: 原始数据已全部移出。
4. 并行输入/并行输出 (PIPO) 寄存器#
  • 结构: 具有并行的输入和输出。它主要用于数据存储和缓冲,是结构最简单的寄存器之一。所有数据在同一个时钟脉冲下同时加载,并同时出现在输出端。

IC 示例 - SN54HC195 (4位并行访问移位寄存器): 这是一个功能更复杂的寄存器,它同时支持串行和并行加载。

  • SH/LD (Shift/Load): 控制移位和加载。
  • J, K: 串行输入端。
  • CLR (Clear): 清零端。
  • D₀-D₃: 并行数据输入。
  • Q₀-Q₃: 并行数据输出。
5. 双向移位寄存器 (Bidirectional Shift Registers)#
  • 功能: 可以根据控制信号来决定数据是向左移还是向右移。
  • 结构: 通过一组逻辑门来控制每个触发器的D输入源。
  • 控制信号 RIGHT/LEFT:
    • 高电平 (HIGH): 数据向右移。此时,每个触发器的D输入连接到其左侧触发器的Q输出。
    • 低电平 (LOW): 数据向左移。此时,每个触发器的D输入连接到其右侧触发器的Q输出。

IC 示例 - 4位双向通用移位寄存器 (74LS194): 这是一个非常强大的“通用”移位寄存器,通过模式控制输入 S₀ 和 S₁ 可以实现多种功能:

  • S₁S₀ = 11: 并行加载
  • S₁S₀ = 01: 右移
  • S₁S₀ = 10: 左移
  • S₁S₀ = 00: 保持(禁止)

第四部分:移位寄存器的应用#

1. 时间延迟 (Time Delay)#

利用SISO移位寄存器,可以精确地延迟一个数字信号。

  • 原理: 一个信号进入寄存器后,需要经过 n 个时钟周期才能从输出端出来,其中 n 是寄存器的级数(触发器的数量)。
  • 延迟时间: T_delay = n * T_clk = n / f_clk
    • n: 寄存器的级数
    • f_clk: 时钟频率

示例: 一个8级(n=8)的移位寄存器,时钟频率为500 kHz。

  • 从Q₀输出的延迟为 1 * (1/500kHz) = 2 µs。
  • 从Q₇输出的延迟为 8 * (1/500kHz) = 16 µs。
2. 串行/并行数据转换 (S/P Data Converter)#

这是移位寄存器最常见的应用之一,用于连接串行通信设备和并行总线系统。

  • 原理: 使用一个SIPO寄存器接收串行数据。当接收完一个字节或一个字的数据后(例如8位),通过一个控制信号,将SIPO寄存器中的8位数据一次性加载到一个并行的输出寄存器中。
  • 应用: 计算机的USB接口、串口(RS-232)等都依赖于串并转换。键盘、鼠标、扫描仪等设备通过USB(通用串行总线)将数据串行发送给计算机,计算机内部再将其转换为并行数据供CPU处理。
3. UART (通用异步收发器)#

UART是一种专门用于处理串行数据通信的接口设备。其内部核心就是移位寄存器。

  • 发送部分: 使用一个PISO移位寄存器。微处理器将要发送的数据(并行)写入发送数据寄存器,然后UART将其加载到PISO寄存器中,并逐位(串行)发送出去。
  • 接收部分: 使用一个SIPO移位寄存器。UART接收外部设备发来的串行数据,存入SIPO寄存器,当接收满一个字节后,再将其并行地提供给微处理器。
4. 键盘编码器 (Keyboard Encoder)#
  • 扫描原理: 键盘内部是一个按键矩阵。编码器通过一个移位寄存器(通常配置成环形计数器)来轮流扫描矩阵的每一行。
  • 工作过程:
    1. 初始化: 一个”0”被加载到环形计数器中(例如,11111110),其他位为”1”。
    2. 扫描: 在时钟驱动下,“0”在计数器中循环移动,从而依次选中(拉低)键盘矩阵的每一行。
    3. 按键检测: 如果有按键被按下,当该按键所在的行被扫描(变为低电平)时,与之相连的列线也会被拉低。
    4. 编码: 检测到低电平的列线地址(列码)和当前正在扫描的行地址(行码)组合在一起,就形成了该按键的唯一编码。

第五部分:移位寄存器计数器#

通过特定的反馈连接,移位寄存器可以构成计数器。

1. 约翰逊计数器 (Johnson Counter)#
  • 结构: 将最后一个触发器的反向输出 (Q’) 连接回第一个触发器的输入 (D)。
  • 特性:
    • 这是一个“扭环”计数器。
    • 对于一个 n 级的约翰逊计数器,它有 2n 个不同的状态。例如,一个4位的约翰逊计数器有 2 * 4 = 8 个状态。
    • 它的状态序列不是简单的二进制计数。从全0开始,它会先逐位填入1,直到全1,然后再逐位填入0,直到返回全0。
2. 环形计数器 (Ring Counter)#
  • 结构: 将最后一个触发器的同向输出 (Q) 连接回第一个触发器的输入 (D)。
  • 特性:
    • 通常需要一个预置脉冲(PRESET)来初始化,使其中一个触发器为1,其余为0。
    • 在时钟的驱动下,这个唯一的 “1” 会在寄存器中循环移动,就像一个光标。
    • 对于一个 n 级的环形计数器,它有 n 个不同的状态。
    • 它非常适合用于需要顺序激活多个设备或步骤的应用中(如键盘扫描)。

第六部分:章节自测(判断题)#

请判断以下说法的正误,以检验你的学习效果。

  1. 移位寄存器由一组触发器排列而成。

    • 正确。这是移位寄存器的基本构成。
  2. 移位寄存器不能用来存储数据。

    • 错误。数据存储是移位寄存器的两大基本功能之一。
  3. 串行移位寄存器在一条线上一次只接收一位数据。

    • 正确。这就是“串行”的定义。
  4. 所有的移位寄存器都由特定的序列定义。

    • 错误。像SISO、SIPO等通用寄存器可以移位任何数据,而约翰逊计数器和环形计数器才具有特定的状态序列。
  5. 移位寄存器计数器是将串行输出连接回串行输入的移位寄存器。

    • 正确。这种反馈连接是构成计数器的关键。
  6. 一个有四个阶段(级)的移位寄存器最多可以存储十五个计数。

    • 错误。一个4级的寄存器可以存储一个4位二进制数(0-15),但它本身只能存储一个数。如果作为计数器,4位二进制计数器可以有16个状态(0-15)。而4位环形计数器只有4个状态,4位约翰逊计数器有8个状态。
  7. 约翰逊计数器是一种特殊类型的移位寄存器。

    • 正确。它是在移位寄存器基础上通过特定反馈构成的。
  8. 一个8位约翰逊计数器的模是8。

    • 错误。一个 n 位约翰逊计数器的模是 2n。所以8位约翰逊计数器的模是 2 * 8 = 16。
  9. 环形计数器在其序列的每个状态使用一个触发器。

    • 正确。一个 n 位的环形计数器有 n 个状态,也由 n 个触发器构成。
  10. 移位寄存器不能用作时间延迟设备。

    • 错误。时间延迟是移位寄存器的一个重要应用。
ECE2050-Chapter8
https://chr0mium.link/posts/ece2050-chapter8/
作者
Cr
发布于
2025-08-24
许可协议
CC BY-NC-SA 4.0