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

流水彩燈控制器VHDL代碼Quartus仿真

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

2-24011G01915E2.doc

共1個(gè)文件

名稱:流水彩燈控制器VHDL代碼Quartus仿真

軟件:Quartus

語言:VHDL

代碼功能:

流水彩燈控制器

1、具有8位彩燈。

2、按鍵切換花樣變化的速度。

3、可以切換彩燈樣式。

4、可以控制讓彩燈循環(huán)變化。

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

設(shè)計(jì)文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. 程序仿真

部分代碼展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
ENTITY?water_lamp_led?IS
???PORT?(
??????clk????????:?IN?STD_LOGIC;--64Hz
??????
??????speed_en_out????????:?OUT?STD_LOGIC;
??????led_clk????????:?IN?STD_LOGIC;
??????
??????key_speed??:?IN?STD_LOGIC;--切換速度,按下高電平
??????
??????key_style??:?IN?STD_LOGIC;--切換樣式
??????
??????key_cycle??:?IN?STD_LOGIC;--切換循環(huán)顯示
??????
??????led????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--led?低亮
???);
END?water_lamp_led;
ARCHITECTURE?ARCH?OF?water_lamp_led?IS
???
???SIGNAL?led_inverse????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???
???SIGNAL?key_speed_stable???:?STD_LOGIC?:=?'0';
???SIGNAL?key_style_stable???:?STD_LOGIC?:=?'0';
???SIGNAL?key_cycle_stable???:?STD_LOGIC?:=?'0';
???
???SIGNAL?key_speed_stable_0?:?STD_LOGIC?:=?'0';
???SIGNAL?key_style_stable_0?:?STD_LOGIC?:=?'0';
???SIGNAL?key_cycle_stable_0?:?STD_LOGIC?:=?'0';
???SIGNAL?key_speed_stable_1?:?STD_LOGIC?:=?'0';
???SIGNAL?key_style_stable_1?:?STD_LOGIC?:=?'0';
???SIGNAL?key_cycle_stable_1?:?STD_LOGIC?:=?'0';
???
???SIGNAL?key_speed_pressed??:?STD_LOGIC;
???SIGNAL?key_style_pressed??:?STD_LOGIC;
???SIGNAL?key_cycle_pressed??:?STD_LOGIC;
???
???SIGNAL?cycle_en???????????:?STD_LOGIC?:=?'0';
???
???SIGNAL?speed_en???????????:?STD_LOGIC?:=?'0';
???
???SIGNAL?style_num??????????:?STD_LOGIC_VECTOR(1?DOWNTO?0)?:=?"00";
???
???--SIGNAL?led_clk????????????:?STD_LOGIC;
???
???SIGNAL?style_cnt_1????????:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";
???SIGNAL?style_cnt_2????????:?STD_LOGIC_VECTOR(2?DOWNTO?0)?:=?"000";
???SIGNAL?style_cnt_3????????:?STD_LOGIC_VECTOR(2?DOWNTO?0)?:=?"000";
???
???SIGNAL?led_1??????????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?led_2??????????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?led_3??????????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???
???SIGNAL?cycle_count????????:?STD_LOGIC_VECTOR(4?DOWNTO?0)?:=?"00000";
BEGIN
???led?<=?NOT(led_inverse);--led?低亮
???speed_en_out<=speed_en;
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????key_speed_stable?<=?key_speed;
?????????key_style_stable?<=?key_style;
?????????key_cycle_stable?<=?key_cycle;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????key_speed_stable_0?<=?key_speed_stable;
?????????key_style_stable_0?<=?key_style_stable;
?????????key_cycle_stable_0?<=?key_cycle_stable;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????key_speed_stable_1?<=?key_speed_stable_0;
?????????key_style_stable_1?<=?key_style_stable_0;
?????????key_cycle_stable_1?<=?key_cycle_stable_0;
??????END?IF;
???END?PROCESS;
???
???key_speed_pressed?<=?key_speed_stable_0?AND?NOT(key_speed_stable_1);--獲取按鍵上升沿
???key_style_pressed?<=?key_style_stable_0?AND?NOT(key_style_stable_1);--獲取按鍵上升沿
???key_cycle_pressed?<=?key_cycle_stable_0?AND?NOT(key_cycle_stable_1);--獲取按鍵上升沿
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(key_cycle_pressed?=?'1')?THEN
????????????cycle_en?<=?NOT(cycle_en);--切換循環(huán)顯示
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(key_speed_pressed?=?'1')?THEN
????????????speed_en?<=?NOT(speed_en);--切換速度
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(key_style_pressed?=?'1')?THEN
????????????IF?(style_num?>=?"10")?THEN
???????????????style_num?<=?"00";
????????????ELSE
???????????????style_num?<=?style_num?+?"01";--切換花型
????????????END?IF;
?????????END?IF;
??????END?IF;
???END?PROCESS;?
??????????????
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(key_style_pressed?=?'1')?THEN
????????????style_cnt_1?<=?"0000";
????????????style_cnt_2?<=?"000";
????????????style_cnt_3?<=?"000";
?????????ELSIF?(led_clk?=?'1')?THEN--計(jì)數(shù),用于流水燈的變化
????????????style_cnt_1?<=?style_cnt_1?+?"0001";
????????????style_cnt_2?<=?style_cnt_2?+?"001";
????????????style_cnt_3?<=?style_cnt_3?+?"001";
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????CASE?style_cnt_1?IS--花型1控制
????????????WHEN?"0000"?=>
???????????????led_1?<=?"10000000";
????????????WHEN?"0001"?=>
???????????????led_1?<=?"11000000";
????????????WHEN?"0010"?=>
???????????????led_1?<=?"11100000";
????????????WHEN?"0011"?=>
???????????????led_1?<=?"11110000";
????????????WHEN?"0100"?=>
???????????????led_1?<=?"11111000";
????????????WHEN?"0101"?=>
???????????????led_1?<=?"11111100";
????????????WHEN?"0110"?=>
???????????????led_1?<=?"11111110";
????????????WHEN?"0111"?=>
???????????????led_1?<=?"11111111";
????????????WHEN?"1000"?=>
???????????????led_1?<=?"11111110";
????????????WHEN?"1001"?=>
???????????????led_1?<=?"11111100";
????????????WHEN?"1010"?=>
???????????????led_1?<=?"11111000";
????????????WHEN?"1011"?=>
???????????????led_1?<=?"11110000";
????????????WHEN?"1100"?=>
???????????????led_1?<=?"11100000";
????????????WHEN?"1101"?=>
???????????????led_1?<=?"11000000";
????????????WHEN?"1110"?=>
???????????????led_1?<=?"10000000";
????????????WHEN?"1111"?=>
???????????????led_1?<=?"00000000";
????????????WHEN?OTHERS?=>
?????????END?CASE;
??????END?IF;
???END?PROCESS;

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

  • 2-24011G01915E2.doc
    下載

相關(guān)推薦