Verilog实现呼吸灯效果

2023-11-08

呼吸灯的效果采用PWM调波的形式,即快速的改变每个周期的占空比(一个周期内高电平时间占一个周期时间的比值)来实现点亮到熄灭的效果。示意如下图

而关于整个波形图,用50MHz的晶振,从0开始计数到49则为1us。

而1ms是1us的1000倍,以1us为基准,从0开始计数到999则为1ms。

同理,以1ms为基准,从0开始计数到999则为1s。

cnt_en为使能信号,当其为0的时候,实现【完全熄灭】——【完全点亮】过程

当cen_en为1的时候,实现【完全点亮】——【完全熄灭】过程

下图实现的是以2s为周期,前1s实现【完全熄灭】——【完全点亮】,后1s实现【完全点亮】——【完全熄灭】。

 Verilog代码为

module breath_led
#(
	parameter CNT_1US_MAX=6'd49,
	parameter CNT_1MS_MAX=10'd999,
	parameter CNT_1S_MAX=10'd999
)
 (
	input wire sys_clk,
	input wire sys_rst_n,
	output reg led_out	
    );
	
	reg [5:0]cnt_1us;
	reg [9:0]cnt_1ms;
	reg [9:0]cnt_1s;
	reg cnt_en;
	
always@(posedge sys_clk or negedge sys_rst_n)//1us计数器的波形变化过程
	if(sys_rst_n==1'b0)
		cnt_1us<=6'd0;
	else if(cnt_1us==CNT_1US_MAX)
		cnt_1us<=6'd0;
	else
		cnt_1us<=cnt_1us+6'd1;

always@(posedge sys_clk or negedge sys_rst_n)//1ms计数器的波形变化过程
	if(sys_rst_n==1'b0)
		cnt_1ms<=10'd0;
	else if((cnt_1ms==CNT_1MS_MAX)&&(cnt_1us==CNT_1US_MAX))
		cnt_1ms<=10'd0;
	else if((cnt_1us==CNT_1US_MAX))
		cnt_1ms<=cnt_1ms+10'd1;
	else
		cnt_1ms<=cnt_1ms;
			
always@(posedge sys_clk or negedge sys_rst_n)//1s计数器的波形变化过程
	if(sys_rst_n==1'b0)
		cnt_1s<=10'd0;
	else if((cnt_1ms==CNT_1MS_MAX)&&(cnt_1us==CNT_1US_MAX)&&(cnt_1s==CNT_1S_MAX))
		cnt_1s<=10'd0;
	else if((cnt_1ms==CNT_1MS_MAX)&&(cnt_1us==CNT_1US_MAX))
		cnt_1s<=cnt_1s+10'd1;
	else
		cnt_1s<=cnt_1s;
			
always@(posedge sys_clk or negedge sys_rst_n)//呼吸灯的两个状态
	if(sys_rst_n==1'b0)
		cnt_en<=1'b0;
	else if((cnt_1ms==CNT_1MS_MAX)&&(cnt_1us==CNT_1US_MAX)&&(cnt_1s==CNT_1S_MAX))
		cnt_en<=~cnt_en;
	else
		cnt_en<=cnt_en;
			
always@(posedge sys_clk or negedge sys_rst_n)//LED灯的效果
	if(sys_rst_n==1'b0)
		led_out<=1'b1;
	else if((cnt_en==0)&&(cnt_1ms<=cnt_1s)||(cnt_en==1)&&(cnt_1ms>cnt_1s))
		led_out<=1'b0;
	else
		led_out<=1'b1;
endmodule

 仿真测试代码如下

`timescale 1ns / 1ns

module tb_breath_led();
reg sys_clk;
reg sys_rst_n;
wire led_out;

initial
 begin
	sys_clk=1'b1;
	sys_rst_n<=1'b0;
	#20
	sys_rst_n<=1'b1;
 end
 always #10 sys_clk=~sys_clk;
 
 breath_led
#(
.CNT_1US_MAX(6'd4),
.CNT_1MS_MAX(10'd9),
.CNT_1S_MAX(10'd9)//仿真测试的过程中将初值设置小一点
)
 breath_led_inst(
.sys_clk(sys_clk),
.sys_rst_n(sys_rst_n),
.led_out(led_out)	
    );

endmodule

vivado仿真波形图

三个计数器的计数波形 

使能端和呼吸效果

注:LED灯为低电平点亮,高电平熄灭。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Verilog实现呼吸灯效果 的相关文章

  • 在vivado中使用tcl脚本(UG894)

    本文源自UG894 主要介绍如何在vivado中使用tcl脚本 1 vivado中如何获取tcl help vivado中任何自带的命令都可以通过 help 获取帮助信息 也可以直接输入 help 取得vivado命令合集 并通过 help
  • 平头哥(T-Head )开源RISCV处理器OpenC906 RTL仿真

    在过去的几年里 阿里集团平头哥陆续推出了几款RISCV处理器 有些处理器已经在产业界得到了应用 比如在某志的D1处理器中 就嵌入了平头哥的玄铁C906内核为 芯 RISCV虽然是一个开放标准 并且网络上也不乏一些开源核的RTL实现 但是商用
  • HDLBits — Verilog Practice(每日一题)

    HDLBits Verilog Practice 每日一题 一 Getting Started 1 Getting Started 一 Getting Started 1 Getting Started 问题描述 Build a circu
  • Verilog中forever、repeat、while、for四类循环语句(含Verilog实例)

    当搭建FPGA逻辑时 使用循环语句可以使语句更加简洁易懂 Verilog中存在四类循环语句 如标题 几种循环语句的具体介绍和用法如下 1 forever 连续的执行语句 语法格式 forever
  • MIPI D-PHY介绍(二) FPGA

    MIPI D PHY介绍 二 FPGA 随着移动设备的广泛普及 MIPI D PHY作为其最主要的物理层标准之一 被越来越多地使用在各种嵌入式系统中 本文将详细介绍MIPI D PHY的工作原理和在FPGA设计中的实现方法 MIPI D P
  • 【FPGA入门】第八篇、FPGA驱动VGA实现动态图像移动

    目录 第一部分 实现效果 第二部分 动态VGA显示的原理 1 将动态显示的区域提前进行赋值 2 图像块的移动是每张图片叠加后的效果 3 如何实现图像块位置的改变 第三部分 系统结构和驱动波形 1 系统的Top down结构 2 图像块移动的
  • 紫光同创 FPGA 开发跳坑指南(三)—— 联合 Modelsim 仿真

    Modelsim 是 FPGA 开发中重要的 EDA 设计仿真工具 主要用于验证数字电路设计是否正确 紫光 Pango Design Suite 开发套件支持联合 Modelsim 仿真 这里作简要的介绍 添加仿真库 方法一 打开 Pang
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • DEBUG:Generate Bitstream失败

    问题 约束失败 解决 确保IO初始化引脚正确 和选择合适的电平
  • MOS管的知识,看这一篇就可以了

    转载 21ic电子网 2020 11 15 18 19 以下文章来源于记得诚电子设计 作者记得诚 记得诚电子设计 分享电子硬件知识 永远相信美好的事情即将发生 今天的文章简单总结一下MOS管 如下是本文目录 场效应管分类 场效应管分为结型
  • 小梅哥Xilinx FPGA学习笔记9——语法(阻塞与非阻塞赋值)

    阻塞赋值与非阻塞赋值详解 注意 阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 非阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 注意 阻塞赋值与非阻塞赋值 只有在时序逻辑中才有 不是阻塞赋值 也不是非阻塞赋值
  • IC数字后端

    在 innovus 里面 有时候我们需要控制 tie cell 的 fanout 和 net length 来避免 tie cell 可能出现 max transition 或者 max fanout 的违例 一般来说 只要 fanout
  • [HDLBits] Exams/ece241 2014 q7a

    Design a 1 12 counter with the following inputs and outputs Reset Synchronous active high reset that forces the counter
  • PAJ7620U2手势识别——配置0x00寄存器(3)

    文章目录 前言 一 为啥要配置0x00寄存器 二 配置步骤 1 单个读操作步骤图 2 模块状态转移图绘制 3 模块波形图绘制 4 上板验证 5 参考代码 总结 前言 在前面的教程中 小编带领各位读者学习了如何通过I2C协议去唤醒PAJ762
  • 【电子技术】什么是LFSR?

    目录 0 前言 1 数学基础 1 1 逻辑异或 1 2 模2乘法 和 模2除法 2 线性反馈移位寄存器LFSR 3 抽头和特征多项式 4 阶线性反馈移位寄存器实例 0 前言 线性反馈移位寄存器 Linear Feedback Shift R
  • 硬核 | 从零制作一个激光雷达需要多久?

    编辑 ADS智库 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 硬件交流 技术交流群 本文只做学术分享 如有侵权 联系删文 激光雷达 LiDAR 是激光探测及测距系统的简称 目前广泛应用在无
  • 时序约束理解

    异步配置信息 跨时钟域 配置信息一般set max delay按照3delay来约束 2 异步回读 rst clear信号 设置set false path 放松时序约束要求 不应分析设计中的逻辑路径 因为不关心点到点时序要求
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • MINI-UTDE 10 BASE-T 集成控制器

    MINI UTDE 10 BASE T 集成控制器 MINI UTDE 10 BASE T 拥有多达三个本地I O板和远程I OS总线通信 为用户提供了一系列生产单元功能的单一控制点 包括诸如夹头 反馈器和辅助机器等外围生产设备 支持所有主
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步

随机推荐

  • Idea 打开 RunDashboard (完整)

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net sheinenggaosuwo article details 86624759 Ho
  • (详细图解)通过VMware安装centOS系统并进行开机配置(小白版)

    一 VMware的版本及选择 VMware ESX Server ESX本身为一操作系统 不需要宿主操作系统 它本身就是一个操作系统 用来管理硬件资源 所有的系统都安装在它的上面 带有远程web管理和客户端管理功能 VMware GSX S
  • 最近用了一个免费的服务器

    最近看到一个免费的服务器阿贝云 声称是永久免费使用的 有免费虚拟主机 也有免费的云服务器 带宽也不错 下载基本峰值能达到10M s
  • Android学习之完整的注册登录Demo(APP端+服务器端)

    因比赛或者项目需要 写了几个小打小闹的APP 有的处于 单机 状态 有的处于 半联网 状态 觉得学习有点操之过急 所以先缓一缓 梳理一下之前所学的知识 将之前做的一些小玩意儿 整理出来写成博客 第一篇便是大部分APP都具有的注册登录系统 代
  • 15款最好用的思维导图(心智图 )工具

    原文地址 http www linuxidc com Linux 2015 01 111807 htm 思维导图也叫心智图 是一项流行的全脑式学习方法 用来表示词 思路 任务或其他与围绕着一个中央关键词或想法项目的示意图 通过径向 图形和非
  • 【控制】基于PID实现水箱控制系统matlab代码

    1 内容介绍 计算机控制技术 课程是电气信息类专业的主干课程之一 实验教学是该课程教学的重要组成部分 本实验项目以水箱液位为控制参量 设计了包括系统硬件 基于Matlab的控制界面 PID控制程序等内容的 计算机控制技术 实验方案 通过教学
  • 二叉树:总结篇(需要掌握的二叉树技能都在这里了)

    二叉树 总结篇 需要掌握的二叉树技能都在这里了 二叉树的理论基础 二叉树的遍历方式 1 深度优先遍历 2 广度优先遍历 求二叉树的属性 1 是否对称 2 求最大深度 3 求最小深度 4 求有多少个节点 5 是否平衡 6 找所有路径 7 递归
  • 剑指offer_第20题_包含min函数的栈_Python

    题目描述 定义栈的数据结构 并在该类型中实现一个能够得到栈中所含最小元素的min函数 时间复杂度应为O 1 理解 什么是栈 算法复杂度 解题思路 思路1 class Solution def init self self stack sel
  • ant.design的input框同时绑定onBlur和onPressEnter事件且方法为同一个方法后的结果

    ant design的input框同时绑定onBlur和onPressEnter事件且方法为同一个方法后的结果 前几天在做项目时碰到了这么一件事 就是在input上面同时绑定onBlur事件和onPressEnter 而且这两个事件还同时使
  • Python爬虫实战案例——第二例

    某某美剧剧集下载 从搜索片名开始 本篇文章主要是为大家提供某些电影网站的较常规的下载电影的分析思路与代码思路 通过爬虫下载电影 我们会从搜索某部影片的关键字开始直到成功下载某一部电影 地址 aHR0cHM6Ly93d3cuOTltZWlqd
  • esp32 SPIFFS的使用

    读取方法 include FS h include SPIFFS h include AutoFile h void File Init SPIFFS begin true 挂载 时间较长 void contentWrite String
  • 目标检测 - 主流算法介绍 - 从RCNN到DETR

    目标检测是计算机视觉的一个非常重要的核心方向 它的主要任务目标定位和目标分类 在深度学习介入该领域之前 传统的目标检测思路包括区域选择 手动特征提取 分类器分类 由于手动提取特征的方法往往很难满足目标的多样化特征 传统方法始终没能很好的解决
  • Inno Setup 添加管理员权限

    1 在 Setup 节点添加 PrivilegesRequired admin 2 在Inno Setup的安装目录下有个SetupLdr e32文件 用exescope打开 然后在十六进制区域编辑 在右边ASCII显示区域无法编辑 修改到
  • 关于新版vscode的ul>li*3等,不提示快捷方式解决方法

    到文件首选项的设置里搜索emmet 然后找到Emmet Use Inline Completions 勾选上就可以了 快捷方式 如ul gt li 3 加上tab键 注意按enter键无效
  • MKL——常用函数说明

    Intel MKL 全称 Intel Math Kernel Library 提供经过高度优化和大量线程化处理的数学例程 面向性能要求极高的科学 工程及金融等领域的应用 MKL是一款商用函数库 提供C Fortran 和 Fortran 9
  • 以太坊的企业系统集成

    最流行的开源Java集成库 Apache Camel现在支持以太坊的JSON RPC API 以太坊生态系统 以太坊是一个开源 公共 区块链平台 用于运行智能合约 它提供了一个去中心化的图灵完备虚拟机 可以执行脚本和加密货币 用于补偿参与者
  • Android 根目录下和应用目录下的build.gradle的详解,以及groovy语法的讲解

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 前言 Gradle的作用 打apk包 打插件包 自动化构建 多渠道打包 自动化签名 后台java打包 生成文件 使用的是groovy语法
  • 数据中台-数据安全管理-11

    文章目录 数据安全管理 11 1 数据安全面临的调整 11 1 1 数据安全问题带来的4大损害 11 1 2 法律和政策背景 11 1 3 数据安全的4大技术挑战 1 平台安全 2 服务安全 3 数据本身的安全 4 APT攻击防御 11 1
  • 华为OD机试 - 阿里巴巴找黄金宝箱(I)(Java)

    题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上 无意中发现了强盗集团的藏宝地 藏宝地有编号从0 N的箱子 每个箱子上面贴有一个数字 箱子中可能有一个黄金宝箱 黄金宝箱满足排在它之前的所有箱子数字和等于排在它之后的所有箱子数字之和 第一个箱子
  • Verilog实现呼吸灯效果

    呼吸灯的效果采用PWM调波的形式 即快速的改变每个周期的占空比 一个周期内高电平时间占一个周期时间的比值 来实现点亮到熄灭的效果 示意如下图 而关于整个波形图 用50MHz的晶振 从0开始计数到49则为1us 而1ms是1us的1000倍