触发器和锁存器的概念及FPGA中的使用
来源:互联网 发布:科比0506赛季详细数据 编辑:程序博客网 时间:2024/06/09 20:44
在《深入理解Atera FPGA应用设计》的书中第3.6节详细介绍了在代码中使用寄存器而不是锁存器的原因。这里在这个基础上整理了网上的一些资料供参考。
1. 锁存器latch和触发器flip-flop的基本概念
(1)锁存器(latch)---对脉冲电平敏感,在时钟脉冲的电平作用下改变状态。
锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才会随着数据输入发生变化。
锁存器不同于触发器,它不在锁存数据时,输出端的信号随输入信号变化,就像信号通过一个缓冲器一样,如果输入端有毛刺,输出端也会带来毛刺;一旦锁存信号起锁存作用,则数据被锁住,输入信号不起作用。锁存器也称为透明锁存器,指的是不锁存时输出对于输入是透明的,输出就等于输入。
(2)触发器(flip-flop,简称FF)---对脉冲边沿敏感,其状态只在时钟脉冲的上升沿或下降沿的瞬间改变。
触发器(Flip-Flop,简写为 FF),也叫双稳态门,又称双稳态触发器(能在0和1两种状态下维持稳定)。是一种可以在两种状态下运行的数字逻辑电路。触发器一直保持它们的状态,直到它们收到输入脉冲,又称为触发。当收到输入脉冲时,触发器输出就会根据规则改变状态,然后保持这种状态直到收到另一个触发。
2. 在FPGA不使用锁存器的原因
在ASIC设计中,单个锁存器Latch消耗的门电路比触发器FF少很多,所以ASIC中使用很常见。同时,锁存器比FF快,所以用在地址锁存是很合适的。锁存器在CPU设计中很常见,正是由于它的应用使得CPU的速度比外部IO部件逻辑快许多。
a. latch是透明传输的,因此会带来毛刺,而触发器并不是透明传输的,不会带来毛刺;
b. 由于latch的结构特点,整个系统的静态时序分析会非常麻烦,所以,一般编译软件会给出警告;
c. 在FPGA中,生成一个latch需要一个逻辑单元和一个触发器,消耗的资源反而要多;
因此,在设计中,我们尽量不要使用latch。
3. 生成latch的情况
大家都知道尽量不要在设计中使用latch,但是更多情况下是我们无意间生成的latch。一般生成latch的情况有两种。
(1)if...else if...else语句中,缺了最后else语句;
(2)case语句缺了default语句;
这是很好理解的,如果出现以上两种情况,quartus编译器必须要生成一个锁存器来锁存住信号。并且,在状态机的设计中,缺少default语句会导致状态机陷入不存在的状态而引起状态机锁死,无法跳出;
参考链接:
- 触发器和锁存器的概念及FPGA中的使用
- 数电和FPGA中的触发器-20151102
- FPGA基础知识10(锁存器、触发器、寄存器和缓冲器的区别)
- 触发器的概念及作用
- 触发器的概念及作用
- Oracle触发器的概念和类型
- Oracle触发器的概念和类型
- Oracle触发器的概念和类型
- Oracle触发器的概念和类型
- 存储过程和触发器的概念(上)
- Oracle触发器的概念和类型
- 学习笔记:sql server 的触发器概念及使用(2)
- 学习笔记:sql server 的触发器概念及使用(1)
- SurfaceView的概念和优点及使用
- FPGA的触发器综合电路
- 认识FPGA触发器的亚稳态
- Oracle触发器中的:new和:old的使用
- 数据库中的事务、存储过程和触发器的简单使用
- 五行CSS实现逼真图片阴影效果
- 编程技巧系列(2)Java 集合(List,Set,Map)遍历时有条件删除特定元素
- lua递归输出表table的内容
- android多线程下载以及断点续传
- Art of Multiprocessor Programming 答案 ch16
- 触发器和锁存器的概念及FPGA中的使用
- 求数组最大k个数的问题(堆的应用)
- redis设置密码
- JAVA基础 (三)反射 深入解析反射机制
- css_div实现边框效果
- 图论算法(2)--- 如何求DAG中每一个点的所有子孙数量
- KVM虚拟机代码揭秘——QEMU代码结构分析
- 《JavaScript高级程序设计 第三版》学习笔记 (四) 对象创建详解
- php语法注意