位置:51电子网 » 技术资料 » EDA/PLD

基于VHDL实现多路彩灯控制器设计应用

发布时间:2009/2/2 0:00:00 访问次数:2580

  一、多路彩灯控制器设计原理

  设计一个彩灯控制程序器。可以实现四种花型循环变化,有复位开关。整个系统共有三个输入信号clk,rst,selmode,八个输出信号控制八个彩灯。时钟信号clk脉冲由系统的晶振产生。各种不同花样彩灯的变换由selmode控制.硬件电路的设计要求在彩灯的前端加74373锁存器。用来对彩灯进行锁存控制。此彩灯控制系统设定有四种花样变化,这四种花样可以进行切换,四种花样分别为:

  (1)彩灯从左到右逐次闪亮。然后从右到左逐次熄灭。

  (2)彩灯两边同时亮两个,然后逐次向中间点亮。

  (3)彩灯从左到右两个两个点亮,然后从右到左两个两个逐次点亮。

  (4)彩灯中间两个点亮。然后同时向两边散开。

  二、多路彩灯控制器的vhdl的实现

  本控制电路采用vhdl语言设计。运用自顶而下的设计思想,按功能逐层分割实现层次化设计。根据多路彩灯控制器的设计原理,将整个控制器分为四个部分,分别对应彩灯的四种变化模式、利用vhdl语言实现该功能程序如下:

  library ieee;

  use ieee.std_logic_1164.all;

  use ieee.std_loglc_arith.all;

  use ieee.std_logic_unsigned.all;

  entity caideng is

  port(clk:in std_logic;

  rst:in std_logic;

  selmode:in std_logic_vector(1 downto 0);--彩灯花样控制

  light:out std_logic_vector(7 downto 0));

  end caideng;

  architecture control of caideng is

  signal clk1ms:std_logic:='0';

  signal cnt1:std_logic_vector(3 downto 0):="0000";

  signal ent2:std_logic_vector(1 downto 0):="00";

  signal cnt3:std_logic_vector(3 downto 0):="0000";

  signal cnt4:std_logic_vector(1 downto 0):="00";

  begin

  p1:pr0cess(clk1ms)

  begin

  if(clk1ms'event and clk1ms='1')then

  if selmode="00" then --第一种彩灯花样的程序

  if cnt1="1111" then

  cnt1<="0000";

  else cnt1<= cnt1+1;

  end if;

  case cnt1 is

  when "0000"=>light<="10000000";

  when "0001"=>light<="11000000";

  when "0010"=>light<="11100000";

  when "0011"=>light<="11110000";

  when "0100"=>light<="11111000";

  when "0101"=>light<="11111100";

  when "0110"=>light<="11111110";

  when "0111"=>light<="11111111";

  when "1000"=>light<="11111110";

  when "1001"=>light<="11111100";

  when "1010"=>light<="11111000";

  when "1011"=>light<="11110000";

  when "1100"=>light<="11100000";

  when "1101"=>light<="11000000";

  when "1110"=>light<="10000000";

  when others=>light<="00000000";

  end case;

  elsif selmode="01" then -- 第二种彩灯花样的程序

  if cnt2="11" then

  cnt2<="00";

  else cnt2<= cnt2+1;

  end if;

  case cnt2 is

  when "00"=>light<="10000001";

  when "01"=>light<="11000011";

  when "10"=>light<="11100111";

  when "11"=>light<="11111111";

  when others=>light<="00000000";

  end ease;

  elsif selmode="10" then --第三种彩灯花样的程序

  if cnt3="1111" then

  cnt3<="0000";

  else cnt3<=cnt3+1;

  end if;

  case cnt3 is

  when "0000"=>light<="11000000";

  when "0001"=>light<="01100000";

  when "0010"=>light<="00110000";

  when "0011"=>light<="00011000";

  when "0100"=>light<="00001100";

  when "0101"=>light<="00000110";

  when "0110"=>light<="00000011";

  when "0111"=>light<="00000110";

  when "1000"=>light<="00001100";

  when "1001"=>light<="00011000";

  when "1010"=>light<="00110000";

  when "1011"=>light<=

  一、多路彩灯控制器设计原理

  设计一个彩灯控制程序器。可以实现四种花型循环变化,有复位开关。整个系统共有三个输入信号clk,rst,selmode,八个输出信号控制八个彩灯。时钟信号clk脉冲由系统的晶振产生。各种不同花样彩灯的变换由selmode控制.硬件电路的设计要求在彩灯的前端加74373锁存器。用来对彩灯进行锁存控制。此彩灯控制系统设定有四种花样变化,这四种花样可以进行切换,四种花样分别为:

  (1)彩灯从左到右逐次闪亮。然后从右到左逐次熄灭。

  (2)彩灯两边同时亮两个,然后逐次向中间点亮。

  (3)彩灯从左到右两个两个点亮,然后从右到左两个两个逐次点亮。

  (4)彩灯中间两个点亮。然后同时向两边散开。

  二、多路彩灯控制器的vhdl的实现

  本控制电路采用vhdl语言设计。运用自顶而下的设计思想,按功能逐层分割实现层次化设计。根据多路彩灯控制器的设计原理,将整个控制器分为四个部分,分别对应彩灯的四种变化模式、利用vhdl语言实现该功能程序如下:

  library ieee;

  use ieee.std_logic_1164.all;

  use ieee.std_loglc_arith.all;

  use ieee.std_logic_unsigned.all;

  entity caideng is

  port(clk:in std_logic;

  rst:in std_logic;

  selmode:in std_logic_vector(1 downto 0);--彩灯花样控制

  light:out std_logic_vector(7 downto 0));

  end caideng;

  architecture control of caideng is

  signal clk1ms:std_logic:='0';

  signal cnt1:std_logic_vector(3 downto 0):="0000";

  signal ent2:std_logic_vector(1 downto 0):="00";

  signal cnt3:std_logic_vector(3 downto 0):="0000";

  signal cnt4:std_logic_vector(1 downto 0):="00";

  begin

  p1:pr0cess(clk1ms)

  begin

  if(clk1ms'event and clk1ms='1')then

  if selmode="00" then --第一种彩灯花样的程序

  if cnt1="1111" then

  cnt1<="0000";

  else cnt1<= cnt1+1;

  end if;

  case cnt1 is

  when "0000"=>light<="10000000";

  when "0001"=>light<="11000000";

  when "0010"=>light<="11100000";

  when "0011"=>light<="11110000";

  when "0100"=>light<="11111000";

  when "0101"=>light<="11111100";

  when "0110"=>light<="11111110";

  when "0111"=>light<="11111111";

  when "1000"=>light<="11111110";

  when "1001"=>light<="11111100";

  when "1010"=>light<="11111000";

  when "1011"=>light<="11110000";

  when "1100"=>light<="11100000";

  when "1101"=>light<="11000000";

  when "1110"=>light<="10000000";

  when others=>light<="00000000";

  end case;

  elsif selmode="01" then -- 第二种彩灯花样的程序

  if cnt2="11" then

  cnt2<="00";

  else cnt2<= cnt2+1;

  end if;

  case cnt2 is

  when "00"=>light<="10000001";

  when "01"=>light<="11000011";

  when "10"=>light<="11100111";

  when "11"=>light<="11111111";

  when others=>light<="00000000";

  end ease;

  elsif selmode="10" then --第三种彩灯花样的程序

  if cnt3="1111" then

  cnt3<="0000";

  else cnt3<=cnt3+1;

  end if;

  case cnt3 is

  when "0000"=>light<="11000000";

  when "0001"=>light<="01100000";

  when "0010"=>light<="00110000";

  when "0011"=>light<="00011000";

  when "0100"=>light<="00001100";

  when "0101"=>light<="00000110";

  when "0110"=>light<="00000011";

  when "0111"=>light<="00000110";

  when "1000"=>light<="00001100";

  when "1001"=>light<="00011000";

  when "1010"=>light<="00110000";

  when "1011"=>light<=

相关IC型号

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!