如何在verilog中制作1个周期自上升信号?

时间:2016-10-03 14:50:15

标签: verilog

我不熟悉verilog,但我想在PKTEND信号下面做出如下操作。 你可以看到,当FLAGA下降时,这个信号会从跌落中回升。

enter image description here

我想制作PKTEND信号。 你能告诉我如何在verilog中发出这个信号吗?

module test ();

input flagA;
input flagB;
output pktend;
input clk;
input reset_n;

always @(posedge clk)
begin
if(!flagA) begin
pktend <= 1;
pktend <= 0;
pktend <= 1;
end

end



endmodule

1 个答案:

答案 0 :(得分:0)

Verilog(以及更常见的HDL)不是C - 它们(大体上)不按顺序操作。行

if(!flagA) begin
  pktend <= 1;
  pktend <= 0;
  pktend <= 1;
end

相当于

if(!flagA) begin
  pktend <= 1;
end

因为pktend的三个赋值都发生在同一个实例中。

您正在寻找的内容更类似于以下内容:

always@(posedge clk)
  flagA_prev <= flagA;

always @(negedge clk)
  if (!flagA && flagA_prev) //The flag was asserted up until now
    pktend <= 0;
  else
    pktend <= 1;

您可能需要一个额外的延迟周期才能正确匹配图表 - 我会留下让您弄明白的。我已将pktend设置为在负边缘上进行更改,以便在被外部设备捕获时在正边缘上保持稳定 - 您可能需要更改此设置,具体取决于您的应用程序要求。