• 注册 / 登录
  • 切换到窄版
  • 查看: 445|回复: 0

    移位寄存器初学者指南

    [复制链接]

    676

    主题

    690

    帖子

    6808

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6808
    发表于 2024-11-10 14:49:10 | 显示全部楼层 |阅读模式

    路线栈欢迎您!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    一、前言

    移位寄存器是数字电子器件中的常见构件,用于存储和移动位,例如将串行数据转换为并行数据,反之亦然。

    1.gif
    位如何通过移位寄存器移动

    它基本上是一组可以存储位的触发器,每次触发时都会将其存储的位横向移动一位。它由一系列D 触发器组成,其中一个触发器的输出连接到下一个触发器的输入,每个钟脉冲触发一次移位。

    下面介绍不同类型的移位寄存器、它们的工作原理以及如何使用触发器构建它们。

    移位寄存器工作原理

    触发器只能存储一位数字数据,即 1 或 0。如果想存储多位数据怎么办?为了存储多位数据,需要多个触发器。

    2.png

    在数字电子学中,寄存器是一组连接在一起的触发器,用于存储多位数据。例如,如果一次使用八个触发器,那么将创建一个可以容纳八位(或一个字节)的寄存器。

    移位寄存器中的二进制数据可以在寄存器内从一个触发器横向移动到另一个触发器。允许横向移动位的寄存器称为移位寄存器。移位寄存器有四种类型:

    串行输入 – 串行输出
    串行输入 – 并行输出
    并行输入 – 串行输出
    并行输入 – 并行输出

    3.png

    移位寄存器应用

    移位寄存器通常用于数据存储、数据移动和数据操作。移位寄存器中可存储的位数等于所用触发器的数量。

    你可以找到可以直接在电路中使用的预建移位寄存器,例如在以下芯片中:

    CD4015 – 包含两个 4 位移位寄存器,
    CD4014 – 包含一个具有并行输出的 8 位移位寄存器,
    CD4017 – 包含一个环形计数器,
    还有很多。

    移位寄存器的电路示例:环形计数器

    移位寄存器可用于各种电路。例如,如果你稍微修改一下串行输入 - 并行输出移位寄存器,你可以创建一个环形计数器电路,如下所示:

    4.png
    环形计数器

    要创建环形计数器,您必须从寄存器中的最后一个触发器获取输出,并将其连接到第一个触发器的输入。您还必须将第一个触发器预设为从 1 开始。

    您可以通过将其设置输入连接到所有 D 触发器共享的重置信号来实现这一点。这意味着当您重置电路时,它将从第一个触发器中的 1 开始,其余触发器中的 0 开始。

    因此,您在第一个触发器中设置的 1 将会在整个 Q 输出中以“环”的形式来回移动。

    IC 4017是一款具有此类功能的芯片,但输出有 10 个,而不是像上面那样只有 4 个。

    移位寄存器的类型

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

    下图显示了用 D 触发器制成的串行输入 - 串行输出移位寄存器的结构:

    5.png

    此移位寄存器在串行数据输入端仅接受一位数据。每次 Clk 输入端收到有效触发信号时,它都会横向移动到下一个 D 触发器。触发器中的有效触发信号可以是上升沿(即从数字状态 0 变为 1 ↑)或下降沿(从 1 变为 0 ↓)。在本教程中,我们使用通过上升沿信号触发的触发器。

    如您所见,上述电路有四个 D 触发器。假设您将数字 1 放入串行数据输入。输入位需要四个上升沿信号才能到达串行数据输出。您可以在下面的 SISO 移位寄存器时序图中看到位的移动:

    6.png

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

    这种移位寄存器与我们上面看到的 SISO 非常相似,但不同之处在于 SIPO 移位寄存器有多个输出。此移位寄存器的每个触发器都有一个输出引脚,因此您可以并行访问位。让我们看看它的电路:

    7.png

    该电路每次接收串行数据输入中的一位。每当 D 触发器中的 Clk 输入接收到上升沿信号时,该位就会从一个触发器移动到另一个触发器(从左到右)。

    由于 SIPO 版本具有并行输出 Q0、Q1、Q2 和 Q3,因此您不必等待输入位到达最后一个触发器即可使用;它将在第一个触发信号中位于 Q3 输出,在第二个触发信号中位于 Q2 输出,在第三个触发信号中位于 Q1,最后在 Q0 的第四个上升沿中。您有以下行为:

    8.png

    SIPO 寄存器的一个常见实际示例是向 Arduino 或其他微控制器添加更多输出引脚。例如,查看使用 74HC595和 Arduino 的此示例。

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

    该移位寄存器具有并行输入,这意味着每个位会同时分别加载到每个触发器上。与输入不同,输出具有串行格式,这意味着每次触发触发器时只输出一位。

    9.png

    上述电路由四个 D 触发器组成,其中时钟信号由所有 Clk 输入共享。每个 D 输入都连接到一个多路复用器,该多路复用器接收位输入(IN0、IN1、IN2、IN3)和前一个触发器的输出(从左到右)。由于第一个触发器缺少前一个触发器,因此多路复用器的一个输入被置于数字 1 中。

    对于这种类型的寄存器,不需要上升沿信号来并行加载寄存器,因为位已经存在于输入中。然而,如果你考虑上述带有四个触发器的电路,那么将需要四个上升沿来卸载数据。这将从 IN0 中的位开始,然后是 IN1 中的位,然后是 IN2,最后是 IN3。这里有一个带有时序图的示例:

    10.png

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

    这种移位寄存器充当多位临时存储设备。看一下它的电路,试着猜猜为什么。

    11.png

    你可能已经注意到,在 PIPO 移位寄存器中,D 触发器不通过 D 输入和 Q 输出连接在一起。相反,它们仅共享时钟信号。

    并行输入对应于每个触发器的每个 D 输入(D0、D1、D2、D3)。由于每个触发器在 Clk 输入中都有相同的时钟信号,因此每个触发器将同时被触发。发生这种情况时,并行输入中的所有位将同时移动到并行输出(Q0、Q1、Q2、Q3)。换句话说,要传输整个数据集,您只需要一个触发信号。

    该电路不能算作移位寄存器,因为它实际上并不移位任何位。但是,如果在一个电路的输出和下一个电路的输入之间添加一些逻辑门,则可以并行加载数据,移位数据,然后以并行格式获取移位后的数据。

    五、结语

    移位寄存器一个最普遍的应用,是数据传输过程中,串行接口和并行接口的转换。 这在许多并行传输一组比特数据的电路中很有用,因为它们常常也使用了在结构上更为简单的串行接口。 移位寄存器可以被用作一个简单的延迟电路。 许多双向移位寄存器可以在并行传输中作为堆栈的硬件实现方式。

    作者:Omar Muoz Urias

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|路丝栈 ( 粤ICP备2021053448号 )

    GMT+8, 2024-12-22 09:40 , Processed in 0.046575 second(s), 22 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表