名稱: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
閱讀全文