秒记数器终于写好了- /******************秒记数器, 0-9循环****************/
- /**************************************************/
- /**************************************************/
- /******************20250610************************/
- `timescale 1ns/10ps
- module s_counter
- (
- clk,
- res,
- s_num
- );
- input clk;
- input res;
- output[3:0] s_num;
- parameter frequency_clk =24; //24MHz
- reg[24:0] con_t; //秒脉冲分频计数器;
- reg s_pulse; //秒脉冲尖;
- reg [3:0] s_num;
- /**************************************************/
- always@(posedge clk or negedge res)
- if(~res)
- begin
- con_t <=0;
- s_pulse <=0;
- s_num <=0;
- end
- /**************************************************/
- else
- begin
- //if(con_t ==24000000-1)
- //if(con_t ==frequency_clk*1000_000 -1)
- if(con_t ==frequency_clk-1)
- begin
- con_t <=0;
- end
- else
- begin
- con_t <=con_t +1;
- end
- /**************************************************/ //秒脉冲尖
- if(con_t ==0)
- begin
- s_pulse <=1;
- end
- else
- begin
- s_pulse <=0;
- end
- /**************************************************/
- if(s_pulse)
- begin
- if(s_num ==9)
- begin
- s_num <=0;
- end
- else
- begin
- s_num <=s_num+1;
- end
- end
- /**************************************************/
- end
- /**************************************************/
- endmodule
- /*************testbench of s_counter***************/
- module s_counter_tb;
- reg clk,res;
- wire[3:0] s_num;
- s_counter s_counter
- (
- .clk(clk),
- .res(res),
- .s_num(s_num)
- );
- initial
- begin
- clk <=0;
- res <=0;
- #17 clk <=1;
- res <=1;
- #1000 $stop;
- end
- always #5 clk <=~clk;
- endmodule
- /**************************************************/
- /**************************************************/
|