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

多路彩燈控制器VHDL代碼Quartus仿真

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

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,對應變化節(jié)奏1
??clk_2:IN?STD_LOGIC;--輸出時鐘2,對應變化節(jié)奏2
??button:IN?STD_LOGIC;--節(jié)拍選擇按鍵,通過切換clk_1和clk_2控制節(jié)奏
??????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;----節(jié)拍選擇按鍵,通過切換clk_1和clk_2控制節(jié)奏
???PROCESS?(clk,?rst)
???BEGIN
??????IF?(rst?=?'1')?THEN--復位清零
?????????cnt?<=?0;
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(cnt?=?35)?THEN
????????????cnt?<=?0;--運行結束后循環(huán)
?????????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
    下載

相關推薦