03_led_horse_run_v1 跑马灯

03_led_horse_run_v1

在Verilog中实现跑马灯通常涉及到使用一个计数器来控制LED灯的亮灭顺序。
跑马灯是一种常见的电子显示方式,它通过控制多个LED灯的顺序点亮,形成一种动态的视觉效果,看起来就像灯在“跑”一样。

更新

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

知识点:

  • 循环移位寄存器的使用
  • 两种不同的组合逻辑赋值风格(assign, always(*))
  • 灵活利用参数设计可复用模块(模块级参数,局部参数)
module led_horse_run #(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_SECOND = CLK_FREQ;
localparam HALF_SECOND = ONE_SECOND / 2;
localparam ONE_MSECOND = ONE_SECOND / 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
*///---------------------------------------------------------
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] init_led_status = (LED_ON == 1'b1) ? 6'b000001 : 6'b111110;always @(posedge clk) beginif(~rst_n) led <= init_led_status;else if(time_on) beginif(direct == 1'b1) led <= {led[4:0], led[5]} ;  //shift leftelse led <= {led[0],led[5:1]} ;                 //shift rightend//else led <= led;
endendmodule

扩展思维

适了解流水灯和跑马灯的区别,适当修改上面的跑马灯代码实现流水灯的效果。

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

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

相关文章

一键 input 苹果 OpenELM,零门槛 Llama 3 教程,40+ 优质模型/数据集/教程,建议收藏!...

现在 AI 行业什么最火&#xff1f; 「大模型」一定仍然排在前三甲的位置。 自从 2022 年底 ChatGPT 面世以来&#xff0c;大模型在各行各业已经带来了太多的惊喜&#xff0c;应用场景愈发丰富&#xff0c;同时也带动了相关底层技术的普及与普适化。尤其是在开源模型繁荣发展之下…

描述Nacos中服务发现的流程。

Nacos中服务发现的流程解析 在微服务的架构体系中&#xff0c;服务发现是一个至关重要的组成部分。它解决了服务提供者和消费者之间如何动态发现对方地址的问题&#xff0c;使得微服务之间的调用更加灵活和高效。在众多服务发现组件中&#xff0c;Nacos以其易用性、高性能和丰…

C#核心之面向对象-多态

面向对象-多态 文章目录 1、Vob1、多态的概念2、多态的实现 2、抽象类和抽象方法1、抽象类2、抽象方法 3、接口1、接口的概念2、接口的声明3、接口的使用4、接口可以继承接口5、显示实现接口总结思考 电脑使用USB接口读取数据 4、密封方法 1、Vob 1、多态的概念 多态&#xf…

本周10个Github有趣项目WebLlama等

10个Github有趣的项目、工具和库 1、WebLlama Llama-3 网络Web代理&#xff0c;这是使用 Llama 3 构建的最强大的代理&#xff0c;通过聊天对话实现Web导航&#xff0c;可以按照说明浏览网页并与您交谈。 在Llama-3-8B-Web性能上超过了 GPT-4V&#xff08;*零样本&#xff09;…

为什么选择OpenNJet?OpenNJet下一代云原生应用引擎!OpenNJet开发实战!

前言导读 在当今这个数字化转型加速的时代&#xff0c;云原生技术已成为企业和开发者构建现代应用的首选路径。OpenNJet作为新一代云原生应用引擎&#xff0c;在国内外技术社区受到了广泛关注。 本文将深入探讨OpenNJet的特点、优势以及在开发实践中的应用&#xff0c;带您全…

【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台-源码下载与项目配置

基于.NET Framework 4.8 开发的深度学习模型部署测试平台,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等应用场景,同时支持图像与视频检测。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runtime以及OpenCV DNN,支持CPU、IGP…

用python画一个正八边形

1 问题 使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长100的正八边形。 2 方法 1、利用for循环解决如何画出图形中相同的八条边的问题。 2、再利用turtle.fd()函数和turtle.seth()函数画出完整的图形。 代码清单 1 import turtleturtle.pensize(2)d0for i in r…

【系统架构师】-选择题(十三)

1、在某企业的营销管理系统设计阶段&#xff0c;属性"员工"在考勤管理子系统中被称为"员工"&#xff0c;而在档案管理子系统中被称为"职工"&#xff0c;这类冲突称为&#xff08; 命名冲突&#xff09;。 同一个实体在同系统中存在不同的命名&am…

智慧旅游引领未来风尚,科技助力旅行更精彩:科技的力量推动旅游业创新发展,为旅行者带来更加便捷、高效和智能的旅行服务

目录 一、引言 二、智慧旅游的概念与特点 &#xff08;一&#xff09;智慧旅游的概念 &#xff08;二&#xff09;智慧旅游的特点 三、科技推动旅游业创新发展 &#xff08;一&#xff09;大数据技术的应用 &#xff08;二&#xff09;人工智能技术的应用 &#xff08;…

推荐收藏!40 道算法工程师必问的高频面试题!

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#xff1a…

【计算机科学速成课】笔记二

笔记一 文章目录 7.CPU阶段一&#xff1a;取指令阶段阶段二&#xff1a;解码阶段阶段三&#xff1a;执行阶段 8.指令和程序9.高级CPU设计——流水线与缓存10.早期编程方式11.编程语言发展史12.编程原理13.算法入门14.数据结构15.阿兰图灵 7.CPU CPU也叫中央处理器&#xff0c;…

在R的 RGui中,使用devtools 安装trajeR

创建于&#xff1a;2024.5.5 文章目录 1. 报错信息2. 尝试使用指定的清华镜像&#xff0c;没有解决3. 找到原因&#xff1a;官网把包删除了4. 尝试从网上下载&#xff0c;然后安装。没有成功5. 使用devtools安装5.1 尝试直接安装&#xff1a;install.packages("devtools&q…

写点简单的算法压压惊

题目 问题描述 小蓝是个直男&#xff0c;他老是不懂女朋友的心思&#xff0c;甚至不知道女朋友 有没有生气。 后来他逐渐发现&#xff0c;如果女朋友给他发的消息的字符个数小于等 于 10 个&#xff0c;那么就是生气了&#xff0c;否则就是没有生气。 现在收到一条女朋友发来的…

关于YOLO8学习(四)模型转换为ncnn

前文 关于YOLO8学习(一)环境搭建,官方检测模型部署到手机 关于YOLO8学习(二)数据集收集,处理 关于YOLO8学习(三)训练自定义的数据集 简介 本文将会讲解: (1)如何通过PyCharm,进行pt模型的转换,最后输出一个适合手机端使用的模型 开发环境 win10、python 3.11…

C语言写一个终端进度条

C语言写一个终端进度条 这个功能挺简单的&#xff0c;主要有以下两点&#xff1a; 如何获取终端宽度如何让字符在原地闪烁 如何获取终端宽度 这里用到了设备控制接口函数ioctl()&#xff0c;下面简单的介绍一下这个函数的用法&#xff1a; ioctl是一个在Unix和类Unix系统中…

1-36 双列集合

一 Map集合 1.存储特点(重点记忆:) 以键值对(KEY-VALUE)形式存储 2.特点: ①将键值对看做对象进行存储 ②KEY 不能重复,VALUE可以重复 ③每一对K-V都是意义对应的映射关系 3.拓展:Map集合是双列集合,由两个单列集合组成的 分析KEY和VALUE所在的是什么种类集合 ①KEY不…

JS基础:js的2种基本用法,4个属性详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

C++容器map及unordered_map底层实现和性能上有所不同

std::map 和 std::unordered_map 都是 C 标准库中用于实现关联容器的类模板&#xff0c;但它们在底层实现和性能上有所不同。 1. std::map&#xff1a; - 使用红黑树实现&#xff0c;保持元素的有序性。因此&#xff0c;所有操作的时间复杂度都是 O(log n)&#xff0c;其中…

算法--贪心算法

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。贪心算法在有最优子结构的问题中尤其有效&#xff0c;这意味着局部最优解能决定全局最优解。简单来说&#xff0c;贪心…

零基础学习数据库SQL语句之查询表中数据的DQL语句

是用来查询数据库表的记录的语句 在SQL语句中占有90%以上 也是最为复杂的操作 最为繁琐的操作 DQL语句很重要很重要 初始化数据库和表 USE dduo;create table tb_emp(id int unsigned primary key auto_increment comment ID,username varchar(20) not null unique comment…