用移位寄存器来扩展 8位移位寄存器( 二 )


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

用移位寄存器来扩展 8位移位寄存器


用移位寄存器来扩展 8位移位寄存器


你可能会觉得这两个很奇怪 。为什么需要一个移位寄存器,以与输入的格式相同的格式输出数据?
答案是这可以用作缓冲区,以在特定数量的时钟周期内保存数据 。我们今天使用的移位寄存器都使用类似的缓冲器来保存他们输入和输出上的数据,因此在寄存器移位时它不会改变 。
移位寄存器的工作原理内部移位寄存器由许多基本逻辑门组成,其中许多被安排为“触发器” 。
如果您不熟悉触发器,它是一种基本的电子电路,可以用来保存来自其输入的数据值 。它是一个基本的构建块,无处不在,包括在许多形式的存储器电路中 。
用移位寄存器来扩展 8位移位寄存器


串行输入-并行输出或 SIPO 寄存器使用一系列触发器,并行输出上的每个位对应一个触发器 。此处的插图显示的是 4 位设备 。
用移位寄存器来扩展 8位移位寄存器


当串行数据的第一位被计时,它存储在触发器中并出现在其输出上 。
用移位寄存器来扩展 8位移位寄存器


下一位数据将原始位推送到下一个触发器 。
用移位寄存器来扩展 8位移位寄存器


随着串行数据的输入,该过程继续进行 。请注意,触发器仅在输入时更新输入值 。
用移位寄存器来扩展 8位移位寄存器


最后,当并行输出中的所有数据都被计时时,就可以读取了 。在大多数移位寄存器中,一个额外的缓冲区保存并行数据,并且在所有数据输入时钟之前不会更改它 。
PISO 或并行输入 - 串行输出移位寄存器的构造如下
用移位寄存器来扩展 8位移位寄存器


该图的“MUX”部分实际上由许多分立的逻辑门组成,它们用于在正确的时间将数据馈入相关的触发器 。
这很重要,因为 PISO 移位寄存器需要单独计时并行数据的每一位 。这意味着并行输入上的数据在读取时不能更改,同样,大多数实际设计采用缓冲区来保存并行数据 。
级联移位寄存器移位寄存器按其处理的位数进行分类,前面插图中显示的那些是 4 位寄存器,而我们今天将使用的两个移位寄存器都是 8 位设备 。
如果您需要增加可以使用移位寄存器处理的并行数据量,您可以将其与另一个移位寄存器级联 。所以两个 8 位移位寄存器可以支持 16 位,再加一个支持 24 位,等等 。
您不需要额外连接到微控制器来级联移位寄存器,因此这是驱动大量 LED 或读取大量开关而不使用大量端口的好方法 。
74HC575 & 74HC165 移位寄存器今天我们将使用两个非常常见且容易获得的移位寄存器,即 74HC595 SIPO 和 74HC165 PISO 。让我们仔细看看这些芯片 。
74HC595——8位串行输入——并行输出该74HC575是一个8级串行移位寄存器,它也具有一个内部存储寄存器 。存储寄存器缓冲输出数据并且可以独立于移位寄存器计时 。这可以防止数据在加载时发生变化 。
74HC595 具有“三态”输出 。这意味着并行数据输出上的引脚可以处于三种不同的状态 。