如何在项目中使用移位寄存器

模拟技术

2414人已加入

描述

在数字电路中,移位寄存器(英语:shift register)是一种在若干相同时间脉冲下工作的以触发器为基础的器件,数据以并行或串行的方式输入到该器件中,然后每个时间脉冲依次向左或右移动一个比特,在输出端进行输出。这种移位寄存器是一维的,事实上还有多维的移位寄存器,即输入、输出的数据本身就是一些列位。实现这种多维移位寄存器的方法可以是将几个具有相同位数的移位寄存器并联起来。

移位寄存器内的数据可以在移位脉冲(时钟信号)的作用下依次左移或右移。移位寄存器不仅可以存储数据,还可以用来实现数据的串并转换、分频,构成序列码发生器、序列码检测器,进行数值运算以及数据处理等,它也是数字系统中应用非常广泛的时序逻辑部件之一。

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

所需的组件

● Arduino Uno开发板

● 74HC165

● 跳线电缆

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

什么是移位寄存器?

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

移位寄存器

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

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

移位寄存器

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

移位寄存器的类型

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

● 串行输入,串行输出

● 串行输入,并行输出

● 并行输入,串行输出

● 并行输入,并行输出

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

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

基本操作

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

移位寄存器

4位移位寄存器D锁存器

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

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

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

并行输入转换串行输出

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

移位寄存器

并行输入转换串行输出

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

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

总结

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分