
移位寄存器有不同的版本,可用于各种应用。本文将向您介绍移位寄存器,并解释它们是如何工作的。此外,它还将解释如何使用它们将多条并行数据线转换为一条串行连接。
什么是移位寄存器?
移位寄存器是存储单个数据字的同步器件,这些位可以进行逻辑移位。逻辑移位将一个字的每一位向左或向右移动。空格通常用零填充:
上图显示了向左的逻辑转移。“右移”的工作方式类似。
移位寄存器由几个单位锁存器组成,这些锁存器以串行菊花链模式连接,以便一个锁存器的输出连接到下一个输入:
有些传输允许您选择要移动哪些位。
移位寄存器的类型
一般来说,有四种不同类型的移位寄存器可以以不同的方式用于数据输入和输出设备:
串行输入、串行输出
串行输入,并行输出
并行输入,串行输出
并行输入和并行输出
串行和并行类型通常同步运行,所以你需要一个时钟信号来处理数据。
支持串行和并行输入的寄存器,如串行和并行输出,称为通用移位寄存器。
基本操作
我们假设我们有以下理论:4。移位寄存器具有串行输入和输出以及并行输出:
如您所见,每位从右侧的串行输入载入移位寄存器的D锁存器。
在第一个时钟周期将其载入锁存器a。锁存器的输出然后将值载入寄存器。下一个时钟周期设置第二个锁存器值,并将一个新位加载到第一个锁存器中,从而将该位从右向左移位。这与所有寄存器同时发生。最后一个锁存器的输出是移位寄存器的串行输出。
因此,串行移位器可以用作缓冲器。上述移位器也可用于将串行信号转换成四条并行数据线。
并行到串行转换
这种技术可以用来减少从并行总线读取值所需的输入数量。例如,您可以使用它将来自计算机键盘的信号转换为USB控制器可以理解的单个串行信号。在本例中,我使用DIP开关来模拟8位数据总线,并使用Arduino Uno上的一个GPIO引脚来读取8个值:
请注意,橙色和黄色总线实际上可能不在一条线上。我决定用这种方式来表现它们,使图像更容易理解:
Arduino控制移位寄存器,产生时钟信号并读取8位。然后输出该值:
结论
移位寄存器是由多个D锁存器组成的同步器件,在数字电路中实现逻辑移位功能。这些IC可用于各种应用。然而,它们通常用于将串行数据线转换为并行总线,反之亦然。在使用它们的时候,你必须记住有不同的类型可以用于不同的目的。









