移位寄存器

维基百科,自由的百科全书
跳转至: 导航搜索

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

移位寄存器的输入、输出都可以是并行串行的。它们经常被配置成串入并出(serial-in, parallel-out, SIPO)的形式或并入串出(parallel-in, serial-out, PISO),这样就可以实现并行数据和串行数据的转换。当然,也有输入、输出同时为串行或并行的情况。[1]此外,还有一些移位寄存器为双向的,也就是说它允许数据来回传输,输入端同时可以作为输出端,输出端同时也可以作为输入端。如果把移位寄存器的串行输入端,和并行输出端的最后一位连接起来,还可以构成循环移位寄存器(circular shift register),用来实现循环计数功能。[3]

串入并出[编辑]

串入并出形式的移位寄存器接法,可以将输入的串行数据以并行格式输出。串行通信要求的几位数据完成输入之后,就可以在输出端的各位同时读出并行数据。

4位的串入并出移位寄存器

并入串出[编辑]

并入串出形式的移位寄存器接法,通过下图所示D1-D4并行输入段接收4位外部并行数据,而Q为串行输出的引脚。为了将数据写入到寄存器中,写/移位控制线必须保持低电平。写入完成,需要移位时,写/移位控制线则必须处于高电平,而且必须给予时间脉冲,每提供一个时间脉冲,向左(或向右)移动一位。

4位的并入串出移位寄存器

下图展示了写/移位序列的变化情况,并显示了移位寄存器内部的情况。

下边的红字表示输入数据,右上角的数字表示以串行方式依次输出的数据

应用[编辑]

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

串入并出形式的移位寄存器经常与微处理器连接,这样做的原因主要是需要的引脚数多于微处理器能够提供的数量。通过使用移位寄存器,可以只依靠两三个引脚,而被控制设备的控制位分别连接在移位寄存器的并行输出端。由此,微处理器可以以串行的方式一次写入这些设备的各个控制位。类似的,并入串出接法的移位寄存器在多个外部设备向微处理器传输数据时较为常用,外部设备以并行的方式将数据输入到移位寄存器里,然后移位寄存器以串行的方式将数据一位一位地输出给微处理器,这样,外部设备的大量信息可以通过少数几条线到达微处理器。

在早期的计算机中,移位寄存器被用来进行数据处理:两个相加的数被存储在两个移位寄存器里,然后它们按照时间脉冲被输出到算术逻辑单元,结果中多出的一位以反馈的形式重新被输入到其中一个移位寄存器(累加器)。注意两个一位二进制数相加的结果只可能是一位(如0+0=0,0+1=1)或者两位(1+1=10)。

一些计算机语言内置了移位指令,这类指令可以让二进制数据在寄存器中进行左移或右移操作。左移或右移一位,相当于乘以2或除以2。

一些1970年代早期的设备曾以类似延迟线存储器的方式用过非常大规模的串入串出移位寄存器,其规模达到上千位。这类存储器有时被称为循环存储器(circulating memory)。例如,DataPoint 3300将其25列、72行的字符显示数据存储在54个200位的移位寄存器里,以6个堆栈、每个堆栈9个包的形式排列,提供了1800个6位字符的存储能力。[4]

参考文献[编辑]

  1. ^ 1.0 1.1 1.2 移位寄存器. 自动化在线. [2012-05-18]. 
  2. ^ 基于次态卡诺图的移位寄存器型计数器的自启动设计. 浙江大学学报(理学版). 2011, 38 (4). 
  3. ^ 邓元庆、关宇、贾鹏、石会. 数字设计基础与应用. 北京: 清华大学出版社. . 133. ISBN 978-7-302-21406-9 (中文(中国大陆)‎). 
  4. ^ DataPoint 3300 Maintenance Manual. 1976.12. 

相关条目[编辑]

外部链接[编辑]