03_led_horse_run_v0 跑马灯

03_led_horse_run_v0

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

知识点:

  • 移位寄存器
module led_horse_run #(parameter CLK_FREQ = 50*1000*1000
)(input  clk, input  rst_n,  output reg [5:0] led
);//
//Local parameter, same as const in c/c++
//For 50Mhz clock, 
//one second count to 50*1000*1000 numbers
//one millisecond count to 50*1000 numbers
//
localparam ONE_SECOND = CLK_FREQ;
localparam HALF_SECOND = ONE_SECOND / 2;
localparam ONE_MSECOND = ONE_SECOND / 1000;//---------------------------------------------------------
reg [31:0] count; 
//wire time_on = (count == ONE_SECOND-1);
wire time_on = (count == HALF_SECOND-1);always @(posedge clk) beginif(~rst_n) count <= 0;else if(time_on) count <= 0;else count <= count + 1;
end//running from left to right
always @(posedge clk) beginif(~rst_n) led <= ~(6'b000001); //6'b111110else if(time_on) led <= {led[0],led[5:1]} ;     //running from left to right//else if(time_on) led <= {led[4:0],led[5]} ;   //running from right to leftelse led <= led;
end
endmodule

原理解释:

LED灯会从右向左依次点亮,形成动态的视觉效果。这个例子中使用的是6个LED灯,但可以根据需要扩展到更多的LED灯。

在模块内部定义了一个32位的寄存器count,用于作为计数器。在每个时钟上升沿,如果rst_n没有被复位,计数器count就会加1。

当计数器达到最大值时,它会重新从0开始计数,信号time_on表明计数器达到最大值的时刻,这样可以保证LED灯的循环点亮。

time_on为高有两个事件发生,一是计数器重新从0开始计数,这样可以保证固定的间隔时间只能出现一个time_on信号,注意:通过改变计数器最大值,可以改变跑马灯的速度;

二是time_on到来时Led的状态发生改变,为了达到LED灯的亮灭状态就会从右向左移动,形成跑马灯的效果,使用一个移位寄存器实现LED状态有序改变。led <= {led[0],led[5:1]} ;

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

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

相关文章

FTTR介绍

概念 FTTR&#xff08;Fiber to The Room&#xff09;是一种新型的光纤接入技术&#xff0c;它将光纤信号传输到室内的一个通信网络方案。在FTTR网络中&#xff0c;光纤到达建筑物内的分配盒后&#xff0c;通过铜缆或其他传输介质进入室内各个房间&#xff0c;为用户提供网络服…

Java面试八股文(SpringCloud篇)

****************************************************

前端双语实现方案(VUE版)

一、封装一个lib包 结构如下 en.js use strict;exports.__esModule true; exports.default {sp: {input: {amountError: Incorrect amount format},table: {total: Total:,selected: Selected:,tableNoData: No data,tableNoDataSubtext: Tip: Suggest to recheck your fil…

springboot利用Redis的Geo数据类型,获取附近店铺的坐标位置和距离列表

文章目录 GEO介绍GEO命令行应用添加地理坐标位置获取指定单位半径的全部地理位置列表springboot 的实际应用 GEO介绍 在Redis 3.2版本中&#xff0c;新增了一种数据类型&#xff1a;GEO&#xff0c;它主要用于存储地理位置信息&#xff0c;并对存储的信息进行操作。 GEO实际上…

整理好了!2024年最常见 100 道 Java基础面试题(三十七)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 100 道 Java基础面试题&#xff08;三十六&#xff09;-CSDN博客 七十三、抽象类是否可以继承具体类&#xff1f; 在Java中&#xff0c;抽象类&#xff08;abstract class&#xff09;可以继承自具体类&#xff08;c…

Unity延时触发的几种常规方法

目录 1、使用协程Coroutine2、使用Invoke、InvokeRepeating函数3、使用Time.time4、使用Time.deltaTime5、使用DOTween。6、使用Vision Timer。 1、使用协程Coroutine public class Test : MonoBehaviour {// Start is called before the first frame updatevoid Start(){ …

使用css的box-reflect属性制作倒影效果

box-reflect 是一个在 CSS 中创建元素倒影效果的非标准属性。尽管它在过去的一些 WebKit 浏览器中&#xff08;如旧版的 Safari 和 Chrome&#xff09;得到了支持&#xff0c;但由于它并未成为 CSS 标准的一部分&#xff0c;因此在现代浏览器中的兼容性较差。以下是对 box-refl…

瑞麦德机电设备有限公司将莅临2024第13届生物发酵展

参展企业介绍 河南瑞麦德机电设备有限公司是专业从事机械输送气力输送、称重配料、筛分、磁选设备研发和制造于一体的企业&#xff0c;公司采用国内外同行业产品的先进技术&#xff0c;经专业团队设计、研发、生产&#xff0c;产品满足“ISO9001”&#xff0c;“GMP”等标准要求…

Java开发原则

Java开发原则 一. 设计规范1.1 Vo设计原则1.1.1 Long类型需要转为String类型 1.2 Mapper接口命名1.2.1 新增1.2.2 删除1.2.3 更新1.2.4 查询 一. 设计规范 1.1 Vo设计原则 1.1.1 Long类型需要转为String类型 由于Long类型转递到前端会出现数据溢出 1.2 Mapper接口命名 1.2…

React 学习-3

Props state可变&#xff0c;props不可变&#xff0c;故子组件使用props较多 ar title "菜鸟教程"; // var title 123; var MyTitle React.createClass({propTypes: {title: React.PropTypes.string.isRequired,},render: function() {return <h1> {this.…

线程的ThreadLocal

ThreadLocal是Java语言中的一个线程内部存储类&#xff0c;可以用来在多线程环境下保证每个线程都拥有自己独立的变量副本&#xff0c;避免了多线程间的数据共享问题。 ThreadLocal的使用方式非常简单&#xff0c;只需要创建一个ThreadLocal对象&#xff0c;然后使用它的get()…

【BST】Behavior Sequence Transformer for E-commerceRecommendation in Alibaba

一、提出背景 传统的Embedding&MLP模型结构将原始特征嵌入到低维向量中&#xff0c;然后将其concat后输入MLP进行最终推荐。DIN提出使用注意力机制来捕获候选项与用户先前点击的项之间的相似性。 然而&#xff0c;大多数这些工作只是连接不同的特征&#xff0c;而没有捕获用…

云动态摘要 2024-05-08

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]即刻畅享自研SaaS产品 腾讯云 2024-04-25 涵盖办公协同、营销拓客、上云安全保障、数据分析处理等多场景 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…

通过自适应提示提升大语言模型的零样本推理能力

随着大模型&#xff08;LLMs&#xff09;的快速发展&#xff0c;它们在自然语言处理&#xff08;NLP&#xff09;任务上取得了前所未有的成就。特别是&#xff0c;LLMs展现出了强大的推理和规划能力&#xff0c;这得益于它们的少样本和零样本学习能力。然而&#xff0c;现有的方…

LeetCode刷题笔记第217题:存在重复元素

LeetCode刷题笔记第217题&#xff1a;存在重复元素 题目&#xff1a; 给你一个整数数组nums。如果任一值在数组中出现至少两次&#xff0c;返回 true&#xff1b;如果数组中每个元素互不相同&#xff0c;返回 false。 想法&#xff1a; 要判断数组中是否存在重复的元素&…

从零开始精通RTSP之传输ADPCM等音频流

概述 在上一篇文章中&#xff0c;我们详细介绍了使用RTP传输AAC音频流的打包方法。除了AAC编码算法外&#xff0c;常用的音频编码算法还有ADPCM、G711A、G711U、G726等。接下来&#xff0c;我们继续介绍RTP传输ADPCM等音频流的打包方法。 封装方法 RTP封装ADPCM等音频数据时&am…

探究 Java 字符串的不可变性与内部机制

探究 Java 字符串的不可变性与内部机制 为什么String是不可变的 其实String不可变的原因是因为内部char[]被final修饰了&#xff0c; 其实String里的内部hash value也是一个私有的final整形存放hashcode&#xff0c;这么做的原因主要为了提高后续hash操作的性能。 不提供修…

spring模块(六)spring监听器(2)@EventListener

一、介绍 监听器的简化写法 二、原理 三、使用 Slf4j Component public class MyTask {EventListenerpublic void onApplicationEvent(ApplicationEvent event) {if (event instanceof ContextRefreshedEvent) {log.info("监听到 ContextRefreshedEvent...");}if…

Seata之XA 模式的使用

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 Seata 是一款开源的…

全网最全:一文入门最热的LLM应用开发框架LangChain

f#### 1. LangChain 简介 1.1. LangChain 发展史 LangChain 的作者是 Harrison Chase&#xff0c;最初是于 2022 年 10 月开源的一个项目&#xff0c;在 GitHub 上获得大量关注之后迅速转变为一家初创公司。2017 年 Harrison Chase 还在哈佛上大学&#xff0c;如今已是硅谷的…