我總是有2個塊,一個用於計數已經通過異步復位的時鐘週期數,另一個用於觸發某些輸入信號的復位信號。如何在Verilog中重置復位信號?
[email protected](posedge clock or posedge reset)
begin: ClockCounter
if(reset == 1)
begin
clock_cnt = 1;
end
else
begin
clock_cnt = clock_cnt + 1;
end
end
[email protected](negedge pulse_in)
begin: Receiver
negedge_cnt = negedge_cnt + 1;
reset = 1;
.......Code goes on
end
end module
我想要做的是設置復位信號爲0,一旦clock_cnt已經被重置爲1,因此可以繼續在接下來的時鐘週期計算的是什麼。如果我嘗試插入一個reset = 0;在clock_cnt = 1之後;對於同一信號,我遇到了多個驅動程序的問題。有誰知道如何做到這一點?
謝謝你的信息響應。唯一的問題是輸入pulse_in完全獨立於系統時鐘。重置信號去了哪裏? –
@fatballs復位信號仍然存在,但現在正在使用clr信號來重置計數器。如果你的輸入脈衝持續時間比你的時鐘週期短,你需要某種更高速度的時鐘來檢測它;如果它持續一個時鐘週期或更長的時間,可以使用時鐘對其進行採樣,但是您需要將其同步(請參閱此解釋,從我的快速掃描中看起來很好:https://www.doulos.com/knowhow/fpga/synchronization /) – Unn