【问题标题】:How does a sensitivity list work in circuit level?灵敏度列表如何在电路级工作?
【发布时间】:2019-09-27 12:23:33
【问题描述】:

假设有一个这样运行的代码

reg [4:0] data; 
always @ (posedge clk, posedge clr)
    begin
        if(clr)
             data <= 0;
        else
             data <= data +1;
    end

这在电路级别会是什么样子?我的猜测大致是

但是如果 Clk 从 0 变为 1 而 Clr 为 1,那将无济于事......

另外,在敏感度列表中包含多个元素是一种好习惯吗?据我所知,这里有一些开销..

【问题讨论】:

  • 请注意,异步控制(此处为 CLR)永远不会门控时钟,它将直接驱动,无需 OR2。您的部分困惑可能是用posedge 描述了clear,但这基本上是语言的限制。

标签: verilog clock


【解决方案1】:

Verilog 摘录将推断带有异步复位的 DFF(D 触发器)。这是因为复位信号是灵敏度列表的一部分。

注意 1:根据 Verilog 的 LRM,将重置添加到敏感度列表是使重置异步的原因。

注意 2:每个 Verilog 程序块应该只模拟一种类型的触发器。换句话说,设计人员不应在同一个程序块中混合可复位(同步或异步)触发器和跟随触发器(没有复位的触发器)。

您的图表不正确,“clr”信号将连接到称为 CLEAR 的 DFF 的额外输入(它基本上是异步复位)。我建议从某种 Verilog 教程开始,这是非常基本的东西,并且在通常可用的材料中得到了很好的解释。为了掌握 HDL 代码中复位的概念,我推荐以下材料: http://www.sunburst-design.com/papers/CummingsSNUG2003Boston_Resets.pdf

【讨论】:

    【解决方案2】:

    原理图不准确。 4 D-FF 将对声明的每一位数据执行。 将重置(即 clr)添加到敏感度列表将使 ckt 异步(Verilog LRM)。 D-FF 将有一个额外的清除引脚,当您的复位(即 clr)处于高电平有效时,该引脚不会有气泡。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多