Verilog D触发器电路测试

时间:2018-11-11 21:53:09

标签: testing verilog circuit flip-flop

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

电路看起来像这样: enter image description here

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”。为什么会发生这种情况,我实际上如何为它们分配值?

2 个答案:

答案 0 :(得分: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”值来打破循环。

答案 1 :(得分:0)

您不清除D-FF。开头的输出为X,并且在反馈循环中使用时,输出保持X。

此:wire state=1'b0;不会清除您的FF。您必须清除“ q”。