FPGA的音乐彩灯VHDL流水灯LED花样,源码和视频

名称:FPGA的音乐彩灯VHDL流水灯LED

软件:Quartus

语言:VHDL

代码功能:

(1)设计一彩灯控制电路,按要求控制8路(彩灯由发光 二极管代替,受实验箱限制,多路同样控制方法)彩灯的亮灭。彩灯多种花样循环变换:从左至右一个一个点亮至全亮,然后从右至左一个一个熄灭至全灭;从左右两边同时向中间点亮至全亮,然后向两边逐个熄灭;中间间隔一个点亮。

(2)可以控制彩灯变换的节奏快慢:2个键控制四种节奏。

(3)加有清零开关,暂停键。

(4)有音乐模块,彩灯变换的同时伴有乐曲。

参数指标:系统时钟20MHz,存放4/4拍简单曲子,如梁祝,釆茶舞曲;至少一首。

演示视频:FPGA的音乐彩灯VHDL流水灯LED花样节奏变化_Verilog/VHDL资源下载

FPGA代码资源下载网:hdlcode.com

代码下载:

FPGA的音乐彩灯VHDL流水灯LED花样节奏变化_Verilog/VHDL资源下载名称:FPGA的音乐彩灯VHDL流水灯LED(代码在文末付费下载)软件:Quartus语言:VHDL代码功能:(1)设计一彩灯控制电路,按要求控制8路(彩灯由发光 二极管代替,受实验箱限制,多路同样控制方法)彩灯的亮灭。彩灯多种花样循环变换:从左至右一个一个点亮至全亮,然后从右至左一个一个熄灭至全灭;从左右两边同时向中间点亮至全亮,然后向两边逐个熄灭;中间间隔一个点亮。(2)可以控制彩灯变换的节奏icon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=203

部分代码展示

LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY tonetab is
PORT(index: in std_logic_vector(3 downto 0); 
tone:out std_logic_vector( 16 downto 0));
END;
ARCHITECTURE one of tonetab is
BEGIN
search:PROCESS( index)
BEGIN
CASE index is--控制音调的预置数
WHEN "0000"=>tone<="11111111111111111";--0
WHEN "0001"=>tone<="10110101010110000";--中音 1
WHEN "0010"=>tone<="10111101011111011";--中音 2
WHEN "0011"=>tone<="11000100101111101";--中音 3
WHEN "0100"=>tone<="11001000000100101";--中音4
WHEN "0101"=>tone<="11001110001011000"; --- 中音 5 
WHEN "0110"=>tone<="10100011100111000";--“ 中音 6
WHEN "0111"=>tone<="11011000011100111";---中音 7
WHEN "1000"=>tone<="11011010101011000";--一 高音 1
WHEN "1001"=>tone<="11011110101111101";----高音 2
WHEN "1010"=>tone<="11100010010111110";--“ 高音 3
WHEN "1011"=>tone<="11100100000010010";--一高音4
WHEN "1100"=>tone<="11100111000101100";--“ 高音 5
WHEN "1101"=>tone<="11101001110011011";--“ 高音 6
WHEN "1110"=>tone<="11101101010101100";--一 高高 1
when others =>null;
END CASE;
END PROCESS;
END one;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY speaker is
PORT(clk: in std_logic;
tone:in std_logic_vector( 16 downto 0);--17 
spks:out std_logic);
END speaker;
ARCHITECTURE one of speaker is
SIGNAL preclk,fullspks:std_logic;
BEGIN
PROCESS(clk,tone)---17位可预置计数器 
VARIABLE count11:std_logic_vector(16 downto 0);
BEGIN
IF clk'event AND clk='1' THEN
IF count11="11111111111111111" THEN--TONE〜11111111111111111
count11 :=tone;
fullspks<='1';
ELSE count11:=count11+1;fullspks<='0';END IF; 
END IF;END PROCESS;
PROCESS(fullspks)--二分频
VARIABLE count2: std_logic;
BEGIN
IF fullspks'event AND fullspks='1' THEN count2:=not count2;
IF count2='1' THEN spks<='1';
ELSE spks<='0';END IF; END IF;END PROCESS;END;

设计文档:

设计文档.doc

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

分频模块

控制模块

显示模块

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值