2016-10-03 126 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在下降沿進行更改,以便在被外部設備捕獲時在正邊沿保持穩定 - 您可能需要根據應用要求更改此設置。

相關問題