您现在的位置是: 首页 > 旅游信息 旅游信息

自由行电动车max2彩灯怎么开_自由行电动车max2彩灯怎么开视频

ysladmin 2024-07-25 人已围观

简介自由行电动车max2彩灯怎么开_自由行电动车max2彩灯怎么开视频       现在我来为大家分享一下关于自由行电动车max2彩灯怎么开的问题,希望我的解答能够帮助到大家。有关于自由行电动车max2彩灯怎

自由行电动车max2彩灯怎么开_自由行电动车max2彩灯怎么开视频

       现在我来为大家分享一下关于自由行电动车max2彩灯怎么开的问题,希望我的解答能够帮助到大家。有关于自由行电动车max2彩灯怎么开的问题,我们开始谈谈吧。

1.?????е綯??max2?ʵ???ô??

2.EDA课程设计:彩灯控制器

自由行电动车max2彩灯怎么开_自由行电动车max2彩灯怎么开视频

?????е綯??max2?ʵ???ô??

       设输入时钟为6M,

       下面是我重新编译过的,改动了点,仿真之后,状态是正确的

       由于现在是十的六次方分频,普通的仿真工具如果要作真实的仿真,要很长的时间,当时我仿了一个多钟头,后来,我把分频器改成几分频,(只修改下面的参数),得出状态功能是正确的,但是这个输出不是1S,和0.5S,不过这个要求按照程序上写,因该没有问题.最好你能找到开发板,接上用一下.

       我将各种显示方式,都设成一种状态,然后进行状态转化.如果出问题,因该是前面的分频问题.

       当然没有规定要求,可以设输入时钟就是0.5S,然后2分频变0.1S,就可以简化很多.有问题给我发消息

       我在程序后面加了点注释.

       library ieee;

       use ieee.std_logic_1164.all;

       use IEEE.STD_LOGIC_ARITH.ALL;

       use IEEE.STD_LOGIC_UNSIGNED.ALL;

       entity fengxi is port(

       reset,adjust,clk:in std_logic;

       y:out std_logic_vector(9 downto 0));

       end;

       architecture behiol of fengxi is

       signal count:integer range 0 to 6000;--计数器,分频成豪秒

       signal millisecond1,millisecond2:integer range 0 to 500;--分频成,秒

       signal second1,second2:std_logic;--1S,0.5 S

       signal countclk:std_logic;--状态机触发时钟

       signal y_out:std_logic_vector(9 downto 0);

       type states is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,

       s12,s13,s14,s15,s16,s17,s18,s19,s20,S21);--状态生成,将所需变化以状态机形式输出

       signal state:states;

       begin

       process(CLK,RESET)

       begin

       if RESET='1' then count<=0;second1<='0';second2<='0';

       elsif CLK'event and CLK='1' then

       count<=count+1;--毫秒,可调变成自己想要的时钟

        if count=6000 then

        millisecond1<=millisecond1+1;

        millisecond2<=millisecond2+1;

        count<=0;

        end if;

       if millisecond1=500 then--1S可调变成自己想要的时钟

       second1<=not second1;

       millisecond1<=0;

       end if;

       if millisecond2=250 then--0.5S可调变成自己想要的时钟

       second2<=not second2;

       millisecond2<=0;

       end if;

       end if;

       end process;

       process(adjust,reset)--调速

       begin

       if (reset='1') then countclk<='0';else

       if adjust='1' then countclk<=second1;end if;

       if adjust='0' then countclk<=second2;end if;

       end if;

       end process;

       process(reset)--状态转移

       begin

       if (reset='1') then

       state<=s0;else

       if(rising_edge(countclk)) then

       case state is

       when s0 =>state<=s1;

       when s1=>state<=s2;

       when s2=>state<=s3;

       when s3 =>state<=s4;

       when s4=>state<=s5;

       when s5=>state<=s6;

       when s6=>state<=s7;

       when s7 =>state<=s8;

       when s8=>state<=s9;

       when s9=>state<=s10;

       when s10 =>state<=s11;

       when s11=>state<=s12;

       when s12=>state<=s13;

       when s13=>state<=s14;

       when s14 =>state<=s15;

       when s15=>state<=s16;

       when s16=>state<=s17;

       when s17 =>state<=s18;

       when s18=>state<=s19;

       when s19=>state<=s20;

       when s20=>state<=s21;

       WHEN S21=>STATE<=S0;

       end case;

       end if;

       end if;

       end process;

       process(reset)--状态赋值输出

       begin

       if reset='1' then

       y_out<="1111111111";

       else

       case state is

       when s0=>y_out<="1111111111";

       when s1=>y_out<="0111111111";

       when s2=>y_out<="0101111111";

       when s3=>y_out<="0101011111";

       when s4=>y_out<="0101010111";

       when s5=>y_out<="0101010101";

       when s6=>y_out<="1111111111";

       when s7=>y_out<="1011111111";

       when s8=>y_out<="1010111111";

       when s9=>y_out<="1010101111";

       when s10=>y_out<="1010101011";

       when s11=>y_out<="1010101010";

       when s12=>y_out<="1111111111";

       when s13=>y_out<="0111111111";

       when s14=>y_out<="0011111111";

       when s15=>y_out<="0001111111";

       when s16=>y_out<="0000111111";

       when s17=>y_out<="0000011111";

       when s18=>y_out<="0000001111";

       when s19=>y_out<="0000000111";

       when s20=>y_out<="0000000011";

       when s21 =>y_out<="0000000001";

       when others=>y_out<="ZZZZZZZZZZ";

       end case;

       end if;

       y<=y_out;

       end process;

       end;

EDA课程设计:彩灯控制器

       开关电源是一种电压转换电路,主要的工作内容是升压和降压,广泛应用于现代电子产品。因为开关三极管总是工作在 “开” 和“关” 的状态,所以叫开关电源。开关电源实质就是一个振荡电路,这种转换电能的方式,不仅应用在电源电路,在其它的电路应用也很普遍,如液晶显示器的背光电路、日光灯等。开关源与变压器相比具有效率高、稳性好、体积小等优点,缺点是功率相对较小,而且会对电路产生高频干扰,电路复杂不易维修等。

       在谈开关电源之前,先熟悉一下变压器反馈式振荡电路,能产生有规律的脉冲电流或电压的电路叫振荡电路,变压器反馈式振荡电路就是能满足这种条件的电路;它于基本放大电路与一个反馈回路组成,其中C2、L1组成一个并联谐振选频电路,在电路通电的瞬间VT导通,此时在C2、L1组成的并联谐振电路上产生非常丰富的谐波,当外加频率和并联谐振电路的固有频率相等时,电路进入振荡状态,并通过L3反馈到VT的基极进一步放大,最终形成有规律的脉冲电流或电压输出到负载RL上。开关电源就是围绕变压器反馈式振荡电路而设计,只不过在原来的基础上增加了一些保护和控制电路,我们可以用分析振荡电路的方法来分析开关电源。

       开关电源振按荡方式分,可以分为自激式和它激式两种,自激式是无须外加信号源能自行振荡,自激式完全可以把它看作是一个变压器反馈式振荡电路,而它激式则完全依赖于外部维持振荡,在实际应用中自激式应用比较广泛。根据激励信号结构分类;可分为脉冲调宽和脉冲调幅两种,脉冲调宽是控制信号的宽度,也就是频率,脉冲调幅控制信号的幅度,两者的作用相同都是使振荡频率维持在某一范围内,达到稳定电压的效果。变压器的绕组一般可以分成三种类型,一组是参与振荡的初级绕组,一组是维持振荡的反馈绕组,还有一组是负载绕组。在家用电器中使用的开关电源,将220V的交流电经过桥式整流,变换成300V左右的直流电,滤波后进入变压器后加到开关管的集电极进行高频振荡,反馈绕组反馈到基极维持电路振荡,负载绕组感应的电信号,经整流、滤波、稳压得到的直流电压给负载提供电能。负载绕组在提供电能的同时,也肩负起稳定电压的能力,其原理是在电压输出电路接一个电压取样装置,监测输出电压的变化情况,及时反馈给振荡电路调整振荡频率,从而达到稳定电压的目的,为了避免电路的干扰,反馈回振荡电路的电压会用光电耦合器隔离。大多数开关电源有待机电路,在待机状态开关电源还在振荡,只是频率比正常工作时要低。

       有些开关电源很复杂,元件密密麻麻,很多保护和控制电路,在没有技术支持的情况下,维修起来是一件很头疼的事。在我面对这种情况是,首先我会找到开关管及其参与振荡的电路,把它从电路中分离出来,看它是否满足振荡的条件,如检测偏置是否正常,正反馈有无故障,还有开关管本身,开关电源有极强大的保护功能,排除后检察控制和保护及负载电路。

       --------------------------------------------------

       开关电源 测试方法

       一. 耐电压

       (HI.POT,ELECTRIC STRENGTH ,DIELECTRIC VOLTE WITHSTAND)KV

       1.1 定义:于指定的端子间,例如:I/P-O/P,I/P-FG,O/P-FG间,可耐交流之有效值,漏电流一般可容许10毫安,时间1分钟。

       1.2 测试条件:Ta:25摄氏度;RH:室内湿度。

       1.3 测试回路:

       1.4 说明:

       1.4.1 耐压测试主要为防止电气破坏,经由输入串入之高压,影响使用者安全。

       1.4.2 测试时电压必须由0V开始调升,并于1分钟内调至最高点。

       1.4.2 放电时必须注意测试器之Timer设定,于OFF前将电压调回 0V。

       1.4.3 安规认证测试时,变压器需另行加测,室内 ,温度25摄氏度,RH:95摄氏度,48HR,后测试变压器初/次级与初级/CORE。

       1.4.5生产线测试时间为1秒钟。

       二.纹波噪声(涟波杂讯电压)

       (Ripple & Noise)%,mv

       2.1定义:

       直流输出电压上重叠之交流电压成份最大值(P-P)或有效值。

       2.2测试条件:

       I/P: Nominal

       O/P : Full Load

       Ta : 25℃

       2.3测试回路:

       2.4测试波形:

       2.5说明:

       2.5.1示波器之GND线愈短愈好,测试线得远离PUS。

       2.5.2使用1:1之Probe。

       2.5.3 Scope之BW一般设定于20MHz,但是对于目前的网络产品测试纹波噪声最好将BW设为最大。

       2.5.4 Noise与使用仪器,环境差异极大,因此测试必须表明测试地点。

       2.5.5测试纹波噪声以不超过原规格值 +1%Vo。

       三.漏电流(泄漏电流)

       (Leakage Current)mA

       3.1定义:

       输入一机壳间流通之电流(机壳必须为接大地时)。

       3.2测试条件:

       I/P:Vin max.×1.06(TUV)/60Hz

       Vin max.(UL1012)/60Hz

       O/P: No Load/Full Load

       Ta: 25 ℃

       3.3测试回路:

       3.4说明:

       3.4.1 L,N均需测。

       3.4.2UL1012 R值为1K5。

       TUV R值为2K/0。15uF。

       3.4.3漏电流规格TUV:3。5mA,UL1012:5mA。

       四.温度测试

       (Temperature Test)

       4.1定义:

       温度测试指PSU于正常工作下,其零件或Case温度不得超出其材质规

       格或规格定值。

       4.2测试条件:

       I/P: Nominal

       O/P: Full Load

       Ta : 25℃

       4.3测试方法:

       4.3.1将Thermo Coupler(TYPE K)稳固的固定于量测的物体上

       (速干、Tape或焊接方式)。

       4.3.2 Thermo Coupler于末端绞三圈后焊成一球状测试。

       4.3.3我们一般用点温计测量。

       4.4测试零件:

       热源及易受热源影响部分

       例如:输入端子、Fuse、输入电容、输入电感、滤波电容、桥整、热

       敏、突波吸收器、输出电容、输出电容、输出电感、变压器、铁芯、

       绕线、散热片、大功率半导体、Case、热源零件下之P.C.B.……。

       4.5零件温度限制:

       4.5.1零件上有标示温度者,以标示之温度为基准。

       4.5.2其他未标示温度之零件,温度不超过P.C.B.之耐温。

       4.5.3电感显示个别申请安规者,温升限制65℃Max(UL1012),75℃

       Max(TUV)。

       五.输入电压调节率

       (Line Regulation), %

       5.1定义:

       输入电压在额定范围内变化时,输出电压之变化率。

       Vmax-Vnor

       Line Regulation(+)=------------------

       Vnor

       Vnor-Vmin

       Line Regulation(-)=------------------

       Vnor

       Vmax-Vmin

       Line Regulation=----------------

       Vnor

       Vnor:输入电压为常态值,输出为满载时之输出电压。

       Vmax:输入电压变化时之最高输出电压。

       Vmin:输入电压变化时之最低输出电压。

       5.2测试条件:

       I/P:Min./Nominal/Max

       O/P:Full Load

       Ta:25℃

       5.3测试回路:

       5.4说明:

       Line Regulation 亦可直接Vmax-Vnor与Vmin-Vnor之±最大

       值以mV表示,再配合Tolerance%表示。

       六.负载调节率

       (Load Regulation)%

       5.1定义:

       输出电流于额定范围内变化(静态)时,输出电压之变化率。

       |Vminl-Vcent|

       Line Regulation(+)=------------------×100%

       Vcent

       |Vcent-VfL|

       Line Regulation(-)=------------------×100%

       Vcent

       |VminL-VfL|

       Line Regulation(%)=----------------×100%

       Vcent

       VmilL:最小负载时之输出电压

       VfL:满载时之输出电压

       Vcent:半载时之输出电压

       6.2测试条件:

       I/P:Nominal

       O/P:Min./Half/Full Load

       Ta:25℃

       6.3测试回路:

       6.4Load Regulation亦可直接Vmin.L-Vcent与Vcent-Vmax.之±最大

       值以mV表示,再配合Tolerance%表示。

       以前做的设计,粘贴时图形没出来,参考一下,记得给分啊

       一.设计目的

       1、学习EDA开发软件和MAX+plus Ⅱ的使用方法,熟悉可编程逻辑器件的使用,通过制作来了解彩灯控制系统。

       2、进一步掌握数字电路课程所学的知识。

       3、了解数字电路设计的一般思路,进一步解决和分析问题。

       4、培养自己的编程和谨慎的学习态度

       二、.设计题目内容和要求

       (1)课题内容:

       用EDA技术设计一个彩灯控制器,使彩灯(LED管)能连续发出三种以上不同的花型(自拟);

       随着彩灯显示图案的变化,发出不同的音响声。

       要求使用7段数码管显示当前显示的花型,如第一种花型显示A1,第二种花型显示b2,第三种花型显示C3

       (2)主要任务:完成该系统的硬件和软件的设计,并利用实验箱制作出实物演示,调试好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提交一篇课程设计报告。

       三、总体方案设计与选择

       1 总体方案的设计

        方案一:电路分为三个部分:彩灯花型模块、声音模块,时钟模块。用时钟控制声音和花型,整体使用相同的变量与信号,主体框图如下;

        图三—1-1方案一的的流程图

       方案二:电路分为五个模块:分频器模块、16进制计数器、4进制计数器,4选1选择器、彩灯控制器。其中彩灯控制器是用来输出不同的花样,彩灯控制器的输出则是用一个16进制的计数器来控制,扬声器的输出时用不同的频率来控制,所以用了一个集成分频器来使输入的频率被分为几种不同的频率,不同频率的选择性的输出则是用一个4选一的选择器来控制。整体框图如下:

        图三—1-2方案二的流程图

       2、方案的选择

        方案一是将融合在一起,原理思路简单,元件种类使用少,但是在编程时要使用同一变量和信号,这样就会给编程带来很大的困难,另外中间单元连线较多,不容易检查,门电路使用较多,电路的抗干扰能力会下降。

        方案二将彩灯花型控制与声音控制分开,各单元电路只实现一种功能,电路设计模块化,且编程时将工作量分开,出现错误时较容易检查,连线较少且容易组装和调试。

        结合两个方案的优缺点,我选择容易编程、组装和调试的方案二。

       四、模块电路的设计

        1、分频器模块

       设计要求显示不同的彩灯的时候要伴随不同的音乐,所以设计分频器来用不同的频率控制不同的音乐输出。

       模块说明:

       Rst:输入信号 复位信号 用来复位分频器的输出使输出为“0”,及没有音乐输出。

       Clk:输入信号 模块的功能即为分频输入的频率信号。

       Clk_4、clk8、clk_12、clk_16:输出信号 即为分频模块对输入信号clk的分频,分别为1/4分频输出、1/8分频输出、1/12分频输出、1/16分频输出。不同的频率会发出不同的声音。如图

        图四-1分频器电路图

        2、16进制计数器

       16进制模块用来控制彩灯输出模块,即确定彩灯控制器的不同的输出。

       Rst:输入信号 复位信号 用来复位16进制使其输出为“00000”,即彩灯不亮。

       Clk1:输入信号 用来给模块提供工作频率。

       Count_out[3..0]:输出信号 即为16进制计数器的输出,此输出信号作为彩灯的输入信号。

       如图四-2

        图四-2 16进制计数器电路图

       3、4进制计数器模块

       4进制计数器作为选择器的输入来控制选择器选择不同的频率作为输出控制扬声器工作。

       Clk2:输入信号 来为计数器提供工作频率。

       Rst:输入信号 复位信号 使计数器的输出为“00”。

       如图四-3

        图四-3 4进制计数器电路图

       4、4选1选择器模块

       Rst:输入信号复位信号使选择器的输出为“0”。

       In1、in2、in3、in4:输入信号接分频器的输出。

       Inp[1..0]:输入信号接4进制计数器的输出用来控制选择器的选择不同的输入选择不同的输出。

       Output2:输出信号直接接扬声器即输出的是不同的频率来控制扬声器播放声音

       如图四—4

        图四—4 4选1选择器电路图

       5、彩灯控制模块

        彩灯控制用的模式6来进行显示。

        图四—5—1模式6结构图

       彩灯控制模块用来直接控制彩灯的输出,使彩灯表现出不同的花样。

       Rst:输入信号 使彩灯控制模块的输出为“00000000”,即让彩灯无输出。

       Input[4..0]:输入信号 不同的输入使彩灯控制模块有不同的输出即彩灯显示出不同的花样。

       Output3[7..0]:输出信号 直接与数码管相连来控制数码管。

       如图四—5—2

       图四-5-2 彩灯控制电路图

       五、EDA设计与仿真

       1、源程序:

       ----------------------------------------------分频器模块-----------------------------------------

       LIBRARYieee;

       USEieee.std_logic_1164.all;

       ENTITYfenpinqi IS

        PORT

        (

        clk2,rst :IN std_logic;

        clk_12,clk_4,clk_16,clk_8 : OUT std_logic

        );

       ENDfenpinqi;

       ARCHITECTUREcd OF fenpinqi IS

       begin

       p1:process(clk2,rst)

        variable a:integer range 0 to 20;

        begin

        if rst='1' then

        clk_4<='0'; ----- 复位信号控制部分

        else

        if clk2'event and clk2='1'then

        if a>=3 then

        a:=0;

        clk_4<='1';

        else

        a:=a+1;

        clk_4<='0';

        end if;

        end if;

        end if;

       endprocess p1;

       p2:process(clk2,rst)

        variable b:integer range 0 to 20;

        begin

        if rst='1' then

        clk_16<='0'; ----- 复位信号控制部分

        else

        if clk2'event and clk2='1'then

        if b>=15 then

        b:=0;

        clk_16<='1';

        else

        b:=b+1;

        clk_16<='0';

        end if;

        end if;

        end if;

       endprocess p2;

       p3:process(clk2,rst)

        variable c:integer range 0 to 20;

        begin

        if rst='1' then

        clk_8<='0'; ----- 复位信号控制部分

        else

        if clk2'event and clk2='1'then

        if c>=7 then

        c:=0;

        clk_8<='1';

        else

        c:=c+1;

        clk_8<='0';

        end if;

        end if;

        end if;

       endprocess p3;

       p4:process(clk2,rst)

        variable d:integer range 0 to 40;

        begin

        if rst='1' then

        clk_12<='0'; ----- 复位信号控制部分

        else

        if clk2'event and clk2='1'then

        if d>=11 then

        d:=0;

        clk_12<='1';

        else

        d:=d+1;

        clk_12<='0';

        end if;

        end if;

        end if;

       endprocess p4;

       endcd;

       ----------------------------------------------4选1选择器---------------------------------------

       LIBRARYieee;

       USEieee.std_logic_1164.all;

       ENTITYxzq4_1 IS

        PORT

        (

        rst:in std_logic;

        inp:in integer range 0 to 3;

        in1,in2,in3,in4 : In std_logic;

        output2 :OUT std_logic

        );

       ENDxzq4_1;

       ARCHITECTUREa OF xzq4_1 IS

       BEGIN

        PROCESS (rst,inp)

        BEGIN

        if(rst='1') then output2<='0';

        else

        case inp is

        when 0=>output2<=in1;

        when 1=>output2<=in2;

        when 2=>output2<=in3;

        when 3=>output2<=in4;

        when others=>null;

        end case;

        end if;

        END PROCESS;

       ENDa;

       -------------------------------------------彩灯控制模块----------------------------------------

       LIBRARYieee;

       USEieee.std_logic_1164.all;

       ENTITYcaideng IS

        PORT

        (

        input :

       IN INTEGER RANGE

       0 TO 15;

        rst:in std_logic;

        output3 :OUT std_logic_vector(7 downto 0);

        sm :out std_logic_vector(6 downto 0)

        );

       ENDcaideng;

       ARCHITECTUREa OF caideng IS

       BEGIN

        PROCESS (input)

        BEGIN

        if rst='1' thenoutput3<="00000000";sm<="0000000";

        else

        case input is

        when 0=>output3<="00111000";sm<="0000110";

        when1=>output3<="00001111";sm<="0000110";

        when2=>output3<="00111110";sm<="0000110";

        when3=>output3<="01111111";sm<="0000110";

       when4=>output3<="01011011";sm<="1011011";

       when5=>output3<="01110110";sm<="1011011";

        when6=>output3<="00001111";sm<="1011011";

        when7=>output3<="01111111";sm<="1011011";

       when8=>output3<="01101101";sm<="1001111";

        when9=>output3<="00000111";sm<="1001111";

        when10=>output3<="01110111";sm<="1001111";

        when11=>output3<="01111011";sm<="1001111";

        when12=>output3<="00111000";sm<="1100110";

        when13=>output3<="00111111";sm<="1100110";

        when14=>output3<="00111110";sm<="1100110";

        when 15=>output3<="01111001";sm<="1100110";

        when others=>null;

        end case;

        end if;

        end process;

        end a;

       --------------------------------------------16进制计数器模块-----------------------------------

       LIBRARYieee;

       USEieee.std_logic_1164.all;

       ENTITYcounter_16 IS

        PORT

        (

        clk,rst :IN std_logic;

        count_out :

       OUT INTEGER RANGE

       0 TO 15);

       ENDcounter_16;

       ARCHITECTUREa OF counter_16 IS

       BEGIN

        PROCESS (rst,clk)

        variable temp:integer range 0 to 16;

        BEGIN

        IF rst='1' THEN

        temp:=0;

        ELSIF (clk'event and clk='1') THEN

        temp:=temp+1;

        if(temp=15) then

        temp:=0;

        end if;

        END IF;

        count_out<=temp;

        END PROCESS;

       ENDa;

       -------------------------------4进制计数器模块----------------------------------

       LIBRARYieee;

       USEieee.std_logic_1164.all;

       ENTITYcounter_4 IS

        PORT

        (

        clk,rst :IN std_logic;

        count_out :OUT integer range 0 to 3 );

       ENDcounter_4;

       ARCHITECTUREa OF counter_4 IS

       BEGIN

        PROCESS (rst,clk)

        variable temp:integer range 0 to 16;

        BEGIN

        IF rst='1' THEN

        temp:=0;

        ELSIF (clk'event and clk='1') THEN

        temp:=temp+1;

        if(temp=4) then

        temp:=0;

        end if;

        END IF;

        count_out<=temp;

        END PROCESS;

       ENDa;

       -------------------------------------------主程序----------------------------------

       LIBRARYieee;

       USEieee.std_logic_1164.all;

       ENTITYproject IS

        PORT (clk1,rst,clk2: IN std_logic;

        Out1: OUT std_logic_vector(7 downto 0);

        Out2 :out std_logic_vector(6 downto0);

        Out3: OUT std_logic);

       ENDproject;

       ARCHITECTUREstruct OF project IS

       COMPONENT counter_16 IS

        PORT(clk,rst : IN std_logic;

        count_out : OUT integer range 0 to 15 );

       ENDCOMPONENT;

       COMPONENT fenpinqi IS

        PORT(clk2,rst : IN std_logic;

        clk_12,clk_4,clk_16,clk_8 : OUT std_logic);

        END COMPONENT ;

       COMPONENT counter_4 IS

        PORT(clk,rst :IN std_logic;

        count_out :OUT integer range 0 to 3 );

       ENDCOMPONENT;

       COMPONENT xzq4_1 IS

        PORT

        (

        rst:in std_logic;

        inp:in integer range 0 to 3;

        in1,in2,in3,in4 : In std_logic;

        output2 :OUT std_logic

        );

       ENDCOMPONENT;

       COMPONENT caideng IS

        PORT

        (

        input: IN INTEGER RANGE 0 TO 15;

        rst:in std_logic;

        output3 :OUT std_logic_vector(7 downto 0);

        sm :out std_logic_vector(6 downto 0)

        );

       ENDCOMPONENT;

       SIGNALu: integer range 0 to 15;

       SIGNALw: integer range 0 to 3;

       SIGNALv1,v2,v3,v4: std_logic;

       BEGIN

       U1:counter_16PORT MAP(clk1,rst,u);

       U2:fenpinqiPORT MAP(clk2,rst, v1,v2,v3,v4);

       U3:counter_4PORT MAP(v3,rst,w);

       U4:xzq4_1 PORT MAP(rst,w, v1,v2,v3,v4,out3);

       U5:caidengPORT MAP(u,rst,out1,out2);

       ENDstruct;

       2、彩灯控制器仿真结果及数据分析

       分析:如上图,clk1控制的是彩灯模块,clk2控制的是声音模块,当rst为高电平是输出全为0,ck1每出现四个高电平,花型发生一次变化,out2分别显示1、2、3、4,out1显示不同的花型,out3发出声音,如图脉冲数不同表示发出的声音不同,但是声音与花型相比有一定的延迟。

       六、硬件实现

       1、引脚锁定图

       2、硬件仿真图

       显示第一组花型之一

       显示第二组花型之一

       显示第三组花型之一

       显示的第四组花型之一

       七、总体电路

       整个系统就是各个分模块组成来实现最后的彩灯控制功能,系统又两个时钟来控制一个是控制16进制计数器即控制彩灯控制模块来实现彩灯的不同输出,另一个时钟为分频器的输入来进行分频处理,最后用来控制扬声器发出不同的音乐,为了使效果明显尽量达到要求分频处理的时钟的频率比实现彩灯控制的时钟频率要高。

       将各个模块连在一起用在课程中学到的元件例化,将各个模块的引脚连在一起,使之成为一个整体。元件例化是VHDL设计实体构自上而下层次化设计的重要途径。整体电路如图五—1

       图七—1 整体电路图

       八、心得体会

       1、在设计时遇到一些主要问题如下:怎么将各个模块连在一起、开始硬件仿真时总是出现错误,设计方案的选择。最后我选择了元件例化将各个模块连在一起,仿真时是因为短路帽接错了,当时没有注意,在方案的选择时我们选了实现比较简单的分模块方案

       2、这次的EDA课程设计我学到得东西很多明白了理论与实践之间的差距,而且对DEA课程有了更深入的理解,尤其是知道了怎么去应用所学的知识,怎么去利用网络实现自己的要求,具体体会如下:

       (1)要想完成编程就要对DEA知识很熟悉,这样才能加快编程的速度,另外在编程时一定要小心,稍微有一点粗心都会有很多的错误出现,在出现错误后要学会寻找错误原因如名称前后不一、数据类型不同、符号写错等等

       (2)拿道题目后要注意分析,要学会总体把握,然后再一一一细化、学会将复杂的问题简单化,分析时一定要有一个明确的目标。

       (3)要学会理论联系实际,在程序导入到实验箱后,居然不显示结果,认真的检查看看操作是否有错误、试验箱中该短路的是否已用短路帽短路、又重新检查了一下程序,结果发现是短路帽接错了,所以看似很简单的操作自己操作起来可能会有很大的漏洞,所以亲自动手是很重要的。

       (4)当自己的只是有限时,要注意运用网络等一切,要学会知识的灵活运用在查阅的过程中学到了很多在书本所没有学到的知识,通过查阅相关资料进一步加深了对EDA的了解

       总的来说,通过这次课程设计不仅锻炼了我们的动手和动脑能力,也使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。还有最重要的一点就是要有一丝不苟的精神和端正认真的态度,遇到困难后要学会积极的面对。

       3、在此设计中声音会有一定的延迟,可以考虑用花型输出信号作为4选1的控制信号

       九、参考书目:

       赵伟军,《Protel99se教程》,北京,人民邮电出版社,1996年

       金西,《VHDL与复杂数字系统设计》,西安,西安电子科技大学出版社,2003

       汉泽西,《EDA技术及其应用》,北京,北京航空航天大学出版社,2004

       [4] 黄任,《VHDL入门.解惑.经典实例.经验总结》,北京,北京航空航天大学出版社,2005

       [5] 李洋,《EDA技术 使用教程》,北京,机械工业出版社,2009

       [6] 网络:EDA课程设计、EDA课程设计—彩灯控制器等

       今天关于“自由行电动车max2彩灯怎么开”的讨论就到这里了。希望通过今天的讲解,您能对这个主题有更深入的理解。如果您有任何问题或需要进一步的信息,请随时告诉我。我将竭诚为您服务。