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'。 A
和 D
的值也是如此。您的第二个 xor
应用于 xoy ^ A
。因为 A
是 x
,所以这个异或的结果总是 x
。你需要像 oldfart 建议的那样打破这个循环。
通常的做法是在同步或异步翻牌中引入 reset
。这是同步复位触发器的示例:
always @(posedge clk)
if (reset)
q <= 0;
else
q <= D;
所以,现在,如果您将重置设置为“1”至少一个 clk 姿势,然后将其设置为“0”,您将通过推送一个非 'x' 值来打破循环在数据路径中。
我正在尝试构造一个由 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'。 A
和 D
的值也是如此。您的第二个 xor
应用于 xoy ^ A
。因为 A
是 x
,所以这个异或的结果总是 x
。你需要像 oldfart 建议的那样打破这个循环。
通常的做法是在同步或异步翻牌中引入 reset
。这是同步复位触发器的示例:
always @(posedge clk)
if (reset)
q <= 0;
else
q <= D;
所以,现在,如果您将重置设置为“1”至少一个 clk 姿势,然后将其设置为“0”,您将通过推送一个非 'x' 值来打破循环在数据路径中。