0.目录
- 描述
- 原理
- 应用场景
- 注意事项
1.描述
锁存器(Latch),是数字电路中的一种具有记忆功能的逻辑元件,是一种对脉冲电平敏感的存储单元电路,可以在特定输入脉冲电平作用下改变状态,利用电平控制数据的输入,包括不带使能控制的锁存器和带使能控制的锁存器。
锁存,就是把信号暂存以维持某种电平状态,在数字电路中则可以记录二进制数字信号“0”和“1”。只有在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号。通常只有0和1两个值。
作用:
- 缓存
- 完成高速的控制器与慢速的外设的不同步问题
- 解决驱动的问题
- 解决一个 I/O 口既能输出也能输入的问题
逻辑结构与功能表
8位锁存器74LS373的逻辑图如图所示:
其中使能端G加入CP信号,D为数据信号。输出控制信号为0时,锁存器的数据通过三态门进行输出。
累加Latch
微处理器中运算器部分主要电路结构,作用是防止算术逻辑单元的输出通过累加器(A)直接反馈到ALU的输入端。
2.原理
CMOS反相器的功能是可以使输出获得跟输入相反的逻辑值,如果把两个反相器的输入跟输出连接在一起,如下图:
假设某个时刻反相器A的输入是1,那其输出为0;A的输出连接到B的输入,即反相器B的输入为0,那其输出为1;而B的输出连接到A的输入端,即B输出的1反馈回A的输入,对刚才假设的“A的输入为1”进行了确认和加强。此时A的输入确实为1,按A和B的输入输出连接关系,又走了一遍刚才的路程,如此循环,结果是反相器A的输出稳定为0,反相器B的输出稳定为1。这个结构的电路有两个稳定的状态,一般称之为双稳态电路。可见类似的双稳态电路可以稳定地保持其节点中的值(数据),具有记忆功能,这就是锁存器工作的原理。
由上可得,首尾相接的两个反相器构成了互相反馈耦合的形态,这就是锁存器的基本电路结构。但这里是基于一个假设,假设反相器A的输入为1,那么它的输出为0,两个反相器连在一起通过互相反馈加强,则能保持0和1两个值。如果没有这个假设,它能保存的值将是不确定的。这类似于“鸡生蛋还是蛋生鸡”的谜局,要将此电路当锁存器使用,就必须打破这个“是输入先有0,还是输出先反馈回1”的僵局。于是给它加了两个输入端,由于反相器只有1个输入,因此改用或非门来代替。电路结构如下图,根据或非门“只要有一个输入为1,其输出就为0”的特性,当R为1时,虽然有反馈存在,也可以强制输出Q=0;当S为1时,则强制输出Q=1。这就是R-S锁存器,R意为Reset,清零的意思;S意为Set,置1的意思。
R-S锁存器的结构是最基本的锁存结构,实际应用中一般会进行各种改造和扩展,至少会加一个输入端作为控制信号,该信号有效时,锁存器能持续地输入、输出数据。其控制信号一般为高电平,因此锁存器是一种对脉冲电平敏感的存储单元电路,可以在特定输入脉冲电平作用下改变状态。锁存器的最主要作用是缓存,除了特殊用途如异步电路或很简单的逻辑,其他场合已经很少直接应用锁存器,因为其结构简单而且对电平敏感,不适合在主流的对时钟敏感的集成电路中应用。一般都是使用以锁存器为基础的触发器或寄存器。
3.应用场景
所谓锁存器,就是输出端的状态不会随输入端的状态变化而变化,仅在有锁存信号时输入的状态才被保存到输出,直到下一个锁存信号到来时才改变。
锁存器多用于集成电路中,在数字电路中作为时序电路的存储元件,在某些运算器电路中有时采用锁存器作为数据暂存器。
封装为独立的产品后也可以单独应用,数据有效延迟于时钟信号有效。这意味着时钟信号先到,数据信号后到。
在某些应用中,单片机的I/O 口上需要外接锁存器。例如,当单片机连接片外存储器时,要接上锁存器,这是为了实现地址的复用。假设,MCU端口其中的 8 路的 I/O 管脚既要用于地址信号又要用于数据信号,这时就可以用锁存器先将地址锁存起来。
8051访问外部存储器时P0口和P2口共同做为地址总线,P0口常接锁存器再接存储器。以防止总线间的冲突。而P2口直接接存储器。因为单片机内部时序只能锁住P2口的地址,如果用P0口传输数据时不用锁存器的话,地址就改变了。
看看8051单片机总线操作的时序图对我们很有帮助。由于数据总线、地址总线共用P0口,所以要分时复用。先送地址信息,由ALE使能锁存器将地址信息锁存在外设的地址端,然后送数据信息和读写使能信号,在指定的地址进行读写操作。
使用锁存器来区分开单片机的地址和数据,8051系列的单片机用的比较多,也有一些单片机内部有地址锁存功能,如8279就不用锁存器了。
4.注意事项
并不是一定要接锁存器,要看其地址线和数据线的安排,只有数据和地址线复用的情况下才会需要锁存器,其目的是防止在传数据时,地址线被数据所影响! 这是由单片机数据与地址总线复用造成的,接 RAM 时加锁存器是为了锁存地址信号。
如果单片机的总线接口只作一种用途,不需要接锁存器;如果单片机的总线接口要作两种用途,就要用两个锁存器。例如:一个口要控制两个 LED,对第一个 LED 送数据时,“打开”第一个锁存器而“锁住”第二个锁存器,使第二个 LED 上的数据不变。对第二个 LED 送数据时,“打开”第二个锁存器而“锁住”第一个锁存器,使第一个 LED 上的数据不变。如果单片机的一个口要做三种用途,则可用三个锁存器,操作过程相似。然而在实际应用中,我们并不这样做,只用一个锁存器就可以了,并用一根 I/O 口线作为对锁存器的控制之用(接 74373 的LE,而OE可恒接地)。所以,就这一种用法而言,可以把锁存器视为单片机的 I/O 口的扩展器。