`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 进行赋值

京公网安备 11010502036488号