移位寄存器

//转载自: http://dig.phy.ccnu.edu.cn/%D4%DA%CF%DF%BD%CC%D1%A75.files/jiaoxue5frame.files/5-4.htm

寄存器是计算机和其它数字系统中用来存储代码或数据的逻辑部件。它的主要组成部分是触发器。一个触发器能存储1位二进制代码,所以要存储n位二进制代码的寄存器就须要用n个触发器组成。一个4位的集成寄存器74LS175的逻辑电路图和引脚图分别如图8.7.1(a)、(b)所看到的。当中,RD是异步清零控制端。在往寄存器中寄存数据或代码之前,必须先将寄存器清零,否则有可能出错。1D~4D 是数据输入端,在CP 脉冲上升沿作用下,1D~4D端的数据被并行地存入寄存器。输出数据能够并行从1Q~4Q 端引出,也能够并行从1Q~4Q
端引出反码输出。

74LS175的功能如表8.7.1所看到的。

上面介绍的寄存器仅仅有寄存数据或代码的功能。有时为了处理数据,须要将寄存器中的各位数据在移位控制信号作用下,依次向高位或向低位移动1位。具有移位功能的寄存器称为移位寄存器。

移位寄存器:

移位寄存器的工作原理:

把若干个触发器串接起来,就能够构成一个移位寄存器。由4个边沿D 触发器构成的4位移位寄存器逻辑电路如图8.8.1所看到的。数据从串行输入端D1输入。左边触发器的输出作为右邻触发器的数据输入。如果移位寄存器的初始状态为0000,现将数码D3D2D1D0(1101)从高位(D3)至低位依次送到D1端,经过第一个时钟脉冲后,Q0=D3。因为尾随数码D3后面的数码是D2,则经过第二个时钟脉冲后,触发器FF0的状态移入触发器FF1,而FF0变为新的状态,即Q1=D3,Q0=D2。依此类推,可得4位右向移位寄存器的状态, 如表8.8.1所看到的。

由表可知,输入数码依次地由低位触发器移到高位触发器,作右向移动。经过4个时钟脉冲后,4个触发器的输出状态Q3Q2Q1Q0与输入数码D3D2D1D0相相应。为了加深理解,在图8.8.2中画出了数码1101(相当于D3=1,D2=1,D1=0 ,D0=1)在寄存器中移位的波形,经过了4个时钟脉冲后,1101出如今寄存器的输出端Q3Q2Q1Q0。这样,就可将串行输入(从D1端输入)的数码转换为并行输出(从Q3、Q2、Q1、Q0端输出)的数码。这样的转换方式特别适用于将接收到的串行输入信号转换为并行输出信号,以便于打印或由计算机处理。

在图8.8.3中还画出了第5到第8个时钟脉冲作用下,输入数码在寄存器中移位的波形(如图8.8.2所看到的)。由图可见,在第8个时钟脉冲作用后,数码从Q3端已所有移出寄存器。这说明存入该寄存器中的数码也能够从Q端串行输出。依据须要,可用很多其它的触发器组成多位移位寄存器。

除了用边沿D 触发器外,还可用其它类型的触发器来组成移位寄存器,比如,用主从JK 触发器来组成移位寄存器,其级间连接方式如图8.8.3所看到的。依据JK触发器的特征方程,由图8.8.3可得:

FF2和FF3的接法与FF1全然相似,所以各JK 触发器均以D 触发器的功能工作,图8.8.3和图8.8.1所看到的电路具有同样的功能。

双向移位寄存器:

若将图8.8.1所看到的电路中各触发器间的连接顺序调换一下,让右边触发器的输出作为左邻触发器的数据输入,则可构成左向移位寄存器。若再增添一些控制门,则可构成既能右移(由低位向高位)、又能左移(由高位至低位)的双向移位寄存器。图8.8.4是双向移位寄存器的一种方案,它是利用边沿D 触发器组成的,每一个触发器的数据输入端D 同与或非门组成的转换控制门相连,移位方向取决于移位控制端S的状态。

当S=1时,D0=DSR,D1=Q0,即FF0的D0端与右移串行输入端DSR接通,FF1的D1端与Q0接通,在时钟脉冲CP 作用下,由DSR端输入的数据将作右向移位;反之,当S=0时,D0=Q1 ,D1=Q2,在时钟脉冲CP作用下,Q2、 Q1的状态将作左向移位。同理,能够分析其它两位触发器间的移位情况。由此可见,图8.8.4所看到的寄存器可作双向移位。当S=1时,数据作右向移位;当S=0时,数据作左向移位。可实现串行输入——串行输出(由DOR 或DOL 输出)、串行输入――并行输出工作方式(由Q3~Q0 输出)。

有时要求在移位过程中数据不要丢失,仍然保持在寄存器中。仅仅要将移位寄存器的最高位的输出接至最低位的输入端,或将最低位的输出接至最高位的输入端。这样的移位寄存器称为循环移位寄存器,它也能够作为计数器用,称为环行计数器。

时间: 2024-10-15 14:30:57

移位寄存器的相关文章

设计四位移位寄存器shifter_4

四位移位寄存器:由四个D触发器组成,当每来一个时钟上升沿时,四个触发器分别执行一次移位 要求? 每个周期通过数据输入端din送入一比特数据?每个周期通过数据输出端dout串行移出一比特数据? 异步复位后四位寄存器的值为4'b0101, LSb优先移出 感觉移位寄存器也没什么太难的地方,自己唯一的收获是了解了如何既简便有快速的进行移位,这里就提到了verilog中的一个很方便的运算符号--拼接运算{},在以下代码中会用到,下来附上代码一段. 1).shifter_4.v module shifte

labview 移位寄存器、隧道、索引隧道的区别

Lab view区别:移位寄存器.隧道.索引隧道 最近研究Lab view的时候发现移位寄存器和隧道的功能非常相似但是又有区别 外部数据进入循环体是通过隧道进入的,有几种方式: 图1:For 循环结构上的隧道 图 1 所示的 For 循环结构演示了三种隧道结构,就是在 For 循环结构左右边框上用于数据输入输出的节点.这三种隧道从上至下分别是:索引隧道.移位寄存器(shift register).一般隧道. 一般隧道,就是把数据传入传出循环结构.数据的类型和值在传入传出循环结构前后不发生变化. 

寄存器,移位寄存器的电路原理以及verilog代码实现

寄存器:用以存放二进制代码的电路,下图为由维特阻塞D触发器组成的4位数码寄存器: 逻辑功能分析: 1.异步端CR置0时,输出置0: 2.同步并行置数:D0~D3为4个输入代码,当CP上升沿到达时,D0~D3被同时并行置入. 3.在置数端为1,CP端为0时,保持不变. 2.移位寄存器:具有存放数码和使数码逐位右移或左移的电路称为移位寄存器. 移位寄存器按照不同的分类方法可以分为不同的类型. 如果按照移位寄存器的移位方向来进行分类, 可以分为左移移位寄存器.移位寄存器和双向移位寄存器等:如果按照工作

LabVIEW设计模式系列——移位寄存器

标准:1.太多移位寄存器会导致连线太多,看起来凌乱,使用簇将变量打包,统一用一个移位寄存器,这样可以减少连线的麻烦2.如果每个变量都使用一个移位寄存器,没有一个名字是很难区分移位寄存器到底属于哪一个变量的,用簇可以解决这个问题3.倘若需要增加变量,只需在移位寄存器变量中添加你所需要的变量就行了,命名后就可以直接用了,减少了创建寄存器变量的麻烦而且不需要连线(事件结构很多页面时连线时各麻烦而且容易漏掉)4.移位寄存器中的变量使用就更简单了,有名称标记,而且可以选择不同的变量.5.可以统一管理变量

imx6 spi slave 数据接收时移位寄存器的工作机理

如上图, 移位寄存器(shift register)及 接收FIFO (RXDATA)对程序来说是透明的. 唯一可访问的 Receive Data Register (ECSPIx_RXDATA) 只能访问 接收FIFO的 top 字.如下: 当把 spi2 配置成为 slave 模式时,外部的主spi 端将数据发送到 spi 的 MOSI 线上,mosi线上的数据是按bit 传输的. 在 bpw 配置为 32时,移位寄存器中 每满 32bit 才可以向 接收FIFO 打一个字. 如果,mosi

移位寄存器的 IP核调取及应用

写在前面的话 做很多图像算法的时候,我们经常需要用到模板运算(如sobel图像边缘检测.中值滤波.均值滤波等等),处理这些问题的时候,我们可以借助altera提供的移位寄存器IP核来简化我们的设计,从而提高设计效率.本节,梦翼师兄和大家一起学习这个适合用于模板运算的移位寄存器IP核的用法. 功能要求 假设数据在一个ROM中以如下图所示的方式存放,列加行的值作为该数的地址(如e的地址就是8+1=9). address 0 1 2 3 4 5 6 7 0 a d g j m p aa bb 8 b

移位寄存器及verilog代码

通用移位寄存器 作用:后续补全 //通用移位寄存器module Universal_Shift_Reg#(parameter word_size = 8)( output reg[word_size-1:0] Data_out, output MSB_out, LSB_out, input [word_size-1:0] Data_in, input MSB_in, LSB_in, input s0, s1, clk, rst ); assign MSB_out = Data_out[word_

移位寄存器的设计(VHDL)及testbench的编写

移位寄存器是一种常用的存储元件,此处由D触发器构成,如下图所示. 当时钟边沿到来时,存储在移位寄存器的数据朝一个方向移动一个BIT位. 移位寄存器的功能主要为:串并转换,并串转换和同步延迟. vhdl代码如下: 1 library ieee; 2 use ieee.std_logic_1164.all; 3 4 entity shiftreg_rb is --实体说明及端口说明 5 port( 6 si,clr_bar,clk:in std_logic; 7 qout:buffer std_lo

串行工作模式之同步移位寄存器的输入输出方式

主要用于扩展并行输入或输出口.数据有RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出.发送和接受均为8位数据.低位在前,高位在后. //串行口工作模式0 #include <reg52.h> #define uchar unsigned char #define uint unsigned int void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void