欢迎来到天天文库
浏览记录
ID:50812809
大小:31.50 KB
页数:6页
时间:2020-03-14
《VHDL实现多路彩灯控制器.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、VHDL实现多路彩灯控制器本文介绍应用美国ALTERA公司的MAX+PlusII平台,使用VHDL硬件描述语言实现的多路彩灯控制器。一、多路彩灯控制器设计原理设计一个彩灯控制程序器。可以实现四种花型循环变化,有复位开关。整个系统共有三个输入信号CLK,RST,SelMode,八个输出信号控制八个彩灯。时钟信号CLK脉冲由系统的晶振产生。各种不同花样彩灯的变换由SelMode控制.硬件电路的设计要求在彩灯的前端加74373锁存器。用来对彩灯进行锁存控制。此彩灯控制系统设定有四种花样变化,这四种花样可以进行切换,四种花样分别为:(1)彩灯从左到右逐次闪亮。然后从右到左
2、逐次熄灭。(2)彩灯两边同时亮两个,然后逐次向中间点亮。(3)彩灯从左到右两个两个点亮,然后从右到左两个两个逐次点亮。(4)彩灯中间两个点亮。然后同时向两边散开。二、多路彩灯控制器的VHDL的实现本控制电路采用VHDL语言设计。运用自顶而下的设计思想,按功能逐层分割实现层次化设计。根据多路彩灯控制器的设计原理,将整个控制器分为四个部分,分别对应彩灯的四种变化模式、利用VHDL语言实现该功能程序如下:LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;USEIEEE.std_loglc_ARITH.ALL;USEIEEE.std_logic
3、_UNSIGNED.ALL;ENTITYCaiDengISport(CLK:INstd_logic;RST:instd_logic;SelMode:instd_logic_vector(1downto0);--彩灯花样控制Light:outstd_logic_vector(7downto0));ENDCaiDeng;ARCHITECTUREcontrolOFCaiDengISSIGNALclk1ms:std_logic:='0';SIGNALcnt1:std_logic_vector(3downto0):="0000";SIGNALent2:std_logic_v
4、ector(1downto0):="00";SIGNALcnt3:std_logic_vector(3downto0):="0000";SIGNALcnt4:std_logic_vector(1downto0):="00";BEGINP1:PR0CESS(clk1ms)BEGINif(clk1ms'EVENTANDclk1ms='1')thenifselmode="00"then--第一种彩灯花样的程序ifcnt1="1111"thencnt1<="0000";elsecnt1<=cnt1+1;endif;casecnt1iswhen"0000"=>light<=
5、"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
6、"1010"=>light<="11111000";when"1011"=>light<="11110000";when"1100"=>light<="11100000";when"1101"=>light<="11000000";when"1110"=>light<="10000000";whenothers=>light<="00000000";endcase;elsifselmode="01"then--第二种彩灯花样的程序ifcnt2="11"thencnt2<="00";elsecnt2<=cnt2+1;endif;casecnt2iswhen"00"=
7、>light<="10000001";when"01"=>light<="11000011";when"10"=>light<="11100111";when"11"=>light<="11111111";whenothers=>light<="00000000";endease;elsifselmode="10"then--第三种彩灯花样的程序ifcnt3="1111"thencnt3<="0000";elsecnt3<=cnt3+1;endif;casecnt3iswhen"0000"=>light<="11000000";when"0001"=>light<
8、="011
此文档下载收益归作者所有