【问题标题】:Verilog d flipflop circuit testingVerilog d触发器电路测试
【发布时间】:2019-04-14 16:04:35
【问题描述】:

我正在尝试构建由 ad 触发器组成的电路的结构实现,它具有输入 x 和 y,x 和 y 是异或的,并且结果与当前状态是异或的,并且用作 d 触发器的输入。它会在下次运行时使用触发器的结果状态,等等。但我不太确定如何构造它。

电路如下所示:

module dff(D,clk,q);
input D,clk;
output q;
reg q;
always @ (posedge clk)
 begin
  q<=D;
 end
endmodule

我很确定 d 触发器代码是正确的,但是当我尝试对此进行测试时,由于某种原因,我的 d 和 state 值只是 x。当我在我的测试台中输入不同的 x 和 y 值时,没有任何反应,“state”和“d”总是说它在模拟中具有值“1'hx”。为什么会发生这种情况,我如何实际为它们赋值?

【问题讨论】:

  • 你确定你正在运行时钟信号吗?请将您的测试台代码添加到您的问题中,以便我们更好地帮助您

标签: testing verilog circuit flip-flop


【解决方案1】:

verilog 仿真中的所有信号都初始化为“x”。 AD 的值也是如此。您的第二个xor 应用于xoy ^ A。因为Ax,所以这个异或的结果总是x。正如 oldfart 建议的那样,你需要打破这个循环。

通常的做法是在翻牌圈引入reset,同步或异步。下面是一个同步复位触发器的例子:

always @(posedge clk)
    if (reset)
        q <= 0;
    else 
        q <= D;

所以,现在,如果您将至少一个 clk 姿态的复位设置为“1”,然后将其设置为“0”,您将通过在数据路径中推送一个非“x”值来中断循环.

【讨论】:

    【解决方案2】:

    你没有清除你的 D-FF。输出一开始是 X,当你在反馈循环中使用它时,它保持 X。

    这个:wire state=1'b0; 不会清除你的 FF。你必须清除'q'。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      相关资源
      最近更新 更多