双向移位寄存器

2025年3月17日 | 阅读 8 分钟

触发器可以用来存储单个二进制数据位(1 或 0)。但是,要存储多位数据,我们需要多个触发器。N 个触发器将被连接起来存储 n 位数据。

一个 寄存器 是一种用于存储此类信息的设备。它是一组串联连接的触发器,用于存储多位数据。

存储在这些寄存器中的信息可以使用 移位寄存器 进行传输。

移位寄存器 是一系列触发器,其中一个触发器的输出引脚 q 连接到下一个数据输入引脚 (d)。因为所有触发器都在同一个时钟下工作,存储在移位寄存器中的位数组将移动一个位置。

例如,如果一个 5 位右移寄存器的初始值为 10110,并且移位寄存器的输入连接到 0,那么下一个模式将是 01011,下一个是 00101。

Bidirectional Shift Register

双向移位寄存器 是能够根据所选模式向右或向左移动数据的存储设备。

下图显示了一个具有串行数据加载和检索能力 n 位双向移位寄存器。最初,寄存器中的所有触发器都通过驱动其清除引脚为高来复位。

Bidirectional Shift Register

R/L 控制线设置为低或高,分别选择数据位的左移或右移。

一个 n 位移位寄存器可以通过连接 n 个触发器来形成,其中每个触发器存储一个数据位。

将位向左移位的寄存器称为 左移寄存器。将位向右移位的寄存器称为 右移寄存器。移位寄存器基本上有四种类型,例如

  1. 串行输入串行输出移位寄存器
  2. 串行输入并行输出移位寄存器
  3. 并行输入串行输出移位寄存器
  4. 并行输入并行输出移位寄存器

示例

在本移位寄存器示例中,我们采用五个输入和一个 n 位输出,并且设计使用参数 MSB 进行参数化,以表示移位寄存器的宽度。

如果 n 为 4,则它成为一个 4 位移位寄存器。如果 n 为 8,则它成为一个 8 位移位寄存器。此移位寄存器具有一些关键特性

  • 它可以通过驱动 en 引脚来启用或禁用。
  • dir 被驱动时,它可以向左和向右移动。
  • 如果 rstn 被拉低,它将复位移位寄存器,输出将变为 0。
  • 移位寄存器的输入数据值可以通过 d 引脚控制。

硬件原理图

Bidirectional Shift Register

测试平台

测试平台用于验证此移位寄存器的功能。该示例被实例化到顶层 module 中,并且使用不同的值来驱动输入。每个输入的行为都可以在输出 out 引脚处观察到。

Bidirectional Shift Register

串行输入串行输出移位寄存器 (SISO)

允许串行输入(通过单条数据线一个接一个的位)并产生串行输出的移位寄存器称为串行输入串行输出移位寄存器。

由于只有一个输出,数据以串行模式同时离开移位寄存器一位,因此称为串行输入串行输出移位寄存器。

下面给出的逻辑电路显示了一个串行输入串行输出移位寄存器。该电路由四个串联连接的 D 触发器组成。

所有这些触发器都是同步的,因为相同的时钟信号应用于每个触发器。

Bidirectional Shift Register

上述电路是一个右移寄存器的示例,从触发器的左侧获取串行数据输入。 SISO 的主要用途是充当延迟元件。

串行输入并行输出移位寄存器 (SIPO)

允许串行输入(通过单条数据线一个接一个的位)并产生并行输出的移位寄存器称为串行输入并行输出移位寄存器。

下面给出的逻辑电路显示了一个串行输入并行输出移位寄存器。该电路由四个 D 触发器 组成,这些触发器已连接。

清除 (CLR) 信号已连接,并且时钟信号已连接到所有 4 个触发器以重置它们。第一个触发器的输出连接到下一个触发器的输入,依此类推。

所有这些触发器都是同步的,因为相同的时钟信号应用于每个触发器。

Bidirectional Shift Register

上述电路是一个右移寄存器的示例,从触发器的左侧获取串行数据输入并产生并行输出。

它们用于需要将数据线解复用到几条并行线的通信线路中,因为 SIPO 寄存器的主要用途是将串行数据转换为并行数据。

并行输入串行输出移位寄存器 (PISO)

允许并行输入(数据分别提供给每个触发器并同时提供)并产生串行输出的移位寄存器称为并行输入串行输出移位寄存器。

下面给出的逻辑电路显示了一个并行输入串行输出移位寄存器。该电路由四个 D 触发器组成,这些触发器已连接。

时钟输入直接连接到所有触发器。输入数据仍然通过每个触发器输入的多路复用器单独连接到每个触发器。

上一个触发器的输出和并行数据输入连接到 MUX 输入,MUX 的输出连接到下一个触发器。

所有这些触发器都是同步的,因为相同的时钟信号应用于每个触发器。

Bidirectional Shift Register

一个并行输入串行输出 (PISO) 移位寄存器用于将并行数据转换为串行数据。

并行输入并行输出移位寄存器 (PIPO)

允许并行输入(数据分别提供给每个触发器并同时提供)并产生并行输出的移位寄存器,称为并行输入并行输出移位寄存器。

下面给出的逻辑电路显示了一个并行输入并行输出移位寄存器。该电路由四个 D 触发器组成,这些触发器已连接。清除 (CLR) 信号和时钟信号连接到所有 4 个触发器。

在此类型的寄存器中,各个触发器之间没有互连,因为不需要数据的串行移位。

数据被分别提供为每个触发器的输入,并且以相同的方式,并且输出也从每个触发器单独收集。

Bidirectional Shift Register

一个并行输入并行输出 (PIPO) 移位寄存器用作临时存储设备,并且像 SISO 移位寄存器一样,它充当延迟元件。

双向移位寄存器

如果我们将一个二进制数左移一位,则相当于将该数乘以 2。如果我们将一个二进制数右移一位,则相当于将该数除以 2。要执行这些操作;我们需要一个可以在任一方向移动数据的寄存器。

双向移位 寄存器是能够根据所选模式向右或向左移动数据的寄存器。

如果选择的模式是 1(高),则数据将向右移动,如果选择的模式是 0(低),则数据将向左移动。

下面给出的逻辑电路显示了一个双向移位寄存器。该电路由四个 D 触发器组成,这些触发器已连接。

输入数据连接在电路的两端,并且根据所选的模式,只有一个与门处于活动状态。

Bidirectional Shift Register

移位寄存器的应用

以下是移位寄存器的应用,例如

  • 移位寄存器用于临时数据存储。
  • 移位寄存器也用于数据传输和数据操作。
  • 串行输入串行输出和并行输入并行输出移位寄存器用于对数字电路产生时间延迟。
  • 串行输入并行输出移位寄存器用于将串行数据转换为并行数据。它们用于需要将数据线解复用到几条并行线的通信线路中。
  • 一个并行输入串行输出移位寄存器用于将并行数据转换为串行数据。