我是靠谱客的博主 老实大地,最近开发中收集的这篇文章主要介绍D触发器和锁存器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

时序逻辑的一般设计规则是:

在绝大多数设计中避免产生latch(锁存器)。它会让您设计的时序完蛋,并且它的隐蔽性很强,非老手不能查出。latch最大的危害在于不能过滤毛刺。这对于下一级电路是极其危险的。所以,只要能用D触发器的地方,就不用latch。

钟控D触发器其实就是D锁存器,边沿D触发器才是真正的D触发器,钟控D触发器在使能情况下输出随输入变化,边沿触发器只有在边沿跳变的情况下输出才变化。

两个锁存器可以构成一个触发器,归根到底还是dff是边沿触发的,而latch是电平触发的。锁存器的输出对输入透明的,输入是什么,输出就是什么,这就是锁存器不稳定的原因,而触发器是由两个锁存器构成的一个主从触发器,输出对输入是不透明的,必须在时钟的上升/下降沿才会将输入体现到输出,所以能够消除输入的毛刺信号。


always块可以表示时序逻辑或者组合逻辑,也可以用always块既表示电平敏感的透明锁存器又

同时表示组合逻辑。但是不推荐使用这种描述方法,因为这容易产生错误和多余的电平敏感的透明锁存器。

如果要为电平敏感的锁存器建模,使用连续赋值语句是最简单的方法。

例:

input a,b,c;

reg e,d;

always @(a or b or c) begin

e =d & a & b;

end

/* 因为d没有在敏感电平列表中,所以d变化时,

e不能立刻变化,要等到a或b或c变化时才体现出来,

这就是说实际上相当于存在一个电平敏感的透

明锁存器在起作用, 把d信号的变化锁存其中 */

应更改为 

用assign赋值: assign e = d&a&b; 

always @(*) begin

e =d & a & b;

end








最后

以上就是老实大地为你收集整理的D触发器和锁存器的全部内容,希望文章能够帮你解决D触发器和锁存器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部