基于VHDL的彩灯控制

  • 格式:doc
  • 大小:139.00 KB
  • 文档页数:9

基于VHDL的彩灯控制 一、摘 要 随着科技的发展,在现代生活中,彩灯作为一种景观应用越来越多。EDA技术的应用引起电子产品及系统开发的革命性变革,文章介绍了以VHDL为基础的彩灯控制电路程序及仿真波形。 二、关键词 VHDL;彩灯;仿真;控制 Abstract: Along with the development of technology,color lamp as a sight is used more and more in modern times life.Electron product and system development are be changed revolutionary by EDA technology, this paper introduced the circuit program con-trolling color lamp and emulation waves based on VHDL. Keywords: VHDL; color lamp; emulation; control 三、总述 随着科技日新月异的发展,在现代生活中,彩灯作为一种景观,安装在建筑物的适当地方一是作为装饰增添节日气氛,二是有一种广告宣传的作用;用在舞台上增强晚会灯光效果。对动态灯光实时控制的装置很多,如电脑编程4路彩灯控制器、CEC电脑彩灯控制器、EPROM程控编码彩灯控制器和计算机灯光控制系统。这些控制装置均运用计算机技术、电子技术和声光技术,对被控灯光系统按设定的变化方案进行亮、灭灯控制,形成各种灯光图案,有时还配以和谐的音乐,达到令人叹为观止的光、声、色的综合艺术效果。随着电子技术的发展,应用系统向着小型化、快速化、大容量、重量轻的方向发展,EDA(Electronic Design Automatic)技术的应用引起电子产品及系统开发的革命性变革。VHDL语言作为可编程逻辑器件的标准语言描述能力强,覆盖面广,抽象能力强,在实际应用中越来越广泛。设计者的原始描述是非常简练的硬件描述,经过EDA工具综合处理,最终生成付诸生产的电路描述或版图参数描述的工艺文件。整个过程通过EDA工具自动完成,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错的机会。下面介绍在美国ALTERA公司的MAX+PLUSⅡ平台 上使用VHDL实现的彩灯控制电路。 1 一种简单的控制电路VHDL编程彩灯控制电路 (1)由于CPLD (复杂可编程逻辑器件) /FPGA(现场可编程门阵列)可以重复无数次编程,在电路不做改动的情况下,只需改变程序就可以灵活地调整彩灯图案和变化方式,给灯光的变化带来很大的方便。在电路中,如果以1代表亮灯,以0代表灭灯,由0, 1按不同的规律组合代表不同的灯光图案晚会彩灯控制。以8灯为例,该电路能使彩灯依次闪亮,呈现出流水的效果。程序如下: LIBRARY IEEE; //库的使用 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PAOMADONG IS //实体说明 PORT(CLK: IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); //彩灯的数目通过改变输出 END PAOMADONG; //变量Q的位数控制 ARCHITECTURE A OF PAOMADONG IS结构体 SIGNAL W: STD_LOGIC_VECTOR(21 DOWNTO 0); SIGNAL R: STD_LOGIC; SIGNAL T: STD_LOGIC; SIGNAL s: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN P1: PROCESS(CLK) //P1灯闪的速度控制,如果外部时钟固定通过改变信号W的位数即可改变灯闪的速度也可通过外部时钟的改变来改变 BEGIN IF CLK′EVENT AND CLK=′1′then R<=W(21); W<=W+1; T<=NOT R AND W(21); END IF; END PROCESS; P2: PROCESS(t) //P2彩灯的图案控制,通过改变信号S的位数可以很方便的改变要控制图案的数目 BEGIN IF t′EVENT AND t=′1′then if s="111" then s<="000"; else s<=s+1; end if; case s is when "000"=>q<="00000001"; //改变输出变量Q的0,1组合就可得到不同的彩灯图案,该电路能使彩灯从右向左依次闪亮,循环往复,呈现出流水的效果 when "001"=>q<="00000010"; when "010"=>q<="00000100"; when "011"=>q<="00001000"; when "100"=>q<="00010000"; when "101"=>q<="00100000"; when "110"=>q<="01000000"; when "111"=>q<="10000000"; when others=>null; end case; end if; END PROCESS; END A; (2)花样为彩灯1~8从右到左逐次点亮,又从左到右逐次点亮,全灭,全亮,循环往复。修改信号S的位数为5,输出变量Q的1, 0组合如下改变。 when "00000"=>q<="00000001"; when "00001"=>q<="00000010"; when "00010"=>q<="00000100"; when "00011"=>q<="00001000"; when "00100"=>q<="00010000"; when "00101"=>q<="00100000"; when "00110"=>q<="01000000"; when "00111"=>q<="10000000"; when "01000"=>q<="10000000"; when "01001"=>q<="01000000"; when "01010"=>q<="00100000"; when "01011"=>q<="00010000"; when "01100"=>q<="00001000"; when "01101"=>q<="00000100"; when "01110"=>q<="00000010"; when "01111"=>q<="00000001"; when "10000"=>q<="00000000"; when"10001"=>q<="11111111";

2 四花样自动切换的彩灯控制器 在电子技术实验教学中,笔者设计了一种4花样自动切换的彩灯控制器。彩灯控制器的第1种花样为彩灯从右到左,然后从左到右逐次点亮,全灭全亮,第2种花样为彩灯两边同时亮1个逐次向中间移动再散 开;第3种花样为彩灯两边同时亮2个逐次向中间移动再散开;第4种花样为彩灯两边同时亮3个,然后4亮4灭, 4灭4亮,最后1灭1亮。多个花样自动变换,循环往复。时间间隔与前面一样只修改输出变量 Q的0, 1组合即可。程序如下: when "00000"=>q<="00000001"; when "00001"=>q<="00000010"; when "00010"=>q<="00000100"; when "00011"=>q<="00001000"; when "00100"=>q<="00010000"; when "00101"=>q<="00100000"; when "00110"=>q<="01000000"; when "00111"=>q<="10000000"; when "01000"=>q<="10000000"; when "01001"=>q<="01000000"; when "01010"=>q<="00100000"; when "01011"=>q<="00010000"; when "01100"=>q<="00001000"; when "01101"=>q<="00000100"; when "01110"=>q<="00000010"; when "01111"=>q<="00000001"; when "10000"=>q<="00000000"; when "10001"=>q<="11111111"; when "10010"=>q<="10000001"; when "10011"=>q<="01000010"; when "10100"=>q<="00100100"; when "10101"=>q<="00011000"; when "10110"=>q<="00100100"; when "10111"=>q<="01000010"; when "11000"=>q<="10000001"; when "11001"=>q<="11000011"; when "11010"=>q<="00111100"; when "11011"=>q<="11000011";