当前位置: 首页 > news >正文

呼吸灯【FPGA】

晶振50Mhz

1us 等于 计0~49

1ms等于  0~999us

1s等于  0~999ms

//led_outalways@(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;

//======================================================
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~49reg 	[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 ;//usalways@(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;endelse if(cnt_1us == CNT_1US_MAX)// 0~49cnt_1us <= 6'b0;else cnt_1us <= cnt_1us + 6'b1 ;//msalways@(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;endelse 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//salways@(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;endelse 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_enalways@(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;endelse 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_outalways@(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//

http://www.lryc.cn/news/215804.html

相关文章:

  • Codeforces 1855E 数学期望 + DP
  • 5-1CComplex运算符重载为友元
  • Vue3.0 watch和watchEffect监听器:VCA
  • 1360. 日期之间隔几天
  • ubuntu配置 Conda 更改默认环境路径
  • 华山编程培训中心——工业相机飞拍
  • linux 释放缓存命令并做成定时任务
  • 求解一个整数中含多少个1
  • js编写一个函数判断所有数据类型
  • Python对于时间相关模块的学习记录(time,datetime等模块)
  • 【C#】获得所有可见窗口信息
  • ffmpeg的基本功能介绍
  • QECon大会亮相产品,支持UI自动化测试?RunnerGo
  • Linux开关机相关的命令解析
  • C++二分查找算法的应用:俄罗斯套娃信封问题
  • redis如何保证和mysql数据的一致性
  • SpringBoot整合Redisson,赶紧整起来!
  • 测试Whisper效果
  • Seata 四种事务模式
  • 超好用的IDEA插件推荐,写完代码直接调试接口
  • 发送post请求、携带cookie、响应对象、高级用法
  • JMeter接口测试性能测试
  • MongoDB——MongoDB删除系统自带的local数据库
  • 【LeetCode刷题-链表】--203.移除链表元素
  • Microsoft Dynamics 365 CE 扩展定制 - 3. SDK企业功能
  • 人工智能基础_机器学习016_BGD批量梯度下降求解多元一次方程_使用SGD随机梯度下降计算一元一次方程---人工智能工作笔记0056
  • 硬件测试(二):波形质量
  • PostgreSQL 数据库日志相关参数
  • delete请求,express获取req.body失败
  • 2023年江西省职业院校技能竞赛“网络安全”赛项样题