呼吸灯设计




module Breath_Led(
					input sys_clk;
					input sys_rst_n;
					
					output breath_led

);

reg led;

parameter counter_2us_max = 7'd100;
parameter counter_2ms_max = 10'd1000;
parameter counter_2s_max = 10'd1000;

reg [6:0] counter_2us;
reg [9:0] counter_2ms;
reg [9:0] counter_2s;

reg incline_decline_flag;

always@(posedge sys_clk or negedge sys_clk)begin  
	if(!sys_clk)
		counter_2us <= 7'd0;
	else if(counter_2us == counter_2us_max - 7'd1)
		counter_2us <= 7'd0;
	else if(counter_2us < counter_2us_max - 7'd1)
		counter_2us <= 7'd1 + counter_2us;
	else
		counter_2us <= counter_2us;
end


always@(posedge sys_clk or negedge sys_clk)begin
	if(!sys_clk)
		counter_2ms <= 10'd0;
	else if(counter_2ms == counter_2ms_max - 10'd1 && counter_2us == counter_2us_max - 7'd1)
		counter_2ms <= 10'd0;
	else if(counter_2us == counter_2us_max - 7'd1)
		counter_2ms <= counter_2ms + 10'd1;
	else
		counter_2ms <= counter_2ms;
end

always@(posedge sys_clk or negedge sys_clk)begin
	if(!sys_clk)
		counter_2s = 10'd0;
	else if(counter_2s == counter_2s_max - 10'd1 && counter_2ms == counter_2ms_max - 10'd1 && counter_2us == counter_2us_max - 7'd1)
		counter_2s <= 10'd0;
	else if(counter_2ms == counter_2ms_max - 10'd1 && counter_2us == counter_2us_max - 7'd1)
		counter_2s <= counter_2s + 10'd1;
	else
		counter_2s <= counter_2s;
		
always@(posedge sys_clk or negedge sys_rst_n) begin
	if(!sys_rst_n)
	inc_dec_flag <= 1'b0;
	else if(counter_2s == (counter_2s_max - 10'b1)
	&& counter_2ms ==( counter_2ms_max - 10'b1)
	&& cnt_2us == (CNT_2US_MAX - 7'b1))
	incline_decline_flag <= ~incline_decline_flag;
	else
	incline_decline_flag <= incline_decline_flag;
	end
	
	
always@(posedge sys_clk or negedge sys_rst_n) begin
	if(!sys_rst_n)
	led <= 1'b0;
	else if((incline_decline_flag == 1'b1 && counter_2ms >= counter_2s)
	|| (incline_decline_flag == 1'b0 && counter_2ms <= counter_2s))
	led <= 1'b1;
	else
	led <= 1'b0;
end	
		
		

		
endmodule









  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值