fpga_pwm呼吸灯(EP4CE6F17C8)

news/2025/1/21 18:12:45/

文章目录

  • 一、呼吸灯
  • 二、代码实现
  • 三、引脚分配


一、呼吸灯

呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化,使用开发板上的四个led灯实现1s间隔的呼吸灯。

二、代码实现


```c
module pwm_led( input				clk		,input				rst_n	,output reg [3:0]    led
);								 
parameter CNT_US = 6'd49;//50x20=1000ns=1us
parameter CNT_MS = 10'd999;//1usx1000=1ms
parameter CNT_S  = 10'd999;//1msx1000=1sreg [5:0] cnt_us;
wire      add_cnt_us;
wire      end_cnt_us;reg [9:0] cnt_ms;
wire      add_cnt_ms;
wire      end_cnt_ms;reg [9:0] cnt_s;
wire      add_cnt_s;
wire      end_cnt_s;reg flag;//闪烁标志
always @(posedge clk or negedge rst_n)begin if(!rst_n)begincnt_us <= 0;end else if(add_cnt_us)begin if(end_cnt_us)begin cnt_us <= 0;endelse begin cnt_us <= cnt_us + 1;end endelse  begincnt_us <= cnt_us;end
end assign add_cnt_us = 1'd1;
assign end_cnt_us = add_cnt_us && cnt_us == CNT_US;always @(posedge clk or negedge rst_n)begin if(!rst_n)begincnt_ms <= 0;end else if(add_cnt_ms)begin if(end_cnt_ms)begin cnt_ms <= 0;endelse begin cnt_ms <= cnt_ms + 1;end endelse  begincnt_ms <= cnt_ms;end
end assign add_cnt_ms = end_cnt_us;
assign end_cnt_ms = add_cnt_ms && cnt_ms == CNT_MS;always @(posedge clk or negedge rst_n)begin if(!rst_n)begincnt_s <= 0;end else if(add_cnt_s)begin if(end_cnt_s)begin cnt_s <= 0;endelse begin cnt_s <= cnt_s + 1;end endelse  begincnt_s <= cnt_s;end
end assign add_cnt_s = end_cnt_ms;
assign end_cnt_s = add_cnt_s && cnt_s == CNT_S;always @(posedge clk or negedge rst_n)begin if(!rst_n)beginflag <= 1'b0;end else if(end_cnt_s)begin flag <= ~flag;//1s取反end else begin flag <= flag;end 
endalways @(posedge clk or negedge rst_n)begin if(!rst_n)beginled <= 4'b0;end else beginif(flag)begin//亮pwmled <= {cnt_s > cnt_ms, cnt_s > cnt_ms,cnt_s > cnt_ms,cnt_s > cnt_ms};end else begin//灭pwmled <= {cnt_s < cnt_ms, cnt_s < cnt_ms,cnt_s < cnt_ms,cnt_s < cnt_ms};endend 
end
endmodule

三、引脚分配

请添加图片描述

文章来源:https://blog.csdn.net/the_same_bug/article/details/131751954
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/news/979706.html

相关文章

银行API安全解决方案

数字经济背景下&#xff0c;外部市场环境的快速变化给商业银行带来很多不确定性&#xff0c;随着银行行业数字化转型进入深水区&#xff0c;银行经营面临新的机遇和挑战。 数字经济是传统银行向开放银行转型发展的重要支撑&#xff0c;开放银行旨在运用数字技术通过开放数据和…

【朴素贝叶斯算法】

1. 介绍 贝叶斯定理简介 贝叶斯定理是朴素贝叶斯算法的基础&#xff0c;它是一种概率理论&#xff0c;用于计算在给定一些条件下&#xff0c;另一些条件的概率。贝叶斯定理的核心思想是通过已知的信息来更新对未知事件的概率估计。 在贝叶斯定理中&#xff0c;我们用P(A|B)表…

在cshell使用history的问题

history是build-in-shell的命令&#xff0c;无法通过which来找到。 所以&#xff0c;在脚本里&#xff08;py\perl\shell&#xff09;都无法调用history获取结果 在bash下貌似能解决这个问题: 如何在shell脚本里开启history命令 但是cshell怎么解决呢&#xff1f;

创建交互式用户体验:探索JavaScript中的Prompt功能

使用JavaScript中的Prompt功能&#xff1a;创建交互式用户体验 在前端开发中&#xff0c;JavaScript的prompt()函数是一个强大而有用的工具&#xff0c;它可以创建交互式的用户体验。无论是接收用户输入、进行简单的验证还是实现高级的交互功能&#xff0c;prompt()函数都能胜…

PostgreSQL 常用空间处理函数

1.OGC标准函数 管理函数&#xff1a; 添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ) 检查数据库几何字段并在geometry_columns中归档 Probe_Geometry_Columns() 给几何对象设置空间参考&#xff08;在通过一个范围做空间查询时常用&…

K8S初级入门系列之六-控制器(RC/RS/Deployment)

一、前言 在第一章我们了解到&#xff0c;如果master节点是一个大脑&#xff0c;那么控制器组件就是大脑的总管&#xff0c;用来控制Pod的状态和行为。今天我们就来认识弹性扩缩容相关的控制器ReplicationController&#xff0c;ReplicaSet&#xff0c;Deployment。 二、Repli…

直播程序源码开发建设:洞察全局,数据统计与分析功能

在信息时代的浪潮席卷下&#xff0c;直播程序源码平台成为了信息时代下的优秀产物之一&#xff0c;通过直播程序源码平台&#xff0c;人们既可以去获取信息、收获快乐&#xff1b;又可以开启一个随时随地&#xff0c;一台智能手机就可以做的工作&#xff0c;直播工作&#xff0…

从更广阔的角度看待产业互联网,它展现的是一次重构的过程

如果产业互联网仅仅只是在传统的供求关系之下&#xff0c;如果产业互联网仅仅只是在传统的平衡之下&#xff0c;缺少了一次对于供求关系的重新建构&#xff0c;那么&#xff0c;所谓的产业互联网&#xff0c;依然是无法跳出以往的发展困境&#xff0c;依然是无法摆脱以往的发展…