Verilog d触发器电路测试

Verilog d flipflop circuit testing

我正在尝试构造一个由 d 触发器组成的电路的结构实现,它有输入 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 和状态值只是 x。当我在我的测试台中输入不同的 x 和 y 值时,没有任何反应,"state" 和 "d" 总是说它在模拟中具有值“1'hx”。为什么会发生这种情况,我如何实际为它们分配价值?

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

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

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

通常的做法是在同步或异步翻牌中引入 reset。这是同步复位触发器的示例:

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

所以,现在,如果您将重置设置为“1”至少一个 clk 姿势,然后将其设置为“0”,您将通过推送一个非 'x' 值来打破循环在数据路径中。