基于FPGA的多路彩灯控制器VHDL代码Quartus仿真

名称:基于FPGA的多路彩灯控制器VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

多路彩灯控制器

综合训练内容要求

设计一台基于FPGA的多路彩灯控制器的设计。要求如下

1.彩灯从左到右逐次闪亮。然后从右到左逐次熄灭

2.彩灯两边同时亮两个,然后逐次向中间点亮

3.彩灯从左到右两个两个点亮,然后从右到左两个两个逐次点亮

4.彩灯中间两个点亮,然后同时向两边散开

5.设置节拍选择按钮,控制彩灯变化节奏

1. 工程文件

2. 程序文件

原理图

代码

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

模式1,先从左到右,再从右到左

模式2,两边同时亮2个,然后逐次向中间点亮

模式3,从左到右拉高点亮,再从右到左两个点亮

模式4,中间2个点亮,再向两边散开

分频模块

控制模块

部分代码展示:

LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;
--彩灯控制模块
ENTITY caideng_ctrl ISPORT (clk_div  : IN STD_LOGIC;--控制时钟reset_p  : IN STD_LOGIC;--高电平复位led      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--输出灯);
END caideng_ctrl;
ARCHITECTURE ctrl OF caideng_ctrl IS--中间信号SIGNAL led_buf     : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";SIGNAL state_count : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";--状态计数器
BEGINPROCESS (clk_div, reset_p)BEGINIF (reset_p = '1') THEN--复位清零state_count <= "00000000";ELSIF (clk_div'EVENT AND clk_div = '1') THENIF (state_count = "00100101") THENstate_count <= "00000000";--运行结束后循环ELSEstate_count <= state_count + "00000001";--计数END IF;END IF;END PROCESS;led<=led_buf;PROCESS (clk_div, reset_p)BEGINIF (reset_p = '1') THEN--复位清零led_buf <= "00000000";ELSIF (clk_div'EVENT AND clk_div = '1') THENCASE state_count IS--模式1,先从左到右,再从右到左WHEN "00000000" =>led_buf <= "10000000";WHEN "00000001" =>led_buf <= "11000000";WHEN "00000010" =>led_buf <= "11100000";WHEN "00000011" =>led_buf <= "11110000";WHEN "00000100" =>led_buf <= "11111000";WHEN "00000101" =>led_buf <= "11111100";WHEN "00000110" =>led_buf <= "11111110";WHEN "00000111" =>led_buf <= "11111111";WHEN "00001000" =>led_buf <= "11111110";WHEN "00001001" =>led_buf <= "11111100";WHEN "00001010" =>led_buf <= "11111000";WHEN "00001011" =>led_buf <= "11110000";WHEN "00001100" =>led_buf <= "11100000";WHEN "00001101" =>led_buf <= "11000000";WHEN "00001110" =>led_buf <= "10000000";WHEN "00001111" =>led_buf <= "00000000";
--模式2,两边同时亮2个,然后逐次向中间点亮WHEN "00010000" =>led_buf <= "10000001";WHEN "00010001" =>led_buf <= "11000011";WHEN "00010010" =>led_buf <= "11100111";WHEN "00010011" =>led_buf <= "11111111";
--模式3,从左到右拉高点亮,再从右到左两个点亮WHEN "00010100" =>led_buf <= "11000000";WHEN "00010101" =>led_buf <= "01100000";WHEN "00010110" =>led_buf <= "00110000";WHEN "00010111" =>led_buf <= "00011000";WHEN "00011000" =>led_buf <= "00001100";WHEN "00011001" =>led_buf <= "00000110";
源代码

 扫描文章末尾的公众号二维码

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

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

相关文章

简易录制视频做3D高斯

系统环境 ubuntu20 &#xff0c;cuda11.8&#xff0c;anaconda配置好了3D高斯的环境。 具体参考3D高斯环境配置&#xff1a;https://blog.csdn.net/Son_of_the_Bronx/article/details/138527329?spm1001.2014.3001.5501 colmap安装&#xff1a;https://blog.csdn.net/Son_of…

[CISCN2019 华北赛区 Day1 Web2]ikun

看到提示说一定要找到lv6 这要写脚本来爆破了&#xff0c;用bp是爆破不出来的 发现LV等级都是有参数挂着的 写个脚本看一下 import requests for i in range(1,1000):payload"http://node4.anna.nssctf.cn:28150/shop?page%d"%(i)resrequests.get(payload)if "…

SVM直观理解

https://tangshusen.me/2018/10/27/SVM/ https://www.bilibili.com/video/BV16T4y1y7qj/?spm_id_from333.337.search-card.all.click&vd_source8272bd48fee17396a4a1746c256ab0ae SVM是什么? 先来看看维基百科上对SVM的定义: 支持向量机&#xff08;英语&#xff1a;su…

SparkSQL与Hive整合 、SparkSQL函数操作

SparkSQL与Hive整合 SparkSQL和Hive的整合&#xff0c;是一种比较常见的关联处理方式&#xff0c;SparkSQL加载Hive中的数据进行业务处理&#xff0c;同时将计算结果落地回Hive中。 整合需要注意的地方 1)需要引入hive的hive-site.xml&#xff0c;添加classpath目录下面即可…

15.计算机网络

1.物理层的互联设备 中继器 和 集线器 2.集线器可以看做特殊的多路中继器 集线器 不可以做到自动寻址的功能 3.数据链路层 网桥 和 交换机 4.交换机是多端口网桥 5.网络层 路由器 6.应用层 网关 7.广播域 网络层 可以形成多个广播域 冲突域 网络层数据链路层 可以形成多个冲突域…

【数据结构】C/C++ 带头双向循环链表保姆级教程(图例详解!!)

目录 一、前言 二、链表的分类 &#x1f95d;单链表 &#x1f95d;双链表 &#x1f95d;循环链表 &#x1f95d;带头双向循环链表 &#x1f34d;头节点&#xff08;哨兵位&#xff09;的作用 ✨定义&#xff1a; ✨作用&#xff1a; &#x1f347;总结 三、带头双向循环链表 …

Mybatis进阶4-权限管理

权限管理 1.权限 //相当于 职责 2.用户 //相当于 职员&#xff08;职员就职于一个职位&#xff09; 3.角色 //相当于 职位&#xff08;有多个职责&#xff09; 权限管理基础表&#xff1a;权限表&#xff0c;用户表&#xff0c;角色表 问题1&#xff1a;…

RK3576芯片规格,以及与RK3588对比

瑞芯微RK3576是一款高性能、低功耗的SoC&#xff08;系统级芯片&#xff09;处理器&#xff0c;适用于基于ARM的PC、边缘计算设备、个人移动互联网设备等多种应用场景。它采用Arm架构的八核心CPU&#xff0c;集成了GPU、MCU、NPU、VPU等多种计算核心&#xff0c;并具有丰富的外…

KAN: Kolmogorov–Arnold Networks

KAN: Kolmogorov–Arnold Networks 论文链接&#xff1a;https://arxiv.org/abs/2404.19756 代码链接&#xff1a;https://github.com/KindXiaoming/pyKAN 项目链接&#xff1a;https://kindxiaoming.github.io/pyKAN/intro.html Abstract 受Kolmogorov-Arnold表示定理的启…

【Linux网络】网络文件共享

目录 一、存储类型 二、FTP文件传输协议 2.1 FTP工作原理 2.2 FTP用户类型 2.3 FTP软件使用 2.3.1 服务端软件vsftpd 2.3.2 客户端软件ftp 2.4 FTP的应用 2.4.1 修改端口号 2.4.2 匿名用户的权限 2.4.3 传输速率 三、NFS 3.1 工作原理 3.2 NFS软件介绍 3.3 NFS配…

OpenCV 入门(三)—— 车牌筛选

OpenCV 入门系列&#xff1a; OpenCV 入门&#xff08;一&#xff09;—— OpenCV 基础 OpenCV 入门&#xff08;二&#xff09;—— 车牌定位 OpenCV 入门&#xff08;三&#xff09;—— 车牌筛选 OpenCV 入门&#xff08;四&#xff09;—— 车牌号识别 OpenCV 入门&#xf…

Android 巧用putBinder方法传递大文件

使用Intent传递数据大家都知道&#xff0c;但是如果你使用Intent传递大于1Mb的数据时&#xff0c;就一定会报如下的错误&#xff1a; Caused by: android.os.TransactionTooLargeException: data parcel size 1049112 bytes 就是说你的传输数据太大了&#xff0c;当前的大小达…