2016-10-03 157 views
0

我对verilog并不熟悉,但是我想要制作下面的PKTEND信号。正如你所看到的那样,当FLAGA下跌时,这个信号会从跌落中回升。如何在verilog中创建1个周期自上升信号?

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 
+0

只能更改值每'posedge一次clk'尝试一些更接近'PKTEND <=〜PKTEND;' – Morgan

回答

0

Verilog(和更一般的HDL)不是C - 它们(大体上)不以顺序方式操作。因为三个分配到pktend都发生在同一时间实例的线条

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

相当于

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

你要找的是什么东西,下面更类似于:

[email protected](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在下降沿进行更改,以便在被外部设备捕获时在正边沿保持稳定 - 您可能需要根据应用要求更改此设置。