breath_led——呼吸灯verilog程序

呼吸灯是利用人的视觉图像滞留效应,控制led灯的通过电流以控制led灯的亮灭程度,从而实现呼吸灯的效果。归根结底,需要控制led灯两端电压,实现占空比(高电平时长)如同呼吸一样的消长。
附上Verilog程序:

module breath_led(
    input   	 sys_clk,
    input   	 rst_n,
    output reg   led
    );
    
reg flag;   //控制呼or吸
reg [13:0]  cnt; 
reg [13:0]  breath_time;
always  @ (posedge sys_clk or negedge rst_n)begin
	if(!rst_n)begin
		cnt <= 14'b0;
		breath_time <= 14'b0;
		flag <= 1'b0;
	end
	else
		if(cnt < 14'd10000)
			cnt <= cnt + 1'b1;
		else begin
			cnt <= 14'b0;
			if(breath_time < 14'd10000 && flag==0 )
				breath_time <= breath_time +1'b1;
			else if(breath_time > 14'd0 && flag==1)
				breath_time <= breath_time - 1'b1;
			else 
				flag <=~flag;
		end
end   
always  @ (posedge sys_clk or negedge rst_n)begin
	if(!rst_n)
		led <= 1'b0;
	else 
		if(cnt < breath_time)	
			led <= 1'b1;
		else
			led <= 1'b0;
end
endmodule

猜你喜欢

转载自blog.csdn.net/qq_40942280/article/details/107761509
今日推荐