• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

多路彩灯控制器VHDL代码Quartus仿真

07/01 09:39
439
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240113103Q1136.doc

共1个文件

名称:多路彩灯控制器VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

多路彩灯控制器

一、综合训练内容要求

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

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

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

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

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

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

原理图

代码

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

花样1,从左到右亮,再从右到左灭

花样2,两边向中间点亮

花样3,从左到右两个两个点亮,再从右到左点亮

花样4,中间两个点亮,再向两边散开

分频模块仿真图

控制模块仿真图

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--彩灯控制模块
ENTITY?control?IS
???PORT?(
??????clk_1????:?IN?STD_LOGIC;--输出时钟1,对应变化节奏1
??clk_2:IN?STD_LOGIC;--输出时钟2,对应变化节奏2
??button:IN?STD_LOGIC;--节拍选择按键,通过切换clk_1和clk_2控制节奏
??????rst??????:?IN?STD_LOGIC;--高电平复位
??????led??????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--输出彩灯
???);
END?control;
ARCHITECTURE?behave?OF?control?IS
???--中间信号
???SIGNAL?clk????:?STD_LOGIC;
???SIGNAL?cnt?:?integer?:=?0;--计数器
BEGIN
???
???clk<=clk_1?when?(button='1')?else?clk_2;----节拍选择按键,通过切换clk_1和clk_2控制节奏
???PROCESS?(clk,?rst)
???BEGIN
??????IF?(rst?=?'1')?THEN--复位清零
?????????cnt?<=?0;
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(cnt?=?35)?THEN
????????????cnt?<=?0;--运行结束后循环
?????????ELSE
????????????cnt?<=?cnt?+?1;--计数
?????????END?IF;
??????END?IF;
???END?PROCESS;
???PROCESS?(clk,?rst)
???BEGIN
??????IF?(rst?=?'1')?THEN--复位清零
?????????led?<=?"00000000";
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????CASE?cnt?IS
????--花样1,从左到右亮,再从右到左灭
????????????WHEN??0?=>led?<=?"10000000";
????????????WHEN??1?=>led?<=?"11000000";
WHEN??2?=>led?<=?"11100000";
WHEN??3?=>led?<=?"11110000";
WHEN??4?=>led?<=?"11111000";
WHEN??5?=>led?<=?"11111100";
WHEN??6?=>led?<=?"11111110";
WHEN??7?=>led?<=?"11111111";
WHEN??8?=>led?<=?"11111110";
WHEN??9?=>led?<=?"11111100";
WHEN?10?=>led?<=?"11111000";
WHEN?11?=>led?<=?"11110000";
WHEN?12?=>led?<=?"11100000";
WHEN?13?=>led?<=?"11000000";
WHEN?14?=>led?<=?"10000000";
--花样2,两边向中间点亮
WHEN?15?=>led?<=?"10000001";
WHEN?16?=>led?<=?"11000011";
WHEN?17?=>led?<=?"11100111";
WHEN?18?=>led?<=?"11111111";
--花样3,从左到右两个两个点亮,再从右到左点亮
WHEN?19?=>led?<=?"11000000";
WHEN?20?=>led?<=?"01100000";
WHEN?21?=>led?<=?"00110000";
WHEN?22?=>led?<=?"00011000";
WHEN?23?=>led?<=?"00001100";
WHEN?24?=>led?<=?"00000110";
WHEN?25?=>led?<=?"00000011";
WHEN?26?=>led?<=?"00000110";
WHEN?27?=>led?<=?"00001100";
WHEN?28?=>led?<=?"00011000";
WHEN?29?=>led?<=?"00110000";
WHEN?30?=>led?<=?"01100000";
WHEN?31?=>led?<=?"11000000";
--花样4,中间两个点亮,再向两边散开

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=551

  • 2-240113103Q1136.doc
    下载

相关推荐