You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

赋值条件未完全指定推断出锁存器,为何依赖时钟电平?无时钟时如何判断敏感电平?

Verilog锁存器推断的常见疑问解答

先纠正一个关键误解

你举的这个例子里推断出的是电平敏感透明锁存器,它根本不依赖外部时钟信号——你大概率是把锁存器和边沿触发器的特性搞混了。只有边沿触发器才需要时钟边沿触发,而电平锁存器的行为完全由代码里的控制信号电平决定,和时钟没关系。

你的示例代码到底在干什么?

看这段代码:

always @*
  if (in) q=d;
  • 当in是高电平时,q会实时跟着d变(这时候锁存器是“透明”的,相当于直通);
  • 当in是低电平时,q会死死保持之前的数值,不管d怎么变——这就是锁存器的“保持”功能。
    这里的控制信号是in,不是什么时钟,代码里没时钟,这个锁存器也不需要时钟。

为啥会觉得它依赖时钟?

多半是把锁存器和触发器搞混了:

  • 边沿触发器(比如常用的D触发器)得用always @(posedge clk)这种时钟触发的块来写,输出只在时钟的上升/下降沿更新;
  • 而电平锁存器是在组合逻辑块(always @*)里,因为赋值条件没写全(比如没写else分支)才推断出来的,它的控制信号是代码里的条件变量,不是时钟。

怎么判断锁存器对哪种电平敏感?

看控制信号的有效条件:

  • 你写的if (in),意思是in高电平的时候锁存器透明,低电平保持,所以这是高电平敏感的锁存器;
  • 如果改成if (!in) q=d;,那就是低电平敏感——in低电平时直通,高电平时保持数值。

内容的提问来源于stack exchange,提问作者Dzx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:30:20