`timescale 1ns/1ns module count_module( input clk, input rst_n, input mode, output reg [3:0]number, output reg zero ); reg [3:0] num ; //num always@(posedge clk or negedge rst_n)begin if(!rst_n) num <= 'd0 ; else if(mode == 1'b1)begin if(num == 'd9) num <= 'd0 ; else num <= num + 1'b1 ; end else begin if(num == 'd0) num <= 'd9 ; else num <= num - 1'b1 ; end end //zero always@(posedge clk or negedge rst_n)begin if(!rst_n) zero <= 1'b0 ; else if(num == 'd0) zero <= 1'b1 ; else zero <= 1'b0 ; end //number always@(posedge clk or negedge rst_n)begin if(!rst_n) number <= 'd0 ; else number <= num ; end endmodule
同样的 如果实用reg 型的zero 需要对 num 打一拍进行缓存 然后才生成 number 如果是wire 型 直接可以用assign 语句 对number == 0 进行赋值