在了解您的 clk 和 clk1 是从按钮输入的情况下,您需要给出自己clk
和clk1
更好的名称。对于这个答案的其余部分,我将它们称为btn1
和btn2
。您还需要配置一个足够快的时钟来捕捉这些按钮按下。
按钮输入通常需要去抖动或至少进行边缘检测,因此对于给定的按钮按下,您只需增加一次。
//Button 1 meta stability
logic [2:0] meta_edge_det_btn1;
always @(posedge clk) begin
meta_edge_det_btn1 <= {meta_edge_det_btn1[1:0], btn1} ;
end
//button 1 Positive edge detection
logic btn1_rise;
always @* begin
btn1_rise = meta_edge_det_btn1[1] & ~meta_edge_det_btn1[2];
end
logic [2:0] meta_edge_det_btn2;
always @(posedge clk) begin
meta_edge_det_btn2 <= {meta_edge_det_btn2[1:0], btn2} ;
end
logic btn2_rise;
always @* begin
btn2_rise = meta_edge_det_btn2[1] & ~meta_edge_det_btn2[2];
end
//Increment if either of the buttons has been pressed
always @ (posedge clk) begin
if (btn1_rise | btn2_rise ) begin
acc <= acc+1;
end
end