• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

FPGA的音樂彩燈VHDL流水燈LED花樣節(jié)奏變化

9小時前
195
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1-23102022104I57.doc

共1個文件

名稱:FPGA的音樂彩燈VHDL流水燈LED(代碼在文末付費下載)

軟件:Quartus

語言:VHDL

代碼功能:

(1)設計一彩燈控制電路,按要求控制8路(彩燈由發(fā)光 二極管代替,受實驗箱限制,多路同樣控制方法)彩燈的亮滅。彩燈多種花樣循環(huán)變換:從左至右一個一個點亮至全亮,然后從右至左一個一個熄滅至全滅;從左右兩邊同時向中間點亮至全亮,然后向兩邊逐個熄滅;中間間隔一個點亮。

(2)可以控制彩燈變換的節(jié)奏快慢:2個鍵控制四種節(jié)奏。

(3)加有清零開關(guān),暫停鍵。

(4)有音樂模塊,彩燈變換的同時伴有樂曲。

參數(shù)指標:系統(tǒng)時鐘20MHz,存放4/4拍簡單曲子,如梁祝,釆茶舞曲;至少一首。

演示視頻:

FPGA代碼資源下載網(wǎng):hdlcode.com

部分代碼展示

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--控制音調(diào)的預置數(shù)
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位可預置計數(shù)器?
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;

設計文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. RTL圖

5. 仿真圖

整體仿真圖

分頻模塊

控制模塊

顯示模塊

點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=203

  • 1-23102022104I57.doc
    下載

相關(guān)推薦