风筝
发表于: 2019-4-17 22:34:50 | 显示全部楼层

了解移位寄存器,包括它们如何工作以将并行连接转换为串行连接。


所需的组件

●    Arduino Uno开发板

●    74HC165

●    跳线电缆


移位寄存器有不同的版本,可用于各种应用。本文将向您介绍移位寄存器并说明它们的工作原理。此外,它还将解释如何使用它们将多条并行数据线转换为单个串行连接。


什么是移位寄存器?

移位寄存器是存储单个数据字的同步设备,并且可以对这些位执行逻辑移位操作。逻辑移位将字的每个位向左或向右移动。空格通常用零填充:

LSB to MSB.png

上图显示了向左的逻辑移位。右移以类似的方式工作。


移位寄存器由几个单位锁存器组成,这些锁存器以串行菊花链方式连接,以便一个锁存器的输出连接到下一个输入:

Serial Daisy-Chain Arrangement.png

一些移位器允许您选择位移动的方向。


移位寄存器的类型

通常,有四种不同类型的移位寄存器,它们在数据输入和输出设备的方式上有所不同:

●    串行输入,串行输出

●    串行输入,并行输出

●    并行输入,串行输出

●    并行输入,并行输出


串行和并行类型通常同步运行,因此您需要一个时钟信号来处理数据。


支持串行和并行输入以及串行和并行输出的寄存器称为通用移位寄存器。


基本操作

假设我们有以下理论的4位移位寄存器,它具有串行输入和输出以及并行输出:

4-bit Shift Register D-Latch.png

4位移位寄存器D锁存器


如您所见,每个位都从右侧的串行输入加载到移位寄存器的D锁存器中。


第一个时钟周期将其加载到锁存器A.然后,锁存器的输出具有加载到寄存器中的值。下一个时钟周期设置第二个锁存器值并将一个新位加载到第一个锁存器中,从而将位从右向左移位。这与所有寄存器同时发生。最后一个锁存器输出是移位寄存器的串行输出。


因此,串行移位器可用作缓冲器。上面的移位器也可用于将串行信号转换为四条并行数据线。


并行输入转换串行输出

该技术可用于减少从并行总线读取值所需的输入数量。例如,您可以利用它将来自计算机键盘的信号转换为USB控制器可以理解的单个串行信号。在本例中,我使用DIP开关来模拟8位数据总线,并使用Arduino Uno上的单个GPIO引脚读取8个值:

Parallel to Serial Conversion.png

并行输入转换串行输出


请注意,实际上橙色和黄色总线可能无法连接成一条线。我决定以这种方式代表他们以使图像更容易理解:

Arduino controlling the shift register.png

Arduino控制移位寄存器,产生时钟信号,并读取8位。然后输出值:

Outputs on the Serial Monitor.png


总结

移位寄存器是由几个D锁存器组成的同步器件,它实现了数字电路中的逻辑移位功能。这些IC可用于各种应用。然而,它们通常用于将串行数据线转换为并行总线,反之亦然。使用它们时,您必须记住,有不同的类型可用于不同的目的。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-21 16:44 , Processed in 0.042582 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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