FPAG学习(5)-三种方法实现LED流水灯

目录

1.移位实现LED流水灯

1.1创建工程及源文件代码

1.1.1源代码

1.1.2仿真代码

 1.1.3仿真

1.2实验结果

1.2.1总结

2.循环移位实现LED流水灯

3.38译码器实现LED流水灯

3.1原理

3.2源程序


1.移位实现LED流水灯

1.1创建工程及源文件代码

1.1.1源代码

利用计数器计数到500ms,让LED的8位每次左移一位。当复位后/移动至最左边时,让LED灯归位。犯的错误:1.counter<=counter+1'd1,写成了等号,导致仿真波形偶数的led灯无高电平,就是一个瞬间的脉冲,还有其他几处。

module run_led(clk,reset,led);input clk;input reset;output reg [7:0]led;reg [24:0]counter;always@(posedge clk or negedge reset)if(!reset)counter<=0;else if(counter == 25_000_000-1)counter<=0;elsecounter<=counter+1'd1;always@(posedge clk or negedge reset)if(!reset)led<=8'b0000_0001;else if(counter == 25_000_000-1)beginif(led==8'b1000_0000 | led==8'b0000_0000)led<=8'b0000_0001;elseled<=led<<1;endelseled<=led;endmodule

1.1.2仿真代码

时钟也是每10ns翻转一次,复位信号刚开始为低电平,延时201ns后变高,再延时4s,包装8个led灯的翻转。

`timescale 1ns / 1nsmodule run_led_tb();
reg clk;
reg reset;
wire [7:0]led;
run_led run_led(.clk(clk),.reset(reset),.led(led)
);initial clk=0;
always #10 clk=~clk;initial begin
reset=0;
#201;
reset=1;
#2000_000_000;
#2000_000_000;
$stop;
end;endmodule

 1.1.3仿真

与预期一致,然后选择好引脚,烧录程序到开发板。

1.2实验结果

8个LED灯循环闪烁,与仿真波形一致。

1.2.1总结

修改源代码后,保存后还要重新生成bit文件才行,不然烧录的还是之前的程序。

2.循环移位实现LED流水灯

即将LED的前6位与第7位拼接起来,即可每次循环转一次。实验现象与之前一致。

 beginled<={led[6:0],led[7]};end

3.38译码器实现LED流水灯

3.1原理

将之前写的38译码器模块直接调用,使用一个计数器循环计数0~7,将对应的值直接对应到输出。

3.2源程序

添加新的源文件,将1部分的代码复制,调用之前的38模块,添加现有源文件,需要勾选第二个copy框,意思是复制38译码器到这个工程来,否则就是在原来的工程上进行修改。

1.3位的计数器计满后不用管,自动溢出清0。

2.关于LED的驱动问题,led是由下一层38译码器驱动,run_led2作为上层,led只是起到一根导线的作用,从下层穿透到上层,最终作为端口引出。任何一个模块,在被例化的时候,连接到其输出端口的信号,都应该是wire型。

module run_led2(clk,reset,led);input clk;input reset;output wire [7:0]led;reg [24:0]counter;always@(posedge clk or negedge reset)if(!reset)counter<=0;else if(counter == 25_000_000-1)counter<=0;elsecounter<=counter+1'd1;reg [2:0]counter2;always@(posedge clk or negedge reset)if(!reset)counter2<=0;else if(counter == 25_000_000-1)counter2<=counter2+1'd1; decoder_3_8 decoder_3_8(.A2(counter2[2]),.A1(counter2[1]),.A0(counter2[0]),.Y0(led[0]),.Y1(led[1]),.Y2(led[2]),.Y3(led[3]),.Y4(led[4]),.Y5(led[5]),.Y6(led[6]),.Y7(led[7])
);  endmodule

实验现象与之前一样。 

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

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

相关文章

Mybatis Plus连接使用ClickHouse也如此简单

通过阅读列式数据库ClickHouse官网&#xff0c;不难看出它有支持JDBC规范的驱动jar包&#xff0c;可以直接集成到Object Relational Mapping框架等&#xff0c;下面我用SpringBootMybatisPlus环境连接ClickHouse来演示一下 集成步骤 1.Maven引入ClickHouse提供的JDBC依赖 <…

手写mybatis之返回Insert操作自增索引值

前言 技术的把控&#xff0c;往往都是体现在细节上&#xff01; 如果说能用行&#xff0c;复制粘贴就能完成需求&#xff0c;出错了就手忙脚乱。那你一定不是一个高级开发&#xff0c;对很多的技术细节也都不了解。 目标 在前面所有的章节内容对 ORM 框架的实现中&#xff0c;其…

水库抽样算法(大数据算法作业)

时隔一个多月&#xff0c;终于想起来写大数据算法基础的实验报告&#xff0c;主要是快截止了&#xff0c;hh 这两天加急把这个报告写完了~ 接下来&#xff0c;写一写证明过程&#xff08;参考书籍&#xff1a;高等教育出版社《数据科学与工程算法基础》&#xff09;主要代码以…

如何优雅的通过Spring Boot+Redission对订单实现定时关闭

简介 在电子商务及支付相关平台中&#xff0c;常规流程是首先生成订单或支付请求&#xff0c;用户随后会在规定时间内完成支付。如果用户未能在预设时限内完成支付动作&#xff0c;系统通常会执行相应的过期处理机制&#xff0c;即自动取消未支付的订单。 此外&#xff0c;这…

圈子系统APP小程序H5该如何设置IM?

搭建圈子系统的常见问题,以及圈子论坛系统的功能特点 社交圈子论坛系统的概念 圈子小程序源码 多客圈子系统 圈子是什么软件 跟进圈一个系统的软件 为圈子系统APP小程序H5设置IM&#xff08;即时通讯&#xff09;&#xff0c;需要遵循一系列步骤来确保通讯功能的稳定、安全和高…

Centos基线自动化检查脚本

此脚本是一个用于检查Linux系统安全配置的Bash脚本。它通过多项安全标准对系统进行评估&#xff0c;主要检查以下内容&#xff1a; IP地址获取&#xff1a;脚本首先获取主机的IP地址&#xff0c;确保其以10.115开头。 密码策略检查&#xff1a; 检查最小密码长度&#xff08;P…

yum仓库安装rabbitmq

yum仓库安装rabbitmq 1、配置yum仓库 vim /etc/yum.repos.d/rabbitmq.repo # In /etc/yum.repos.d/rabbitmq.repo## ## Zero dependency Erlang ##[rabbitmq_erlang] namerabbitmq_erlang baseurlhttps://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck1 gpg…

甲方安全和乙方安全的区别

信息安全工作&#xff0c;总会被人分成甲方和乙方&#xff0c;甲乙方原本只是商务层面需方和供方的代称&#xff0c;在安全领域&#xff0c;成了做公司内部安全和为客户提供安全的区别。 通常意义上&#xff0c;什么是甲方安全人员呢&#xff1f;就是在非安全业务的公司从事信…

从秒级到小时级:TikTok等发布首篇面向长视频理解的多模态大语言模型全面综述

文章链接&#xff1a;https://arxiv.org/pdf/2409.18938 亮点直击 追踪并总结从图像理解到长视频理解的MM-LLMs的进展;回顾了各种视觉理解任务之间的差异&#xff0c;并强调了长视频理解中的挑战&#xff0c;包括更细粒度的时空细节、动态事件和长期依赖性;详细总结了MM-LLMs在…

基于Raspberry Pi人脸识别自动门

人脸识别自动门 简介 在当今数字化时代&#xff0c;智能家居安全变得越来越重要。今天&#xff0c;我要向大家介绍一个结合了安全性与便利性的项目——人脸识别自动门。这个项目通过在门上实施基于面部识别的高级安全系统&#xff0c;使用摄像头验证房主的面部&#xff0c;自…

非线性降维方法与概率图模型

文章目录 摘要Abstract1.降维的动机1.1 线性方法方法1.1.1 主成分分析&#xff08;PCA)1.1.2 线性判别分析(LDA)1.1.3 线性降维方法中的不足 2.基于流形学习的非线性降维2.1 ISOMAP(Isometric feature mapping)2.2 LLE(locally linear embedding)2.3 LE(Laplacian Eigenmap)拉普…

Leetcode 1203. 项目管理

1.题目基本信息 1.1.题目描述 有 n 个项目&#xff0c;每个项目或者不属于任何小组&#xff0c;或者属于 m 个小组之一。group[i] 表示第 i 个项目所属的小组&#xff0c;如果第 i 个项目不属于任何小组&#xff0c;则 group[i] 等于 -1。项目和小组都是从零开始编号的。可能…

在docker的容器内如何查看Ubuntu系统版本

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境&#xff1a; docker 一、问题描述 由于 lsb_release -a 只能查看自己电脑&#xff08;宿主机&#xff09;的系统版本&#xff0c;如果在docker的容器内又应该如何查看Ubuntu系统版本呢&#xff…

mac 桌面版docker no space left on device

报错信息 docker pull镜像时报&#xff1a; failed to register layer: Error processing tar file(exit status 1): write /home/admin/oceanbase_bak/bin/observer: no space left on device 解决 增加 docker 虚拟磁盘大小。 调整完点击重启即可。

高校学科竞赛平台开发:SpringBoot技术选型与应用

3系统分析 3.1可行性分析 通过对本高校学科竞赛平台实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本高校学科竞赛平台采用SSM框架&#xff0c;JAVA作为开发语…

C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式

今天想通过和大家分享如何删除字符串最后一个字符的N种实现方法&#xff0c;来回顾一些基础知识点。 01第一类、字符串方式 这类方法是通过string类型自身方法直接实现。 1、Substring方法 相信大多数人第一个想到的可能就是这个方法。Substring方法是字符串内置方法&#…

【网络基础知识】网络通信概述与TCPIP、UDP协议

网络基础知识 介绍网络基础知识&#xff0c;譬如网络通信概述、OSI 七层模型、IP 地址、TCP/IP 协议族、TCP 和 UDP 协议等等&#xff0c; 旨在以引导入门、了解为主&#xff0c;其中并不会深入、详细地介绍这些内容&#xff1b; Linux网络编程入门移步&#xff1a;【Linux网络…

Mac上强大的菜单栏管理工具

想要Mac用的好&#xff0c;各种工具少不了&#xff0c;一款好用的软件对于提高使用效率和使用舒适度来说非常必要&#xff0c;iBar-强大的菜单栏图标管理工具 随着 Mac 运行的软件增加&#xff0c;状态栏中的图标也越来越多&#xff0c;不仅看得眼花缭乱&#xff0c;而且刘海屏…

小米电机与STM32——CAN通信

背景介绍&#xff1a;为了利用小米电机&#xff0c;搭建机械臂的关节&#xff0c;需要学习小米电机的使用方法。计划采用STM32驱动小米电机&#xff0c;实现指定运动&#xff0c;为此需要了解他们之间的通信方式&#xff0c;指令写入方法等。花了很多时间学习&#xff0c;但网络…

怎么把音频的速度调慢?6个方法调节音频速度

怎么把音频的速度调慢&#xff1f;调慢音频速度不仅可以帮助我们更好地捕捉细节&#xff0c;还能让我们在分析和学习时更加从容。这对于音乐爱好者来说&#xff0c;尤其有助于理解复杂的旋律和和声&#xff0c;使学习过程变得更加高效。而在语言学习中&#xff0c;放慢语速则能…