移位 寄存器 是一种在若干相同时间脉冲下工作的以 触发器 为基础的器件,分为左移寄存器、右移寄存器和双向移位寄存器三种。根据移位数据的输入-输出方式,又可将它分为串行输入-串行输出、串行输入-并行输出、并行输入-串行输出和并行输入-并行输出四种 电路 结构。
从逻辑结构上看,移位寄存器有以下两个显著特征:
(1)移位寄存器是由相同的寄存单元所组成。一般说来,寄存单元的个数就是移位寄存器的位数。为了完成不同的移位功能,每个寄存单元的输出与其相邻的下一个寄存单元的输入之间的连接方式也不同。
(2)所有寄存单元共用一个 时钟 。在公共时钟的作用下,各个寄存单元的工作是同步的。每输入一个时钟脉冲,寄存器的*就顺序向左或向右移动一位。通常可按*传输方式的不同对CMOS移位寄存器进行分类。移位寄存器的*输入方式有串行输入和并行输入之分。串行输入就是在时钟脉冲作用下,把要输入的*从一个输入端依次一位一位地送入寄存器;并行输入就是把输入的*从几个输入端同时送入寄存器。
在CMOS移位寄存器中,有的品种只具有串行或并行中的一种输入方式,但也有些品种同时兼有串行和并行两种输入方式。串行输入的*加到第一个寄存单元的D端,在时钟脉冲的作用下输入,*传送速度较慢;并行输入的*一般由寄存单元的R、S端送入,传送速度较快。移位寄存器的移位方向有右移和左移之分。右移是指*由左边最低位输入,依次由右边的最高位输出;左移时,右边的第一位为最低位,最左边的则为最高位,*由低位的右边输入,由高位的左边输出。
移位寄存器的输出也有串行和并行之分。串行输出就是在时钟脉冲作用下,寄存器最后一位输出端依次一位一位地输出寄存器的*;并行输出则是寄存器的每个寄存单元均有输出。CMOS移位寄存器有些品种只有一种输出方式,但也有些品种兼具两种输出方式。实际上,并行输出方式也必然具有串行输出功能。
移位寄存器的种类
1、按照移位的方向分类
分成
:
A、左移寄存器
B、右移寄存齐
C、双向移位寄存器
2、按照移位数据的输入--输出方式
分成:
A、串行输入--串行输入
B、串行输入--并行输入
C、并行输入--串行输入
D、并行输入--并行输入
移位寄存器有什么作用?
移位寄存器又称为F IF O(Fi rs t in First out,先人先出)堆栈,FX系列的堆栈长度为2-512个字,先写入堆栈的数据先读出。用移位寄存器保存产品的编号,可以实现先入库的产品先出库。
图4-21中的目标元件D1是FIFO堆栈的首地址,也是堆栈的指针,移位寄存器未装人数据时应将D1清0。在XO由OFF变为ON时,移位寄存器写入指令SFWR将指针的值加1后写人数据。第一次写入时,源操作数DO中的数据写入D2。如果XO再次由OFF变为ON,D1中的数变为2,DO中新的数据写入D3。堆栈写满后不再执行写入操作,且进位标志M8022置1 。
移位寄存器写入指令
图4-22的X1由OFF变为ON时,移位寄存器读出指令SFRD将D2中的数据送到源操作数D20,同时指针D1的值减1,D3到D9的数据向右移一个字。数据总是从D2读出,指针D1为0时,FIFO堆栈被读空,不再执行上述处理,零标志M8020为ON。
下面的例程用移位寄存器写入、读出指令实现先入库的产品先出库: