用FPGA实现呼吸灯功能代码
时间:2019-09-17
本文章向大家介绍用FPGA实现呼吸灯功能代码,主要包括用FPGA实现呼吸灯功能代码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
module breathing_led_top ( input i_sys_clk, input i_sys_rst_n, output [3:0] o_led ); /* 计数器r_cnt_2us循环计数,计到99为2us */ parameter p_cnt_2us_max = 7'd100 - 1'b1; reg [7:0] r_cnt_2us = 7'b0; always @(posedge i_sys_clk or negedge i_sys_rst_n) begin if (i_sys_rst_n == 1'b0) r_cnt_2us <= 7'd0; else if(r_cnt_2us == p_cnt_2us_max) r_cnt_2us <= 7'd0; else r_cnt_2us <= r_cnt_2us + 1'b1; end /* 计数器r_cnt_2ms,每2us加一,计到999为2ms */ parameter p_cnt_2ms_max = 10'd1000 - 1'b1; reg [9:0] r_cnt_2ms = 10'b0; always @(posedge i_sys_clk or negedge i_sys_rst_n) begin if (i_sys_rst_n == 1'b0) r_cnt_2ms <= 10'd0; else if(r_cnt_2us == p_cnt_2us_max && r_cnt_2ms == p_cnt_2ms_max) r_cnt_2ms <= 10'd0; else if(r_cnt_2us == p_cnt_2us_max) r_cnt_2ms <= r_cnt_2ms + 1'b1; else r_cnt_2ms = r_cnt_2ms; end /* 计数器r_cnt_2s,每2ms加一,计到999为2s */ parameter p_cnt_2s_max = 10'd1000 - 1'b1; reg [9:0] r_cnt_2s = 10'b0; reg [3:0] r_led = 4'b0; always @(posedge i_sys_clk or negedge i_sys_rst_n) begin if (i_sys_rst_n == 1'b0) r_cnt_2s <= 10'd0; else if(r_cnt_2us == p_cnt_2us_max && r_cnt_2ms == p_cnt_2ms_max && r_cnt_2s == p_cnt_2s_max) r_cnt_2s <= 10'd0; else if(r_cnt_2us == p_cnt_2us_max && r_cnt_2ms == p_cnt_2ms_max) r_cnt_2s <= r_cnt_2s + 1'b1; else r_cnt_2s <= r_cnt_2s; end /* r_flag标志 */ reg r_flag = 1'b0; always @(posedge i_sys_clk or negedge i_sys_rst_n) begin if (i_sys_rst_n == 1'b0) r_flag <= 1'b0; else if(r_cnt_2us == p_cnt_2us_max && r_cnt_2ms == p_cnt_2ms_max && r_cnt_2s == p_cnt_2s_max) r_flag <= ~r_flag; else r_flag <= r_flag; end /* control */ always @(posedge i_sys_clk or negedge i_sys_rst_n) begin if (~i_sys_rst_n) r_led <= 4'b0000; else if (r_cnt_2s >= r_cnt_2ms && r_flag == 1'b0) r_led <= 4'b1111; else if (r_cnt_2s < r_cnt_2ms && r_flag == 1'b0) r_led <= 4'b0000; else if (r_cnt_2s >= r_cnt_2ms && r_flag == 1'b1) r_led <= 4'b0000; else if (r_cnt_2s < r_cnt_2ms && r_flag == 1'b1) r_led <= 4'b1111; else r_led <= 4'b0000; end /* 信号输出 */ assign o_led = r_led; endmodule
原文地址:https://www.cnblogs.com/ltybk/p/11535630.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- idea中下载并配置稳定版本的MAVEN,电脑环境配置 + setting.xml文件配置
- Python代码性能分析之cProfile
- 自己写一个简单的MyBatis工具类代码+注释
- 多对一和一对多
- 使用C3P0连接数据库
- QQ授权,接收代码发送的电子邮件
- c:set
- 37道Python经典面试题(附答案),看完面试不愁了
- 错误提示合集--->待增加 Σ( ° △ °|||)︴
- RabbitMQ如何保证消息的可靠投递?
- Python处理json总结
- 使用SpringMVC写一个简单的跳转界面
- 使用自定义注解,设置发送到客户端的响应的内容类型
- Python构造数据的神器库-Faker
- SpringMVC中传参date类型失败,需要@DateTimeFormat(““)