04_led_water_flow_v0 流水灯

04_led_water_flow_v0

流水灯和跑马灯都是一种常见的LED灯效,它们在灯光的变化方式上有所不同。

流水灯是一种灯效模式,LED灯在一定的时间间隔内依次点亮或熄灭,形成像水流一样的效果。而跑马灯则是LED灯在一定的时间间隔内依次从左向右或从右向左依次点亮或熄灭,形成像跑马一样的效果,每个时刻只有一个灯亮,其他灯都熄灭。

更新

使用dip开关控制跑马灯的速度和方向

知识点:

  • 非循环移位寄存器的使用
  • 两种不同的组合逻辑赋值风格(assign, always(*))
  • 灵活利用参数设计可复用模块(模块级参数,局部参数)

module led_water_flow #(parameter LED_ON = 1'b0,  //led active lowparameter CLK_FREQ  = 50*1000*1000  //frequency of input clock
)(input  clk,  input  rst_n, input wire [5:0] dip_u6,output reg [5:0] led
);//
//Local parameter, same as const in c/c++
//For 50Mhz clock, 
//one second count to 50*1000*1000 
//one millisecond count to 50*1000 
//
localparam ONE_MSECOND = CLK_FREQ / 1000;//-------------------------------------------
//control the running speed and direction 
//according to the status of dip keys
wire [1:0] speed = dip_u6[1:0];
wire direct = dip_u6[5];//First style of assignment for combinational logic, (not for sequential logic)
//Note: left value must be wire type, here 'wire [31:0] count_max;'
wire [31:0] count_max;  
assign count_max =  (speed == 0) ? ONE_MSECOND * 2000 :(speed == 1) ? ONE_MSECOND * 1000 :(speed == 2) ? ONE_MSECOND * 500 : ONE_MSECOND * 200;
/*
//another style of assignment of combinational logic
//Note: left value must be reg type, here 'reg [31:0] count_max;'
reg [31:0] count_max;  
always @(*) begincount_max =     (speed == 0) ? ONE_MSECOND * 2000 :(speed == 1) ? ONE_MSECOND * 1000 :(speed == 2) ? ONE_MSECOND * 500  : ONE_MSECOND * 200;
end
*///---------------------------------------------------------
//water flow will light leds one by one, and then set off all leds,
//then light leds one by one, and then turn off all,recycle 
reg [31:0] count; 
wire time_on = (count == count_max-1);always @(posedge clk) beginif(~rst_n) count <= 0;else if(time_on) count <= 0;else count <= count + 1;
endwire [5:0] all_led_on = (LED_ON == 1'b1) ?  6'b111111 : 6'b000000;
wire [5:0] all_led_off = ~all_led_on;always @(posedge clk) beginif(~rst_n) led <= all_led_off;else if(time_on) beginif(led == all_led_on) led <= all_led_off;else beginif(direct == 1'b1) led <= {led[4:0], LED_ON} ; //shift leftelse led <= {LED_ON,led[5:1]} ;                 //shift rightendend//else led <= led;
end
endmodule

扩展思维

了解呼吸灯的效果,思考如何用Verilog设计实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/10694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6-8 十进制转换二进制(递归)

分数 10 作者 C课程组 单位 浙江大学 本题要求实现一个函数&#xff0c;将非负整数n转换为二进制后输出。 函数接口定义&#xff1a; void dectobin( int n );函数dectobin应在一行中打印出二进制的n。建议用递归实现。 裁判测试程序样例&#xff1a; #include <stdio…

WordPress插件Plus WebP,可将jpg、png、bmp、gif图片转为WebP

现在很多浏览器和CDN都支持WebP格式的图片了&#xff0c;不过我们以前的WordPress网站使用的图片都是jpg、png、bmp、gif&#xff0c;那么应该如何将它们转换为WebP格式的图片呢&#xff1f;推荐安装这款Plus WebP插件&#xff0c;可以将上传到媒体库的图片转为WebP格式图片&am…

HIVE调优MapJoin

HIVE调优MapJoin 目录 HIVE调优MapJoin 1.mapjoin &#xff08;1.2以后自动默认启动mapjoin&#xff09; 2.创建表格 3.查询建表 4.通过 explain 展示执行计划 5.Map JOIN 相关设置&#xff1a; 1.mapjoin &#xff08;1.2以后自动默认启动mapjoin&#xff09;…

[机器学习-05] Scikit-Learn机器学习工具包进阶指南:协方差估计和交叉分解功能实战【2024最新】

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

VUE格式探究记录

1.背景 vue格式为鹰图Intergraph SP3D格式&#xff0c;是私有格式。博主对vue格式的直接解析可行性进行了初步的探究&#xff0c;记录如下。 2.探究 目前能够解析vue格式的软件有3类&#xff08;其背后路线有可能有相同的&#xff09;&#xff0c; 鹰图Intergraph系列软件&…

springmvc处理模型数据

springmvc处理模型数据 很多情况下页面上需要很多数据&#xff0c;单单返回页面是不行的&#xff0c;那么springmvc如何将数据返回到该页面呢 springmvc提供了四种方式来输出模型数据 ModelAndView: 处理返回值为ModelAndView时&#xff0c;可以将该对象中添加数据模型 Map及Mo…

数据库监控监听

嘿嘿 又知道多一点点 说来有些惭愧 现在才发现&#xff0c;都怪canal 哈哈 实时监控mysql表除了canal还有什么&#xff0c;还有很多&#xff0c;比如 mysql-binlog-connector-java GitHub - liufeiit/mysql-binlog-connector-java: mysql-binlog-connector-java java库&…

前端小白一文掌握 CSS3 2D转换transform

文章导读&#xff1a;AI 辅助学习前端&#xff0c;包含入门、进阶、高级部分前端系列内容&#xff0c;当前是 CSS 的部分&#xff0c;瑶琴会持续更新&#xff0c;适合零基础的朋友&#xff0c;已有前端工作经验的可以不看&#xff0c;也可以当作基础知识回顾。 CSS3 中的转化 …

设计模式-结构型-桥接模式-Bridge

桥接模式可以减少类的创建 矩阵类 public class Matrix {private String fileName;public Matrix(String fileName) {this.fileName fileName;}public String getFileName() {return fileName;} } 图片抽象类 public abstract class Image {protected ImageImp imp;public …

黄芪党参茶

黄芪党参茶是一种传统的中药茶饮&#xff0c;由黄芪和党参两味药材煮制而成。这种茶饮在中医理论中被认为具有补中益气、调理脾胃、利水消肿、养血安神等多种功效。 主要功效 补中益气&#xff1a;黄芪和党参都具有补中益气的功效。黄芪味甘、性微温&#xff0c;有补气固表的…

常见算法策略

前言 算法策略是指在解决问题或完成任务时所采用的方法、技巧或步骤的总称。 在设计算法时&#xff0c;通常会考虑多种策略&#xff0c;并选择最适合特定问题的策略来实现算法的设计和优化。 算法策略比较 动态规划 动态规划介绍入口

基于协同过滤算法的旅游推荐系统的设计

基于协同过滤算法的旅游推荐系统的设计 Design of a Travel Recommendation System based on Collaborative Filtering Algorithm 完整下载链接:基于协同过滤算法的旅游推荐系统的设计 文章目录 基于协同过滤算法的旅游推荐系统的设计摘要第一章 前言1.1 研究背景1.2 研究目的…

动手学深度学习16 Pytorch神经网络基础

动手学深度学习16 Pytorch神经网络基础 1. 模型构造2. 参数管理1. state_dict()2. normal_() zeros_()3. xavier初始化共享参数的好处 3. 自定义层4. 读写文件net.eval() 评估模式 QA 1. 模型构造 定义隐藏层–模型结构定义前向函数–模型结构的调用 import torch from torch…

dom驱动和数据驱动的理解

DOM&#xff08;Document Object Model&#xff09;驱动和数据驱动在前端开发中扮演着不同的角色&#xff0c;它们各自有其独特的特性和应用场景。 DOM驱动&#xff1a; DOM&#xff08;文档对象模型&#xff09;驱动是传统的前端开发模式。在这种模式下&#xff0c;开发人员…

Spark读取Hive数据或文件如何提升速度的优化思路

场景描述 场景一&#xff1a;数据不均匀&#xff0c;个别task获取的数据比其他Task多&#xff0c;导致单个Task或几个Task执行很慢。场景二&#xff1a;数据均匀&#xff0c;但是每个Task数据量都很多&#xff0c;执行时间达不到预期。 解决思路 读取前优化&#xff1a;优化…

Xilinx 千兆以太网TEMAC IP核 MDIO 配置及物理接口

基于AXI4-Lite接口可以访问MDIO(Management Data Input/Output)接口&#xff0c;而MDIO接口连接MAC外部的PHY芯片&#xff0c;用户可通过AXI4-Lite接口实现对PHY芯片的配置。 1 MDIO接口简介 开放系统互连模型OSI的最低两层分别是数据链路层和物理层&#xff0c;数据链路层的…

联丰策略股票炒股APP市场这些板块爆发!A股后市怎么走?

查查配5月10日,A股三大指数涨跌不一。 联丰策略拥有一支由知名互联网公司和国内证券金融机构的行业专家组成的一流运营团队。凭借他们在互联网产品开发和金融风险管理方面的丰富经验,我们的团队致力于为客户提供专业和个性化的证券交易服务。 截至收盘,沪指涨0.01%,报3154.55点…

Linux 网络时间校准

随笔 目录 1. ntp 校验 2. timedatectl 命令来进行时间同步 2.1 安装 Chrony 软件包 2.2 编辑Chrony的配置文件/etc/chrony.conf&#xff0c;选择你想要同步的NTP服务器 2.3 确认Chrony服务已经启动 2.4 命令查看系统时间与NTP服务器的同步情况 1. ntp 校验 1. 确保你的…

leetcode-矩阵最长递增路径-102

题目要求 思路 1.通过双循环去把每一个结点作为起始点进行统计&#xff0c;将返回的路径长度存放在res中&#xff0c;取最大的res的长度。 2.递归中需要的几个值&#xff0c;x和y当前结点的坐标&#xff0c;pre用于存储上一个结点的元素值&#xff0c;因为要求是路径上的元素是…

8. SVG的填充和描边

在SVG中&#xff0c;fill和stroke属性是用来控制图形的填充和描边的。下面我将分别详细介绍这两个属性及它们的衍生属性。 Fill 属性&#xff08;填充&#xff09; 应用场景 绘制实心图形&#xff1a;如圆形、矩形、多边形等的内部填充。用于表示实体对象、区域等&#xff0…