好的,这份中文自学讲义根据您提供的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”。
- 数据移入 (Table 8-1): 假设初始状态全为0,我们要移入4位数据 “1010”(注意:串行输入时,最低位先输入,即先输入0,再输入1,再输入0,最后输入1)。但从图表示例看,是先输入1,再输入0,再输入1,最后输入0。让我们以来看PPT中
时序图示例: 下图展示了将数据 “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₃ 端串行输出。
- 加载模式 (LOAD): 当
时序图示例:
- 时钟脉冲1:
SHIFT/LOAD
为低电平,并行数据1010
被加载。Q₃ 输出为 D₃ 的值,即 0。 - 时钟脉冲2-4:
SHIFT/LOAD
变为高电平,寄存器进入移位模式。数据逐位右移并从 Q₃ 输出。 - 时钟脉冲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)
- 扫描原理: 键盘内部是一个按键矩阵。编码器通过一个移位寄存器(通常配置成环形计数器)来轮流扫描矩阵的每一行。
- 工作过程:
- 初始化: 一个”0”被加载到环形计数器中(例如,
11111110
),其他位为”1”。 - 扫描: 在时钟驱动下,“0”在计数器中循环移动,从而依次选中(拉低)键盘矩阵的每一行。
- 按键检测: 如果有按键被按下,当该按键所在的行被扫描(变为低电平)时,与之相连的列线也会被拉低。
- 编码: 检测到低电平的列线地址(列码)和当前正在扫描的行地址(行码)组合在一起,就形成了该按键的唯一编码。
- 初始化: 一个”0”被加载到环形计数器中(例如,
第五部分:移位寄存器计数器
通过特定的反馈连接,移位寄存器可以构成计数器。
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
个不同的状态。 - 它非常适合用于需要顺序激活多个设备或步骤的应用中(如键盘扫描)。
第六部分:章节自测(判断题)
请判断以下说法的正误,以检验你的学习效果。
-
移位寄存器由一组触发器排列而成。
- 正确。这是移位寄存器的基本构成。
-
移位寄存器不能用来存储数据。
- 错误。数据存储是移位寄存器的两大基本功能之一。
-
串行移位寄存器在一条线上一次只接收一位数据。
- 正确。这就是“串行”的定义。
-
所有的移位寄存器都由特定的序列定义。
- 错误。像SISO、SIPO等通用寄存器可以移位任何数据,而约翰逊计数器和环形计数器才具有特定的状态序列。
-
移位寄存器计数器是将串行输出连接回串行输入的移位寄存器。
- 正确。这种反馈连接是构成计数器的关键。
-
一个有四个阶段(级)的移位寄存器最多可以存储十五个计数。
- 错误。一个4级的寄存器可以存储一个4位二进制数(0-15),但它本身只能存储一个数。如果作为计数器,4位二进制计数器可以有16个状态(0-15)。而4位环形计数器只有4个状态,4位约翰逊计数器有8个状态。
-
约翰逊计数器是一种特殊类型的移位寄存器。
- 正确。它是在移位寄存器基础上通过特定反馈构成的。
-
一个8位约翰逊计数器的模是8。
- 错误。一个 n 位约翰逊计数器的模是
2n
。所以8位约翰逊计数器的模是 2 * 8 = 16。
- 错误。一个 n 位约翰逊计数器的模是
-
环形计数器在其序列的每个状态使用一个触发器。
- 正确。一个 n 位的环形计数器有 n 个状态,也由 n 个触发器构成。
-
移位寄存器不能用作时间延迟设备。
- 错误。时间延迟是移位寄存器的一个重要应用。