马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
周末闲来无事,看了一些关于锁存器、触发器和寄存器的基础知识。大部分都是网络上的,我看了之后,汇总整理了一下。估计不是很全或者甚至还有错误,欢迎大家补充和指正!
锁存器、触发器、寄存器 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.
组成计数器。 |