verilog中为啥锁存器要在电平触发方式下生成

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog中为啥锁存器要在电平触发方式下生成相关的知识,希望对你有一定的参考价值。

参考技术A 如果是之中出发下,那么就叫FF 寄存器。
如果不是触发,那么就是组合逻辑电路。本回答被提问者采纳

verilog中的latch到底是个啥??简直快疯了!!!!!

在很多地方都能看到,verilog中if与case语句必须完整,即if要加上else,case后要加上default语句,以防止锁存器的发生,接下来就来说说其中原因。

  一,什么是锁存器?锁存器与触发器的区别。

  锁存器与触发器最大的区别在于,锁存器是电平触发,而触发器是边沿触发。锁存器在不锁存数据时,输出随输入变化;但一旦数据锁存时,输入对输出不产生任何影响。

二,为什么语句的不完整会导致锁存器的产生?

  语句不完整即有某些情况的输入对输出无任何影响,根据锁存器的特征,反映到硬件电路即会产生锁存器。

  举例说明:

 

 

技术分享

 

                              图一                                                                            

 技术分享

图二

  这是一段简单的组合逻辑代码。图一是缺少default的case语句,图二是完整的case语句。

 图一综合后的的RTL级电路为

 

  即产生了锁存器,而且ISE也会给出警告:

 

而图二完整的case语句综合后的RTL级电路为:

 

 

产生的是普通的门电路,且警告消失。

三,为什么要避免产生锁存器?

关于这个问题,我在网上看到很多资料说是因为锁存器对毛刺敏感。但其实不是这个原因,因为在组合电路中,即便语句完整了,也会对毛刺敏感。而如果你加一个时钟变为时序电路的话,即便你的语句不完整,产生了锁存器(其实在时序电路中,即便语句不完整,也不会产生锁存器),那么也不会对毛刺敏感。

真正的原因在于FPGA中根本没有锁存器这种东西,也就是说,如果你产生了锁存器的话,将耗费更多的资源来构成它。

转载自:https://zhidao.baidu.com/question/2053479616852574707.html

以上是关于verilog中为啥锁存器要在电平触发方式下生成的主要内容,如果未能解决你的问题,请参考以下文章

verilog里面always 与reg分别代表啥意思,有啥功用?为啥只对输出用reg,对输入不用?

verilog中的latch到底是个啥??简直快疯了!!!!!

verilog中的latch到底是个什么??简直快疯了!!!!!

时序电路—之锁存器

11.Verilog中如何避免Latch

FPGA基础知识锁存器触发器寄存器和缓冲器的区别