• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

流水彩灯控制器VHDL代码Quartus仿真

07/05 13:28
241
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24011G01915E2.doc

共1个文件

名称:流水彩灯控制器VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

流水彩灯控制器

1、具有8位彩灯。

2、按键切换花样变化的速度。

3、可以切换彩灯样式。

4、可以控制让彩灯循环变化。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

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;--切换循环显示
??????
??????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);--切换循环显示
?????????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--计数,用于流水灯的变化
????????????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;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=586

  • 2-24011G01915E2.doc
    下载

相关推荐