锁存器、触发器与寄存器
锁存器、触发器、寄存器
Ver 1.0
By Kevin
2011-8-7
锁存器(latch)基本概念:
锁存器是电平触发的存储单元,非同步控制。当处输入时钟或者使能处于无效电平时保持原来的信号值;当处输入时钟或者使能处于有效电平时,锁存器相当于一个缓冲器,输出对输入是透明的,输入立即体现在输出端,这时,由于布线延迟的不同,不同输入信号到达锁存器的时间就不同,便产生了毛刺,这就是锁存器不稳定的原因。不能过滤毛刺,这对于下一级电路是极其危险的。无异步复位,不能在芯片上电时处于一个确定的状态。
锁存器应用:
1.
数据有效迟后于时钟信号有效。这意味着时钟信号先到,数据信号后到。在某些运算器电路中有时采用锁存器作为数据暂存器;
2.
在甚高速电路(CPU)中应用;
3.
有些地方没有时钟,也只能用latch了;
4.
在有些设计中,也不可避免地需要用到锁存器(例如,在PCI接口设计中,如果不用锁存器,设计者就不可能完成PCI规范中对Reset功能的定义);
锁存器优点:
面积小,速度快。锁存器比触发器快,所以用在地址锁存是很合适的,不过一定要保证所有的锁存器信号源的质量,锁存器在CPU设计中很常见,正是由于它的应用使得CPU的速度比外部IO部件逻辑快许多。与触发器相比,锁存器完成同一个功能所需要的逻辑门的数量要少,可以提高集成度,所以在ASIC中用的较多。
锁存器缺点:
1.
时序分析困难。但是对latch进行STA的分析也是可以的,当前PrimeTime、RTL compiler、Design Compiler是支持进行latch分析的,但是要求对工具相当熟悉才行,否则很容易出错。
2.
无法过滤毛刺;
3.
在FPGA中往往没有锁存器,需要用触发器和LUT来构成,浪费逻辑资源。
HDL描述电路时如何避免产生锁存器:
1.
组合逻辑电路的always块中,输入信号在always后面的敏感信号列表中不能有遗漏(可以用Verilog2001的风格:always @*)。
2.
对所有输入条件都要赋值,以覆盖所有条件分支。特别是if…else…(勿丢else)和case(勿丢default)结构中。
3.
在组合进程中对输出赋初始值。
4.
避免产生组合电路反馈,组合电路反馈会引起精确静态时序分析难以实现等一系列问题。
备注:
always @(posedge clk) begin
if (a==1)
b<=c;
end
虽然只有if没有else,但是因为是clk边沿触发所以不会产生锁存器。
********************************************************************************
触发器(flip-flop)基本概念:
触发器是边沿触发的存储单元,同步控制。触发器是由两个锁存器构成的一个主从触发器,输出对输入是不透明的,必须在时钟在上升/下降沿时才会将输入体现到输出,所以它能够消除输入中不满足建立时间(setup time)的毛刺信号。
触发器应用:
时钟有效迟后于数据有效。这意味着数据信号先建立,时钟信号后建立。在时钟上升沿或下降沿时刻打入到寄存器。
********************************************************************************
寄存器(register)基本概念:
寄存器是用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果,它被广泛的用于各类数字系统和计算机中。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。
工程中的寄存器一般按计算机中字节的位数设计,所以一般有8位寄存器、16位寄存器等。
寄存器的应用:
1.
完成数据的并串、串并转换;
2.
暂存数据。
3.
用作缓冲器。
4.
组成计数器。
简单易懂,多谢小编了
看后如拨云见日,豁然开朗,谢谢小编。
受用了,谢谢小编
感谢小编哈
谢谢小编。
小编解释的很明了。
啧啧啧啧
谢谢,很受用。
要是有这三者的基本结构图就更好了~
小编很给力哦
感谢分享
解释的很好
nice!
触发器可以认为是寄存器的最基本单元
简单明了,不错
see see
十分受用,感谢小编
谢谢,很是受教!
Very Good !
这个学习了,简单明了
学习!
感谢小编分享
