1彩灯控制器设计与实现2周四实验:彩灯控制器设计与实现基本任务与要求:功能与要求:设计并实现一彩灯控制器,要有多种花型变化(至少设计16种);多种花型可以自动变换,循环往复;彩灯变换的快慢节拍可以选择;彩灯控制器具有清零开关。16种花色(四种亮灭方案:sel00表示全亮全灭交替;sel01表示从左到右逐次亮灯每次亮一个灯;sel10表示从左到右每次亮两个灯;sel11表示从左到右每次亮三个灯)的彩灯控制系统。3设计分析实用彩灯控制系统设计,可分成四个设计:一是1种频率,16种花色;4简单举例设计一个彩灯控制器,使彩灯(LED管)能连续发出四种以上不同的显示形式,随着彩灯显示图案的变化,发出不同的音响。彩灯的设计采用分模块来完成的,包括分频器、计数器、选择器、彩灯控制器。其中彩灯控制器是用来输出不同的花样,彩灯控制器的输出则是用一个二进制的计数器来控制,扬声器的输出时用不同的频率来控制,所以用了一个集成分频器来使输入的频率被分为几种不同的频率,不同频率的选择性的输出则是用一个4选一的选择器来控制。5主控模块LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYcolor4ISPORT(cLK,rst:INstd_LOGIC;sel:instd_LOGIC_VECTOR(1DOWNTO0);abcd:OUTstd_LOGIC_VECTOR(16DOWNTO0));ENDcolor4;VHDL程序6ARCHITECTUREcolorOFcolor4ISTYPEstate_1IS(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15);SIGNALstate_2:state_1;BEGINpr_1:PROCESS(cLK,rst)BEGINIFrst='1'THENstate_2=s0;--rst低电平有效ELSIFcLK'eventANDcLK='1'THEN--上升沿触发CASEstate_2ISWHENs0=state_2=s1;WHENs1=state_2=s2;WHENs2=state_2=s3;WHENs3=state_2=s4;WHENs4=state_2=s5;WHENs5=state_2=s6;WHENs6=state_2=s7;WHENs7=state_2=s8;WHENs8=state_2=s9;WHENs9=state_2=s10;WHENs10=state_2=s11;WHENs11=state_2=s12;WHENs12=state_2=s13;WHENs13=state_2=s14;WHENs14=state_2=s15;WHENs15=state_2=s0;ENDCASE;ENDIF;ENDPROCESSpr_1;pr_2:PROCESS(sel,state_2)7BEGINifsel=00thenCASEstate_2IS--彩灯全亮全灭交替WHENs0=abcd=00000000000000000;WHENs1=abcd=11111111111111111;WHENs2=abcd=00000000000000000;WHENs3=abcd=11111111111111111;WHENs4=abcd=00000000000000000;WHENs5=abcd=11111111111111111;WHENs6=abcd=00000010000000000;WHENs7=abcd=11111111111111110;WHENs8=abcd=00000000000000000;WHENs9=abcd=11111111111111111;WHENs10=abcd=00000000000000000;WHENs11=abcd=11111111111111111;WHENs12=abcd=00000000000000000;WHENs13=abcd=11111111111111111;WHENs14=abcd=00000000000000000;WHENs15=abcd=11111111111111111;ENDCASE;8elsifsel=01then--彩灯从左向右逐次点亮一个,且亮后熄灭CASEstate_2ISWHENs0=abcd=00000000000000000;WHENs1=abcd=01000000000000000;WHENs2=abcd=00100000000000000;WHENs3=abcd=00010000000000000;WHENs4=abcd=00001000000000000;WHENs5=abcd=00000100000000000;WHENs6=abcd=00000010000000000;WHENs7=abcd=00000001000000000;WHENs8=abcd=00000000100000000;WHENs9=abcd=00000000010000000;WHENs10=abcd=00000000001000000;WHENs11=abcd=00000000000100000;WHENs12=abcd=00000000000010000;WHENs13=abcd=00000000000001000;WHENs14=abcd=00000000000000100;WHENs15=abcd=00000000000000010;ENDCASE;9elsifsel=10then--彩灯从左向右同时亮两个CASEstate_2ISWHENs0=abcd=00000000000000000;WHENs1=abcd=01100000000000000;WHENs2=abcd=00110000000000000;WHENs3=abcd=00011000000000000;WHENs4=abcd=00001100000000000;WHENs5=abcd=00000110000000000;WHENs6=abcd=00000011000000000;WHENs7=abcd=00000001100000000;WHENs8=abcd=00000000110000000;WHENs9=abcd=00000000011000000;WHENs10=abcd=00000000001100000;WHENs11=abcd=00000000000110000;WHENs12=abcd=00000000000011000;WHENs13=abcd=00000000000001100;WHENs14=abcd=00000000000000110;WHENs15=abcd=00000000000000011;ENDCASE;10elsifsel=11then--彩灯从左向右同时亮3个CASEstate_2ISWHENs0=abcd=00000000000000000;WHENs1=abcd=01110000000000000;WHENs2=abcd=00111000000000000;WHENs3=abcd=00011100000000000;WHENs4=abcd=00001110000000000;WHENs5=abcd=00000111000000000;WHENs6=abcd=00000011100000000;WHENs7=abcd=00000001110000000;WHENs8=abcd=00000000111000000;WHENs9=abcd=00000000011100000;WHENs10=abcd=00000000001110000;WHENs11=abcd=00000000000111000;WHENs12=abcd=00000000000011100;WHENs13=abcd=00000000000001110;WHENs14=abcd=00000000000000111;WHENs15=abcd=10000000000000011;ENDCASE;endif;ENDPROCESSpr_2;ENDcolor;11-------------------------------------------彩灯控制模块----------------------------------------LIBRARYieee;USEieee.std_logic_1164.all;ENTITYcaidengISPORT(input:ININTEGERRANGE0TO31;rst:instd_logic;output:OUTstd_logic_vector(7downto0);sm:outstd_logic_vector(6downto0));ENDcaideng;ARCHITECTUREaOFcaidengISBEGINPROCESS(input)BEGINifrst='1'thenoutput=00000000;sm=0000000;elsecaseinputis12when0=output=10000000;sm=0000110;when1=output=01000000;sm=0000110;when2=output=00100000;sm=0000110;when3=output=00010000;sm=0000110;when4=output=00001000;sm=0000110;when5=output=00000100;sm=0000110;when6=output=00000010;sm=0000110;when7=output=00000001;sm=0000110;when8=output=00010000;sm=0011011;when9=output=00110000;sm=0011011;when10=output=00111000;sm=0011011;when11=output=01111000;sm=0011011;when12=output=01111100;sm=0011011;when13=output=01111110;sm=0011011;when14=output=11111110;sm=0011011;when15=output=11111111;sm=0011011;13when16=output=10000001;sm=1001111;when17=output=11000001;sm=1001111;when18=output=11000011;sm=1001111;when19=output=11100011;sm=0011011;when20=output=11100111;sm=1001111;when21=output=11110111;sm=1001111;when22=output=11111111;sm=1001111;when23=output=00001000;sm=1001111;when24=output=00000