【Day12】Latch的生成条件以及如何避免(上)

什麽是 Latch ?

前几篇在 if-else 以及 case 语句时有提到 latch,那什麽是 latch 呢?

latch 又俗称"锁存器",它是以电平(High or Low)触发的一种存储单元,资料储存动作将取决於致能(enable)的电平值,当 latch 被致能时,此时输入会等於输出,也就是输出会随输入的变化而产生变化,而不被致能时,输出则与输入无关,而且保持前态。

说到这里,那麽 flip-flop 又是什麽呢?

flip-flop 跟 latch 有点类似,但是 flip-flop 是边缘触发的储存单元,也就是只有在正缘或负缘这段极短的时间内输出状态才会改变,它也就是一般我们 Verilog 中 reg 期望它综合出来的元件。

为甚麽会说是期望?因为 reg 在综合时,有时会因为撰写的程序码有瑕疵导致reg被综合成我们不期待的 latch。


为甚麽需要避免 latch?

我们再来提到亚稳态,它是指触发器在某一段时间内无法达到一个正确的值,我们又知道 "1" 到 "0" 及 "0" 到 "1" 不是完全不需要时间的,此时触发器的输出端 Q 在较长时间内处於振荡状态,且不会等於输入端 D,而这段时间也会被称做 resolution time ,而其主要原因还是要归咎於触发器不够快,无法满足 setup time/hold time,所以在输出为一个确定的值之前,它有可能是毛刺震荡或是其他不稳定的值。

再来刚刚提到 latch 被致能时,输出完全的由输入来决定,而且这段时间不是很短的,这种情形就会很危险,很容易将前一级的不稳定状态传递给後级,导致整体电路发生问题,也会让时序分析变得更加复杂。

加上 latch 在 FPGA 资源中往往需要耗更多资源来合成,耗费更多的面积,那麽以上就是我们诟病 latch 的原因。


<<:  Day 25-制作购物车之设计购物车画面

>>:  Day 12 - 下单电子凭证及Stock股票Order建立

Day05 Filebeat(三) 正则表达式

接下来这一个章节,焦点还是会在filebeat上,通常在收集log,并不是所有资料都需要收集到Ela...

[DAY 26] 分散式训练

前言 在上一章我们知道如何在一台机器上使用多张 GPU 来Training,这对我们 Train 大...

D36-铁人赛完赛心得

铁人赛完赛罗~~ 在完赛的这一刻,我发现,我获得的东西,比我写出来的东西还多。 - 除了看自己写出来...

呜咕,东西没进到口袋里 -- 探讨Json

关於货物没进到口袋这档事 回到刚才的函式,我们分为2部分,第一是如果存在,那amount的数字必须加...

RDS Alarm

对於DBA而言, 资料库除了管理, 另一项就是警示, 必要时可即时做出回应. 选取要监看的资料库, ...