移位寄存器不仅有存放数码而且有移位的功能。
下图是由JK触发器组成的四位移位寄存器
F0接成D触发器,数码由D端输入。设寄存器的二进制数为“1011”,按移位脉冲(即时钟脉冲)的工作节拍从高位到低位依次串行送到D端。工作之初先清零。首先D=1,第一个移位脉冲的下降沿来到时使触发器F0翻转,Q0=1,其他仍保持“0”态。接着D=0,第二个移位脉冲的下降沿来到时使F0和F1同时翻转,由于F1的J端为1,F0的J端为0,所以Q1=1,Q0=0,Q2和Q3仍为“0”。表22.2.1是其状态表,移位一次,存入一个新数码,直到第四个脉冲的下降沿来到时,存数结束。这时,可以从四个触发器的Q端得到并行的数码输出。如果再经过四个移位脉冲,则所存的“1011”逐位从Q3端串行输出。
下图是由维持阻塞型D触发器组成的四位移位寄存器。它既可并行输入(输入端为,,,)/串行输出(输出端为),又可串行输入(输入端为D)/串行输出。
当工作于并行输入/串行输出时(串行输入端D为“0”),首先清零,使四个触发器的输出全为“0”。再给“寄存指令”之前,G3-G0四个“与非”门的输出全为“1”。当加上该指令时,并设并行输入的二进制数d3d2d1d0=1011,于是G3,G1,G0输出置“1”负脉冲,使触发器F3,F1,F0的输出为“1”,G2和F2的输出未变。这样,就把“1011”输入寄存器。而后输入移位脉冲C,使d0,d1,d2 ,d3依次(从低位到高位)从 Q0输出(右移),各个触发器的输出端均为恢复为“0”。
下图所示的是应用于加法器中的一种。图中,Ⅰ,Ⅱ,Ⅲ是三个n位的移位寄存器,Ⅰ和Ⅱ是并行输入/串行输出,Ⅲ是串行输入/并行输出。
1)进行运算之前先将各个寄存器和进位D触发器清零。
2)给“寄存指令”(正脉冲),将加数A0-An-1和被加数B0-Bn-1分别送入寄存器Ⅰ和Ⅱ。下
3)输入移位脉冲C,两个寄存器中的数码依次逐位右移(从低位到高位),并送入全加器中逐位相加。
4)逐位相加后,将本位和数Si存入寄存器Ⅲ;将进位数Ci-1暂时存放在进位触发器中,以便和本位数Ai,Bi相加。D触发器具有将输入数码延迟一步输出的功能,所以用它作为进位触发器。
5)相加完毕后,给“取出指令”(正脉冲),将和数从移位寄存器Ⅲ和进位触发器中取出。最高位Cn-1即为进位数,是存放在进位触发器中的。