呼吸灯【FPGA】

晶振50Mhz

1us 等于 计0~49

1ms等于 0~999us

1s等于 0~999ms

cs 复制代码
//led_out
	always@(posedge FPGA_CLK_50M_b5 or negedge reset_e8) //【死循环】@敏感【触发条件:上升沿 clk】【运行副本】
        if(reset_e8==1'b0)begin        //50Mhz晶振,   49_999_999 是 1秒1次
            led_out <= 1'd0;
             end
			 //  cnt_en低电平     灯亮条件【1ms和1s比较值】
		else if((cnt_en == 1'b0 ) && (cnt_1ms <= cnt_1s)   ||
		        (cnt_en == 1'b1 ) && (cnt_1ms >= cnt_1s ))// s满,
				led_out <= 1'b1;
        else    led_out <= 1'b0;

	assign led1_d15 = led_out;
cs 复制代码
//======================================================
module sleep_led    // 模块名字,参数,方法体
#(
	parameter CNT_1US_MAX =  6'd49	,
	parameter CNT_1MS_MAX = 10'd999	,
	parameter CNT_1S_MAX  = 10'd999	

)
(
    input  FPGA_CLK_50M_b5,
	input  reset_e8,
    input  key1_k18,
    input  key2_n17,
    input  key3_n18,
    input  key4_h17,
//
    output led1_d15,
    output led2_c15,
    output led3_a12,
    output led4_b12,

output beep_h13   //【注】最后一个参数不加逗号
);
//【】以下是变量

//
	reg		[5:0]  cnt_1us;// 50Mhz晶振, 0~49
	reg 	[9:0]  cnt_1ms;
	reg 	[9:0]  cnt_1s;
	reg 	[0:0]  cnt_en;
	reg 	[0:0]  led_out;

   
//【】以下是方法体,FPGA的特性是程序都是并联运行。

    //assign {led1_d15,led2_c15,led3_a12,led4_b12} = {~key1_k18,~key2_n17,~key3_n18,~key4_h17};  //key1_k18  +key2_n17 + key3_n18 +key4_h17 ;



	//us
    always@(posedge FPGA_CLK_50M_b5 or negedge reset_e8) //【死循环】@敏感【触发条件:上升沿 clk】【运行副本】
        if(reset_e8==1'b0)begin        //50Mhz晶振,   49_999_999 是 1秒1次
           cnt_1us <= 6'b0;
		   
		   // cnt_en <= 1'b0;
           end
		else if(cnt_1us == CNT_1US_MAX)// 0~49
				cnt_1us <= 6'b0;
        else 
             cnt_1us <= cnt_1us + 6'b1 ;
    //ms
	always@(posedge FPGA_CLK_50M_b5 or negedge reset_e8) //【死循环】@敏感【触发条件:上升沿 clk】【运行副本】
         if(reset_e8==1'b0)begin        //50Mhz晶振,   49_999_999 是 1秒1次
            cnt_1ms <= 10'd0;
             end
		 else if((cnt_1ms == CNT_1MS_MAX ) && (cnt_1us == CNT_1US_MAX))// ms满,
				cnt_1ms <= 10'd0;
         else if(cnt_1us == CNT_1US_MAX)
                 cnt_1ms <= cnt_1ms + 10'd1 ;// ms加1
    //s
	always@(posedge FPGA_CLK_50M_b5 or negedge reset_e8) //【死循环】@敏感【触发条件:上升沿 clk】【运行副本】
        if(reset_e8==1'b0)begin        //50Mhz晶振,   49_999_999 是 1秒1次
            cnt_1s <= 10'd0;
             end
		else if((cnt_1s == CNT_1S_MAX ) && (cnt_1ms == CNT_1MS_MAX) &&(cnt_1us == CNT_1US_MAX))// s满,
				cnt_1s <= 10'd0;
        else if((cnt_1ms == CNT_1MS_MAX)&&(cnt_1us == CNT_1US_MAX))
            cnt_1s <= cnt_1s + 10'd1 ;// s加1

//======呼吸灯条件===================
   //cnt_en
	always@(posedge FPGA_CLK_50M_b5 or negedge reset_e8) //【死循环】@敏感【触发条件:上升沿 clk】【运行副本】
        if(reset_e8==1'b0)begin        //50Mhz晶振,   49_999_999 是 1秒1次
            cnt_en <= 1'd0;
             end
		else if((cnt_1s == CNT_1S_MAX ) && (cnt_1ms == CNT_1MS_MAX) &&(cnt_1us == CNT_1US_MAX))// s满,
				cnt_en <= ~cnt_en;
        else    cnt_en <=  cnt_en;

 //led_out
	always@(posedge FPGA_CLK_50M_b5 or negedge reset_e8) //【死循环】@敏感【触发条件:上升沿 clk】【运行副本】
        if(reset_e8==1'b0)begin        //50Mhz晶振,   49_999_999 是 1秒1次
            led_out <= 1'd0;
             end
			 //  cnt_en低电平     灯亮条件【1ms和1s比较值】
		else if((cnt_en == 1'b0 ) && (cnt_1ms <= cnt_1s)   ||
		        (cnt_en == 1'b1 ) && (cnt_1ms >= cnt_1s ))// s满,
				led_out <= 1'b1;
        else    led_out <= 1'b0;

	assign led1_d15 = led_out;










	   
endmodule

//
相关推荐
XINVRY-FPGA16 小时前
XCVP1802-2MSILSVC4072 AMD Xilinx Versal Premium Adaptive SoC FPGA
人工智能·嵌入式硬件·fpga开发·数据挖掘·云计算·硬件工程·fpga
9527华安1 天前
国产安路FPGA开发设计培训课程,提供开发板+工程源码+视频教程+技术支持
fpga开发·fpga·安路·视频教程·培训·安路fpga
UVM_ERROR2 天前
硬件设计实战:解决Valid单拍采样失效问题(附非阻塞赋值与时序对齐核心要点)
驱动开发·fpga开发·github·芯片
brave and determined2 天前
可编程逻辑器件学习(day36):从沙粒到智能核心:芯片设计、制造与封装的万字全景解析
fpga开发·制造·verilog·fpga·芯片设计·硬件设计·芯片制造
步达硬件2 天前
【FPGA】FPGA开发流程
fpga开发
我爱C编程3 天前
【仿真测试】基于FPGA的完整16QAM通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
fpga开发·16qam·帧同步·卷积编码·viterbi译码·维特比译码·频偏锁定
s09071364 天前
ZYNQ DMA to UDP 数据传输系统设计文档
网络协议·fpga开发·udp
燎原星火*4 天前
QSPI IP核 基本参数
fpga开发
XINVRY-FPGA4 天前
XCVU9P-2FLGC2104I Xilinx AMD Virtex UltraScale+ FPGA
嵌入式硬件·机器学习·计算机视觉·fpga开发·硬件工程·dsp开发·fpga
FPGA_小田老师4 天前
FPGA Debug:PCIE一直自动重启(link up一直高低切换)
fpga开发·pcie debug·pcie初始化问题