- /******************秒记数器, 0-9循环****************/
- /**************************************************/
- /**************************************************/
- /******************20250529************************/
- `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)
- begin
- if(~ res)
- begin
- con_t <= 0;
- s_pulse <= 0;
- s_num <= 0;
- end
- /**************************************************/ //秒计数
- else
- begin
- // if(con_t ==49_999_999)
- //if(con_t ==frequency_clk *1000_000 -1)
- if(con_t ==frequency_clk *100 -1)
- begin
- con_t =0;
- end
- else
- begin
- con_t <=con_t +1;
- end
- 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
- end
- else
- begin
- s_num <=s_num +1;
- 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 res <=1;
- #1000 $stop;
- end
- always #5 clk <=~clk;
- endmodule
- /**************************************************/
- /**************************************************/
复制代码
|
|