EDA多功能彩灯 实验报告

合集下载

eda花样彩灯课程设计报告

eda花样彩灯课程设计报告

eda花样彩灯课程设计报告一、课程目标知识目标:1. 学生能理解并掌握EDA(电子设计自动化)花样彩灯的基本原理与设计流程。

2. 学生能识别并运用课程中所学的电子元件,如LED灯、电阻、电容等,并理解其在电路中的作用。

3. 学生能够运用已学的电子知识,设计并搭建简单的EDA花样彩灯电路。

技能目标:1. 学生能够运用计算机软件进行电路设计与仿真,提高实际操作能力。

2. 学生通过小组合作,提高沟通协调能力和团队协作能力。

3. 学生能够运用问题解决策略,对设计过程中出现的问题进行分析、调试和优化。

情感态度价值观目标:1. 学生培养对电子科技的兴趣,增强创新意识和实践能力。

2. 学生在设计和制作过程中,培养耐心、细心的品质,提高面对困难的勇气和毅力。

3. 学生通过课程学习,认识到科技与生活的密切联系,增强环保意识和责任感。

本课程针对五年级学生特点,结合电子设计实际应用,注重培养学生的动手能力、创新能力和团队协作能力。

通过课程学习,使学生能够将所学知识应用于实际生活,激发他们对科技的兴趣,提高科学素养。

课程目标具体、可衡量,便于教师进行教学设计和评估。

二、教学内容本课程教学内容主要包括以下几部分:1. 电子元件的认识:介绍常用电子元件如LED灯、电阻、电容等,使学生了解其性能、特点及在电路中的作用。

2. EDA软件使用:教授学生如何使用EDA软件进行电路设计与仿真,包括电路图的绘制、元件的选取与放置、电路的仿真与调试等。

3. 花样彩灯设计原理:讲解花样彩灯的设计原理,如电路的基本连接方式、控制方法等。

4. 实践操作:指导学生进行EDA花样彩灯的设计与制作,让学生在实际操作中掌握所学知识。

5. 课程总结与展示:学生完成作品后,进行课程总结,分享设计经验,展示作品成果。

教学内容安排如下:1. 第一课时:电子元件的认识及基本电路原理介绍。

2. 第二课时:EDA软件的使用方法教学。

3. 第三课时:花样彩灯设计原理及实践操作指导。

EDA课程设计 多路彩灯设计

EDA课程设计  多路彩灯设计

多路彩灯控制器的设计O 引言硬件描述语言(HDL)是相对于一般的计算机软件语言如C,Pascal而言的。

HDL是用于设计硬件电子系统的计算机语言,它描述电子系统的逻辑功能、电路结构和连接方式。

设计者可以利用HDL程序来描述所希望的电路系统,规定其结构特征和电路的行为方式,然后利用综合器和适配器将此程序变成能控制FPGA和CPLD内部结构,并实现相应逻辑功能的门级或更底层的结构网表文件和下载文件。

VHDL(VeryHigh Speed Integrated Circuit Hardware descriptionLangtuage)主要用于描述数字系统的结构、行为、功能和接口。

与其他的HDL语言相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。

强大的行为描述能力是避开具体的器件结构。

从逻辑行为上描述和设计大规模电子系统的重要保证。

在文献中作者从不同的角度阐述了EDA技术的应用,它具有功能强大、描述能力强、可移植性好、研制周期短、成本低等特点,即使设计者不懂硬件的结构,也能进行独立的设计。

本文以Alter公司提供的Max+PlusⅡ为平台,设计一个可变速的彩灯控制器,可以在不修改硬件电路的基础上,仅通过更改软件就能实现任意修改花型的编程控制方案,实现控制16只LED以6种花型和两种速度循环变化显示,而且设计非常方便,设计的电路保密性。

(一)实验目的1.进一步掌握数字电路课程所学的理论知识。

2.了解数字电路设计的基本思想和方法,学会科学分析和解决问题。

3.熟悉几种常用集成数字芯片,并掌握其工作原理,进一步学会使用其进行电路设计。

4. 培养认真严谨的工作作风和实事求是的工作态度一、设计任务与要求(1)要有多种花形变花。

(2)多路花形可以自动变换循环往复。

(3)彩灯变幻的快慢接拍可以选择。

(4)具有清零开关。

二、总体框图(一)设计思路用VHDL进行设计,首先应该理解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次。

多路彩灯控制器实验报告

多路彩灯控制器实验报告

多路彩灯控制器目录摘要······················································一课程名称·······························二内容实验·······························三具体要求·······························四方案论证·······························五单元电路·······························六仿真结果·······························七实验小结······························参考文献·······················································一,课程名称多路彩灯控制器二,内容摘要当今时代科技发展日异月新,彩灯作为一种景观应用越来越多。

EDA课程设计--多路彩灯控制设计

EDA课程设计--多路彩灯控制设计

EDA课程设计--多路彩灯控制设计
项目简介:
本项目基于EDA工具(例如Altium Designer),设计实现了一种多路彩灯控制器。

该控制器可以控制多个LED灯的颜色和亮度,并可以通过外部输入信号进行控制。

项目要求:
- 实现8路彩灯控制,并且可以通过外部控制进行选择控制的灯数量。

- 支持控制彩灯的颜色和亮度。

- 支持外部输入信号,例如红外、蓝牙等。

- 设计具有过压、过流保护电路。

项目实现:
1. 硬件设计
- 选用STM32F030C8T6为控制器,实现外部输入信号检测、灯控制等功能
- 使用MAX7219为LED驱动芯片,支持SPI通信
- 具有功率PWM控制电路,用于调节彩灯的亮度
- 设有保护电路(包括过压、过流保护等)。

2. PCB设计
- 完成原理图设计,并将原理图转化为PCB设计
- 完成DSP设计、电源电路设计、外部输入检测电路设计、LED灯的连接及布局设计
- 设计阻止过压、过流电路,并进行分析和仿真,确保电路设计的可靠性和稳定性。

3. 程序设计
- 根据硬件设计,编写STM32程序,实现控制LED灯的亮度和颜色、接收和处理外部输入信号等功能
- 设计简单友好的用户界面,使得用户可以方便地选择和改变亮度和颜色控制方式。

4. 调试测试
- 在完成硬件设计、PCB设计、程序设计后,进行完整的测试来验证控制器的功能。

- 对控制器进行验证测试,确保它能稳定地运行,并且能够处理外部输入信号、选择和控制指定的彩灯。

西电EDA大作业多功能彩灯

西电EDA大作业多功能彩灯

EDA设计报告彩灯控制器(老师:宗汝)班级:学号:姓名:一.设计要求设计能让一排灯(8只)自动改变显示花样的控制系统。

可将实验板上的一排发光二极管作为彩灯用。

控制器应有两种控制方式:◆规则变化。

变化节拍有0.5秒和0.25秒两种,交替出现,每种节拍可有8种花样,各执行一或二个周期后轮换。

彩灯变化方向有单向移动,双向移动,跳跃移动等。

◆随机变化。

变化花样相同,但节拍及花样的转换都随机出现。

二.设计方案(1).分频模块。

要产生快慢两种节拍,则首先需要有分频器模块,0.5秒和0.25秒两种则可选择四分频和八分频。

通过按键进行选择切换。

则clk为输入时钟信号,需经分频器分频并输入到LED显示电路;clr为复位清零信号,高电平有效,有效时,电路无条件的回到初始状态;OPT为频率快慢选择信号,低电平节奏快,高电平节奏慢;(2)LED显示模块。

经过分频的时钟信号输入LED显示电路中,使电路有规律的输出按照设定的各种花样变化。

xuan为选择彩灯变化花样信号,便于改变彩灯花样。

而最后就是输出彩灯变化花样led。

三.系统程序设计分频器模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity FENPINQI isport(clk:in std_logic;clr:in std_logic;opt:in std_logic;clkout:out std_logic);end FENPINQI;architecture arc of FENPINQI issignal clk_tmp: std_logic;signal counter: std_logic_vector(1 downto 0);beginprocess(clk,clr,opt)beginif clr='1' then --清零clk_tmp<='0';counter<="00";elsif clk'event and clk='1' thenif opt='0' then --四分频if counter="01" thencounter<="00";clk_tmp<=not clk_tmp;elsecounter<=counter+'1';end if;else --八分频if counter="11" thencounter<="00";clk_tmp<=not clk_tmp;elsecounter<=counter+'1';end if;end if;end if;end process;clkout<=clk_tmp; --输出分频后的信号end arc;花样一:--用分频器分频后的时钟来显示花样实现library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity HY1 isport(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led1:out std_logic_vector(7 downto 0));end HY1;architecture arc of HY1 istype state is(s0,s1,s2,s3,s4,s5,s6);signal current_state:state;signal light:std_logic_vector(7 downto 0);beginprocess(clr,clk1,xuan)isconstant l1:std_logic_vector(7 downto 0):="10000001";constant l2:std_logic_vector(7 downto 0):="01000010";constant l3:std_logic_vector(7 downto 0):="00100100";constant l4:std_logic_vector(7 downto 0):="00011000";constant l5:std_logic_vector(7 downto 0):="00100100";constant l6:std_logic_vector(7 downto 0):="01000010";beginif xuan="01"thenif clr='1' thencurrent_state<=s0;elsif(clk1'event and clk1='1') thencase current_state iswhen s0=>light<="ZZZZZZZZ";current_state<=s1;when s1=>light<=l1;current_state<=s2;when s2=>light<=l2;current_state<=s3;when s3=>light<=l3;current_state<=s4;when s4=>light<=l4;current_state<=s5;when s5=>light<=l5;current_state<=s6;when s6=>light<=l6;current_state<=s1;end case;end if;end if;end process;led1<=light;end arc;花样二:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity HY2 isport(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led2:out std_logic_vector(7 downto 0));end HY2;architecture arc of HY2 istype state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s 20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30);signal current_state:state;signal light:std_logic_vector(7 downto 0);beginprocess(clr,clk1,xuan)isconstant l1:std_logic_vector(7 downto 0):="00000000";constant l2:std_logic_vector(7 downto 0):="10000000";constant l3:std_logic_vector(7 downto 0):="11000000";constant l4:std_logic_vector(7 downto 0):="11100000";constant l5:std_logic_vector(7 downto 0):="11110000";constant l6:std_logic_vector(7 downto 0):="11111000"; constant l7:std_logic_vector(7 downto 0):="11111100"; constant l8:std_logic_vector(7 downto 0):="11111110"; constant l9:std_logic_vector(7 downto 0):="11111111"; constant l10:std_logic_vector(7 downto 0):="01111111"; constant l11:std_logic_vector(7 downto 0):="00111111"; constant l12:std_logic_vector(7 downto 0):="00011111"; constant l13:std_logic_vector(7 downto 0):="00001111"; constant l14:std_logic_vector(7 downto 0):="00000111"; constant l15:std_logic_vector(7 downto 0):="00000011"; constant l16:std_logic_vector(7 downto 0):="00000001"; constant l17:std_logic_vector(7 downto 0):="00000011"; constant l18:std_logic_vector(7 downto 0):="10000111"; constant l19:std_logic_vector(7 downto 0):="00001111"; constant l20:std_logic_vector(7 downto 0):="00011111"; constant l21:std_logic_vector(7 downto 0):="00111111"; constant l22:std_logic_vector(7 downto 0):="01111111"; constant l23:std_logic_vector(7 downto 0):="11111111"; constant l24:std_logic_vector(7 downto 0):="11111110"; constant l25:std_logic_vector(7 downto 0):="11111100"; constant l26:std_logic_vector(7 downto 0):="11111000"; constant l27:std_logic_vector(7 downto 0):="11110000"; constant l28:std_logic_vector(7 downto 0):="11100000"; constant l29:std_logic_vector(7 downto 0):="11000000"; constant l30:std_logic_vector(7 downto 0):="10000000"; beginif xuan="10" thenif clr='1' thencurrent_state<=s0;elsif(clk1'event and clk1='1') thencase current_state iswhen s0=>light<="ZZZZZZZZ";current_state<=s1;when s1=>light<=l1;current_state<=s2;when s2=>light<=l2;current_state<=s3;when s3=>light<=l3;current_state<=s4;when s4=>light<=l4;current_state<=s5;when s5=>light<=l5;current_state<=s6;when s6=>light<=l6;current_state<=s7;when s7=>light<=l7;current_state<=s8;when s8=>light<=l8;current_state<=s9;when s9=>light<=l9;current_state<=s10;when s10=>light<=l10;current_state<=s11;when s11=>light<=l11;current_state<=s12;when s12=>light<=l12;current_state<=s13;when s13=>light<=l13;current_state<=s14;when s14=>light<=l14;current_state<=s15;when s15=>light<=l15;current_state<=s16;when s16=>light<=l16;current_state<=s17;when s17=>light<=l17;current_state<=s18;when s18=>light<=l18;current_state<=s19;when s19=>light<=l19;current_state<=s20;when s20=>light<=l20;current_state<=s21;when s21=>light<=l21;current_state<=s22;when s22=>light<=l22;current_state<=s23;when s23=>light<=l23;current_state<=s24;when s24=>light<=l24;current_state<=s25;when s25=>light<=l25;current_state<=s26;when s26=>light<=l26;current_state<=s27;when s27=>light<=l27;current_state<=s28;when s28=>light<=l28;current_state<=s29;when s29=>light<=l29;current_state<=s30;when s30=>light<=l30;current_state<=s1;end case;end if;end if;end process;led2<=light;end art;花样三:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity HY3 isport(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led3:out std_logic_vector(7 downto 0));end HY3;architecture art of HY3 istype state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14); signal current_state:state;signal light:std_logic_vector(7 downto 0);beginprocess(clr,clk1,xuan)isconstant l1:std_logic_vector(7 downto 0):="10000000";constant l2:std_logic_vector(7 downto 0):="01000000"; constant l3:std_logic_vector(7 downto 0):="00100000"; constant l4:std_logic_vector(7 downto 0):="00010000"; constant l5:std_logic_vector(7 downto 0):="00001000"; constant l6:std_logic_vector(7 downto 0):="00000100"; constant l7:std_logic_vector(7 downto 0):="00000010"; constant l8:std_logic_vector(7 downto 0):="00000001"; constant l9:std_logic_vector(7 downto 0):="00000010"; constant l10:std_logic_vector(7 downto 0):="00000100"; constant l11:std_logic_vector(7 downto 0):="00001000"; constant l12:std_logic_vector(7 downto 0):="00010000"; constant l13:std_logic_vector(7 downto 0):="00100000"; constant l14:std_logic_vector(7 downto 0):="01000000"; beginif xuan="11" thenif clr='1'thencurrent_state<=s0;elsif(clk1'event and clk1='1')thencase current_state is --状态机转换when s0=>light<="ZZZZZZZZ";current_state<=s1;when s1=>light<=l1;current_state<=s2;when s2=>light<=l2;current_state<=s3;when s3=>light<=l3;current_state<=s4;when s4=>light<=l4;current_state<=s5;when s5=>light<=l5;current_state<=s6;when s6=>light<=l6;current_state<=s7;when s7=>light<=l7;current_state<=s8;when s8=>light<=l8;current_state<=s9;when s9=>light<=l9;current_state<=s10;when s10=>light<=l10;current_state<=s11;when s11=>light<=l11;current_state<=s12;when s12=>light<=l12;current_state<=s13;when s13=>light<=l13;current_state<=s14;when s14=>light<=l14;current_state<=s1;end case;end if;end if;end process;led3<=light;end art;花样四:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity HY4 isport(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led4:out std_logic_vector(7 downto 0));end HY4;architecture art of HY4 istype state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14); signal current_state:state;signal light:std_logic_vector(7 downto 0);beginprocess(clr,clk1,xuan)isconstant l1:std_logic_vector(7 downto 0):="10101010";constant l2:std_logic_vector(7 downto 0):="01010101";constant l3:std_logic_vector(7 downto 0):="10010010";constant l4:std_logic_vector(7 downto 0):="01001001";constant l5:std_logic_vector(7 downto 0):="10010100";constant l6:std_logic_vector(7 downto 0):="01001001";constant l7:std_logic_vector(7 downto 0):="00100100";constant l8:std_logic_vector(7 downto 0):="00011000";constant l9:std_logic_vector(7 downto 0):="00101010";constant l10:std_logic_vector(7 downto 0):="11000011";constant l11:std_logic_vector(7 downto 0):="01100000";constant l12:std_logic_vector(7 downto 0):="00111000";constant l13:std_logic_vector(7 downto 0):="10001100";constant l14:std_logic_vector(7 downto 0):="01001001";beginif xuan="00" thenif clr='1'thencurrent_state<=s0;elsif(clk1'event and clk1='1')thencase current_state iswhen s0=>light<="ZZZZZZZZ";current_state<=s1;when s1=>light<=l1;current_state<=s2;when s2=>light<=l2;current_state<=s3;when s3=>light<=l3;current_state<=s4;when s4=>light<=l4;current_state<=s5;when s5=>light<=l5;current_state<=s6;when s6=>light<=l6;current_state<=s7;when s7=>light<=l7;current_state<=s8;when s8=>light<=l8;current_state<=s9;when s9=>light<=l9;current_state<=s10;when s10=>light<=l10;current_state<=s11;when s11=>light<=l11;current_state<=s12;when s12=>light<=l12;current_state<=s13;when s13=>light<=l13;current_state<=s14;when s14=>light<=l14;current_state<=s1;end case;end if;end if;end process;led4<=light;end art;顶层设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity caideng8 isport(clk:in std_logic;clr:in std_logic;opt:in std_logic;xuan:in std_logic_vector(1 downto 0);led:out std_logic_vector(7 downto 0) --八路彩灯输出);end caideng8;architecture art of caideng8 iscomponent FENPINQI --对分频器模块进行定义port(clk:in std_logic;clr:in std_logic;opt:in std_logic;clkout:out std_logic);end component FENPINQI;component HY1 --对花样一模块进行定义port(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led1:out std_logic_vector(7 downto 0));end component HY1;component HY2 --对花样二模块进行定义port(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led2:out std_logic_vector(7 downto 0));end component HY2;component HY3 --对花样三模块进行定义port(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led3:out std_logic_vector(7 downto 0));end component HY3;component HY4port(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led4:out std_logic_vector(7 downto 0));end component HY4;signal s:std_logic; --定义中间变量signal l1:std_logic_vector(7 downto 0);signal l2:std_logic_vector(7 downto 0);signal l3:std_logic_vector(7 downto 0);signal l4:std_logic_vector(7 downto 0);beginu1:FENPINQI port map(clk,clr,opt,s);u2:HY1 port map(s,clr,xuan,l1);u3:HY2 port map(s,clr,xuan,l2);u4:HY3 port map(s,clr,xuan,l3);u5:HY4 port map(s,clr,xuan,l4);led<=l1 when xuan="01" elsel2 when xuan="10" elsel3 when xuan="11" elsel4;end art;四.仿真花样一仿真波形:clr为输入,是异步复位端,当为高电平时有效。

数字电子EDA课程设计彩灯控制器二

数字电子EDA课程设计彩灯控制器二

EDA课程设计报告书班级:学号:姓名:日期:一.设计题目:彩灯控制器二显示间隔为0.25s,0.5s,1s,2s可调。

三、整体方案用74161做23进制计数器进行分频分出8Hz,用数据选择器和十六进制加法计数器的分频功能做一个时间选择器,控制时间间隔分别为0.25s,0.5s,1s,2s可调。

按彩灯的变化规律将整体变化情况分为四个部分,分别用移位寄存器实现。

用两个74161做一个33进制计数器进行循环控制并用与、或、非门在结合计数器和数据选择器做控制电路对四个显示模块按题目要求进行选择控制,最终得出总的彩灯显示效果和时间可调要求。

设计原理:步骤一.用两片74161做23进制计数器电路如图:步骤二、用做好的23进制计数器分频,选184Hz 作为输入脉冲,分出8Hz的脉冲。

然后使用了一个74161做成分频器,把8HZ频率分成1/2,1/4,1/8,1/16,也就是4HZ、2HZ、1HZ、0.5H。

利用74153的片选功能选出所需要的频率,从而达到题目的要求。

步骤三、设计一个33进制的计数器对应题中的33种状从而能控制灯的变化。

如图所示:步骤四.对应题目中的33种状态把彩灯的变化分成四组分别用移位寄存器实现。

从而可实现题目中的要求。

彩灯亮暗变化显示第一部分彩灯亮暗变化显示第二部分彩灯亮暗变化显示第三部分彩灯亮暗变化显示第四部分步骤五、在每块变化电路的第一个状态译出置数信号,控制下面的地址选择,从而可实现彩灯变换部分的选择。

0.1.2.3控制模块的输出,实现彩灯部分的顺序输出。

步骤七.利用上面步骤六做出的四进制加法计数器控制用四片74153的选择端.实现彩灯四个部分的依次输出,从而实现设计。

总电路:仿真结果:由于设计时电路的一个小小的部分没弄好,好几次纺真出来的波形都不是设计所要求的,后来经过老师提醒才改正。

得到所需要的波形。

如图所示:四、硬件实验方案及实验结果在确定了我的演示波形正确之后,按照书上的程序下载操作流程,成功的将我的设计内容下载到EPF10K10LC84-4的芯片中,然后根据引脚,逐个连接,在连线的过程中,我尤其注意了时钟信号的连接,最终得到了令人相当满意的彩灯闪烁效果。

eda彩灯实验报告

eda彩灯实验报告

eda彩灯实验报告
EDA彩灯实验报告
引言
EDA彩灯是一种新型的智能灯具,它具有丰富的颜色选择和灯光效果,可以通
过手机APP远程控制,是现代家居装饰的理想选择。

本实验旨在测试EDA彩灯的亮度、颜色稳定性和控制性能,以评估其在实际应用中的表现。

实验方法
1. 测量亮度:在不同亮度下,使用光度计测量EDA彩灯的光照强度,以评估其
亮度表现。

2. 测量颜色稳定性:在不同时间段内,记录EDA彩灯显示的颜色,并使用色度
计测量其颜色值,以评估其颜色稳定性。

3. 测试控制性能:通过手机APP远程控制EDA彩灯,测试其响应速度和稳定性。

实验结果
1. 亮度测试结果显示,EDA彩灯在不同亮度下的光照强度表现稳定,且亮度调
节响应迅速。

2. 颜色稳定性测试结果显示,EDA彩灯在长时间使用过程中,颜色表现稳定,
色度值变化不大。

3. 控制性能测试结果显示,通过手机APP远程控制EDA彩灯响应速度快,稳定性良好。

结论
通过本次实验,我们对EDA彩灯的亮度、颜色稳定性和控制性能进行了评估,
结果显示其表现良好,适用于家居装饰和氛围照明。

然而,在实际使用中,还
需要进一步测试其耐用性和节能性能,以全面评估其性能表现。

总结
EDA彩灯作为一种智能家居装饰灯具,具有丰富的颜色选择和灯光效果,通过本次实验评估其亮度、颜色稳定性和控制性能,结果显示其表现良好。

我们期待EDA彩灯在未来的应用中,能够为用户带来更多的便利和美好的家居体验。

EDA课程设计多路彩灯控制电路设计

EDA课程设计多路彩灯控制电路设计

EDA课程设计报告——多路彩灯控制电路设计多路彩灯控制电路设计报告题目:多路彩灯控制电路设计要求:⑴要有6种花型变化。

⑵多种花型可以自动变化,循环往复。

⑶彩灯变化的快慢节拍可以选择。

⑷具有清零开关。

设计方案:根据系统设计要求,设计一个具有6种花型循环变化的彩灯控制器。

整个系统共有三个输入信号:控制彩灯节奏快慢的基准时钟信号CLK_IN,系统清零信号CLR,彩灯节奏快慢选择开关CHOSE_KEY;共有16个输出信号LED[15..0],分别用于控制十六路彩灯。

据此,系统设计采用自顶向下的设计方法,我们可将整个彩灯控制器CDKZQ分为两大部分:时序控制电路SXKZ和显示控制电路XSKZ。

模块划分:时序控制电路(SXKZ)显示控制电路(XSKZ)端口介绍:CLK_IN—控制彩灯节奏快慢的基准时钟信号CLR—系统清零信号CHOSE_KEY—彩灯节奏快慢选择开关LED[15..0]—16个输出信号设计过程:⒈时序控制模块(SXKZ)①新建一个VHD格式的文本编辑文件,保存—默认—命名②编写源程序,如下:时序控制模块源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SXKZ ISPORT(CHOSE_KEY : IN STD_LOGIC;CLK_ZN : IN S TD_LOGIC;CLR : IN STD_LOGIC;CLK : OUT STD_LOGIC);END SXKZ;ARCHITECTURE ART OF SXKZ ISSIGNAL CK : STD_LOGIC;BEGINPROCESS (CLK_ZN, CLR,CHOSE_KEY)V ARIABLE TEMP : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINIF CLR='1' THENCK<='0';TEMP:="000";ELSIF (CLK_ZN'EVENT AND CLK_ZN='1') THENIF (CHOSE_KEY='1')THENIF TEMP="011" THENTEMP:="000";CK<=NOT CK;ELSETEMP:=TEMP+1;END IF;ELSEIF TEMP="111" THENTEMP:="000";CK<=NOT CK;ELSETEMP:=TEMP+'1';END IF;END IF;END IF;END PROCESS;CLK<=CK;END ART;③检查错误,如图:④器件配置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

黄冈师范学院物理科学与技术学院《EDA技术》课程设计题目:多功能彩灯设计学号:*************名:***班级:电信0902指导老师:**2011-12-25——2011-12-27一、实验目的本程序以计算机为工作平台,综合运用EDA软件工具开发环境,用硬件描述语言VHDL为设计语言,以ASIC来实现载体的设计。

通过在EDA中的编译、处理、仿真和调制分析,接受电子设计领域的初步训练,并使所学的知识和技能得到进一步巩固、深化和扩展,以达到可以运用EDA工具设计一些简单的电子产品,掌握使用EDA工具设计数字系统的设计思想和设计方法,为继续学习和认识电子设计知识打下良好的基础。

培养利用EDA技术知识,解决电子设计自动化中常见实际问题的能力,积累实际的EDA编程。

通过本课程设计的学习,复习所学的专业知识,使课堂学习的理论知识应用于实践。

培养综合运用以学知识解决实际工程技术问题的能力,查阅图书资料和各种工程书的能力、工程绘图能力、撰写技术报告和编制技术资料的能力,接受一次电子设计自动化方面的基本训练。

二、设计要求1,用EDA技术设计一个多功能彩灯控制器,使得彩灯(LED管)既能发出四种不同的花型(自拟),又能四种模式自动循环。

具体选择由按键一控制。

2,由按键二控制彩灯的频率,使得彩灯可以二分频、四分频、八分频。

3,要求7段数码管显示当前显示的花型和用的是几分频,如是二分频,则数码管一显示2;显示花型二,则数码管二显示2。

三、总体设计原理与内容3.1彩灯控制器放入设计原理分析:此设计的要求是连续发出四种花型且用数码管显示。

由此可知:要发出不同的花型,必须要由不同的输出频率来实现,所以应该要由一个分频器。

分频器部分的设计是利用计数器实现分频,将控制器的外接频率分为几个我们预先设计的值,即产生一个上升沿,从而实现分频。

显示部分的设计是利用分频器产生的低频信号计数,从而达到分频的目的。

利用分频器输出的不同信号,可以控制彩灯显示不同的花型。

四、设计环境QuartusⅡ简介QuartusⅡ是Altera公司提供的FPGA/CPLD集成开发软件,Altera是世界上最大的可编程逻辑器件供应商之一。

QuartusⅡ在21世初推出,是Altera 全一代FPGA/CPLD集成开发软件MAX+plus II的更新换代产品,其界面友好,使用便捷。

在QuartusⅡ上可以完成设计输入、HDL综合、布新布局(适配)、仿真和选择以及硬件测试等流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、开始处理和器件编程。

QuartusⅡ提供了完整的多平台设计环境,能满足各种特定设计的需求,也是单片机可编程系统(SoPC)设计的综合环境和SoPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境。

QuartusⅡ设计完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。

Quartus Ⅱ与可用利用第三方的综合工具(如Leonardo Spectrum、Synplify Pro、FPGA Complier II),并能直接调用这些工具。

同样 QuartusⅡ具备仿真功能,同时支持第三方的仿真工具(如ModelSin)。

此外, QuartusⅡ与MATLAB和DSP Builder结合,可用进行基于FPAG的DSP 系统开发,是DSP硬件系统实现的工具EDA工具。

五、多功能彩灯设计5.1 .1分频控制电路的VHDL设计及实现程序如下:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.std_logic_unsigned.ALL;ENTITY SX ISPORT(CLK:IN STD_LOGIC;K:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK_OUT:OUT STD_LOGIC);END SX;ARCHITECTURE bhv OF SX ISSIGNAL Q :STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINPROCESS(K)ISBEGINCASE K ISWHEN "0000"=> Q <="00000001";--2分频WHEN "0001"=> Q <="00000011";--4分频WHEN "0010"=> Q <="00000111";--8分频WHEN "0011"=> Q <="00001111";--16分频WHEN "0100"=> Q <="00011111";--32分频WHEN "0101"=> Q <="00111111";--64分频WHEN "0110"=> Q <="01111111";--128分频WHEN "0111"=> Q <="11111111";--256分频WHEN OTHERS=> Q <="00000001";END CASE;END PROCESS;PROCESS (CLK,Q)V ARIABLE QA:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINIF CLK'EVENT AND CLK='1' THENIF QA=Q THEN QA:="00000000";CLK_OUT<='1';ELSE QA:=QA+1; CLK_OUT<='0';END IF;END IF;END PROCESS;END BHV;5.1.2分频控制电路封装图5.1.3分频控制电路仿真图5.2.1彩灯控制器的VHDL设计及实现程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cdzt ISPORT (CLK :IN STD_LOGIC;H:IN STD_LOGIC_VECTOR(3 DOWNTO 0);led :OUT STD_LOGIC_VECTOR(15 DOWNTO 0));END;ARCHITECTURE BHV OF cdzt ISTYPE ST IS(S0,S1,S2,S3);SIGNAL CURRENT_STATE:ST;SIGNAL E : STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL Q : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,Q)BEGINIF H="0000" then E<="01";ELSE E<="00";END IF;IF CLK'EVENT AND CLK='1' THENIF E="00" THEN current_state<=s0;case current_state iswhen s0=>if H="0010" then current_state<=s1;else current_state<=s0;end if;when s1=>if H="0011" then current_state<=s2;else current_state<=s1;end if;when s2=>if H="0100" then current_state<=s3;else current_state<=s2;end if;when s3=>if H="0101" then current_state<=s0;else current_state<=s3;end if;when others =>current_state<=s0;end case;END IF;IF E="01" THEN current_state<=s0;case current_state iswhen s0=> if Q="1111" then current_state<=s1;else current_state<=s0;end if ;when s1=> if Q="1111" then current_state<=s2;else current_state<=s1;end if ;when s2=> if Q="1111" then current_state<=s3;else current_state<=s2;end if ;when s3=> if Q="1111" then current_state<=s0;else current_state<=s3;end if ;when others =>current_state<=s0;end case;END IF;END IF;end process;PROCESS(current_state,CLK,Q)BEGINIF CLK'EVENT AND CLK='1' THENQ<=Q+1;END IF;case current_state isWHEN s0=>CASE Q ISwhen"0000" =>led<="0000000000000001";when"0001" =>led<="0000000000000010";when"0010" =>led<="0000000000000100";when"0011" =>led<="0000000000001000";when"0100" =>led<="0000000000010000";when"0101" =>led<="0000000000100000";when"0110" =>led<="0000000001000000";when"0111" =>led<="0000000010000000";when"1000" =>led<="0000000100000000";when"1001" =>led<="0000001000000000";when"1010" =>led<="0000010000000000";when"1011" =>led<="0000100000000000";when"1100" =>led<="0001000000000000";when"1101" =>led<="0010000000000000";when"1110" =>led<="0100000000000000";when"1111" =>led<="1000000000000000";when others=>led<="0000000000000000"; END CASE;WHEN s1=>CASE Q ISwhen"0000" =>led<="0000000000000001";when"0001" =>led<="0000000000000011";when"0010" =>led<="0000000000000111";when"0011" =>led<="0000000000001111";when"0100" =>led<="0000000000011111";when"0101" =>led<="0000000000111111";when"0110" =>led<="0000000001111111";when"0111" =>led<="0000000011111111";when"1000" =>led<="0000000111111111";when"1001" =>led<="0000001111111111";when"1010" =>led<="0000011111111111";when"1011" =>led<="0000111111111111";when"1100" =>led<="0001111111111111";when"1101" =>led<="0011111111111111";when"1110" =>led<="0111111111111111"; when"1111" =>led<="1111111111111111"; when others=>led<="0000000000000000"; END CASE;WHEN s2=>CASE Q ISwhen"0000" =>led<="0000000000001111"; when"0001" =>led<="0000000000011110"; when"0010" =>led<="0000000000111100"; when"0011" =>led<="0000000001111000"; when"0100" =>led<="0000000011110000"; when"0101" =>led<="0000000111100000"; when"0110" =>led<="0000001111000000"; when"0111" =>led<="0000011110000000"; when"1000" =>led<="0000111100000000"; when"1001" =>led<="0001111000000000"; when"1010" =>led<="0011110000000000"; when"1011" =>led<="0111100000000000"; when"1100" =>led<="1111000000000000"; when"1101" =>led<="1110000000000001"; when"1110" =>led<="1100000000000011"; when"1111" =>led<="1000000000000111"; when others=>led<="0000000000000000"; END CASE;WHEN s3=>CASE Q ISwhen"0000" =>led<="1000000000000001"; when"0001" =>led<="0100000000000010"; when"0010" =>led<="0010000000000100"; when"0011" =>led<="0001000000001000"; when"0100" =>led<="0000100000010000"; when"0101" =>led<="0000010000100000"; when"0110" =>led<="0000001001000000"; when"0111" =>led<="0000000110000000"; when"1000" =>led<="0000000110000000"; when"1001" =>led<="0000001001000000"; when"1010" =>led<="0000010000100000"; when"1011" =>led<="0000100000010000"; when"1100" =>led<="0001000000001000"; when"1101" =>led<="0010000000000100"; when"1110" =>led<="0100000000000010"; when"1111" =>led<="1000000000000001"; when others=>led<="0000000000000000"; END CASE;END CASE;END PROCESS;END BHV;程序中共有4种模式,第一种为从LED1到LED16依次闪亮,第二种为16盏灯逐一点亮……程序中不按H键时,H的值为0000,此时内部信号E为01,彩灯状态为4种模式自动循环。

相关文档
最新文档