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;③检查错误,如图:④器件配置。

EDA作业2-LED彩灯

EDA作业2-LED彩灯

EDA作业二--LED彩灯一、实验任务让8个LED实现彩灯的功能,并进行波形仿真。

通过这个实验,进一步掌握采用计数与判断的方式来实现分频的VHDL的编程方法以及移位运算符的使用。

二、实验环境软件实验环境为Quartus II 8.1开发软件。

三、实验原理彩灯,就是让LED以一定的规律显示不同的亮灭的组合。

本彩灯的设计采用了4种的亮灭方式。

每来一个时钟脉冲CLK,计数器就加1。

每当判断计数器中的数值达到25000000时,就会按一定方式点亮8个led。

FPGA输出数据就应该首先是10000000,隔1秒钟变成11000000……一直变化到111111,这样,依次点亮所有的灯,就形成了流水灯。

而当8个灯都点亮时,要一个操作使得所有的灯恢复为初始状态,即:灯都不亮。

然后,再一次流水即可。

如果是右移位,就出现向右流水的现象;反之,向左流水。

同流水灯原理:00方式为流水灯依次亮灭方式,01方式为两边向中间点亮方式。

10方式为连续两个灯同时按照流水灯亮灭,11方式为中间向两边点亮方式。

本实验程序定义了彩灯的端口部分,结构部分(控制部分),进程部分。

(分频部分本实验未使用到,所以在注释部分给出)四、实验步骤1、建立新工程项目:打开Quartus II软件,进入集成开发环境,点击File→New project wizard 建立一个工程项目caideng。

2、建立文本编辑文件:点击File→New在该项目下新建VHDL源程序文件caideng.v,输入试验程序中的源程序代码保存后选择工具栏中的按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。

3、编译工程项目:在Quartus II主页面下,选择Processing—Start Compilation或点击工具栏上的按钮启动编译,直到出现“Full Compilation Report”对话框,点击OK 即可。

4、波形仿真:建立波形文件caideng.vwf 选择相应节点,进行功能仿真,仿真图如下。

eda彩灯实验报告

eda彩灯实验报告

eda彩灯实验报告EDA彩灯实验报告引言EDA彩灯实验是一项基于EDA(Exploratory Data Analysis,探索性数据分析)的实践活动。

通过对彩灯数据的收集、整理和分析,我们旨在探索数据的特征和规律,并通过可视化展示的方式,将数据的潜在信息传达给观察者。

本报告将介绍实验的目的、方法、结果和讨论。

实验目的本次实验的目的是通过EDA的方法,对彩灯数据进行分析,并通过可视化展示的方式,揭示数据的潜在规律和特征。

我们希望通过这个实验,加深对EDA方法的理解,并掌握其在实际问题中的应用。

实验方法1. 数据收集我们从多个渠道收集了一定数量的彩灯数据,包括彩灯的颜色、亮度、闪烁频率等信息。

这些数据以文本文件的形式存储,并按照时间顺序排列。

2. 数据整理为了方便后续分析,我们首先对数据进行整理。

具体步骤包括数据清洗、去除异常值、处理缺失值等。

通过这些步骤,我们得到了一份干净、可用的数据集。

3. 数据分析在数据分析阶段,我们运用了各种统计和可视化方法,以揭示数据的特征和规律。

具体包括以下几个方面:- 描述性统计:通过计算数据的均值、方差、中位数等指标,了解数据的分布和集中趋势。

- 相关性分析:通过计算不同变量之间的相关系数,查找变量之间的关联关系。

- 可视化展示:通过绘制折线图、柱状图、散点图等,将数据的特征以图形化的方式展示出来。

实验结果经过数据分析,我们得到了以下几个主要结果:1. 彩灯的颜色分布呈现多样性,包括红、绿、蓝、黄等多种颜色。

其中,蓝色和红色的比例较高,而绿色和黄色的比例较低。

2. 彩灯的亮度分布较为均匀,大部分彩灯的亮度值集中在一个中等水平上。

3. 彩灯的闪烁频率与亮度呈现一定的正相关关系,即亮度较高的彩灯更容易出现高频闪烁的情况。

讨论通过本次实验,我们对EDA方法有了更深入的理解,并掌握了其在彩灯数据分析中的应用。

通过对彩灯数据的收集、整理和分析,我们揭示了彩灯数据的特征和规律,为进一步研究彩灯的设计和应用提供了参考。

EDA课程设计报告彩灯控制器

EDA课程设计报告彩灯控制器

1设计目的熟练掌握EDA技术利用计算机方面的课程解决专业课程方面点具体问题,达到解决问题,完成课程设计任务,培养实践的目的。

2设计要求和任务利用所学的EDA设计方法设计彩灯控制器,熟练使用使用QUARTUSII应用软件,进一步学习使用VHDL语言、原理图等EDA设计方法进行综合题目的方法。

功能要求:1.要有多种花型变化(至少4种).2.多种花型可以自动变换,循环往复.3.彩灯变换的快慢节拍可以选择.4.具有清零开关.3 总体设计思路及原理描述3.1功能描述在电路中以1 代表灯亮,以0 代表灯灭,由0,1按不同的规律组合代表不同的灯光图案,同时使其选择不同的频率,从而实现多种图案多种频率的花样功能显示。

在该电路中只需简单的修改程序就可以灵活地调整彩灯图案和变化方式。

下面就以一个十六路彩灯控制系统的实现为例进行简单说明。

此十六路彩灯控制系统设定有六种花样变化,这六种花样可以进行自动切换,并且每种花样可以选择不同的频率。

3.2设计原理用VHDL进行设计,首先应该了解,VHDL语言一种全方位硬件描述语言,包括系统行为级,寄存传输级和逻辑门级多个设计层次。

应充分利用DL “自顶向下”的设计优点以及层次化的设计概层次概念对于设计复杂的数字系统是非常有用它使得人们可以从简单的单元入手,逐渐构成庞大而复杂的系统。

首先应进行系统模块的划分,规定每一模块的功能以及各个模块之间的接口。

最终设计方案为:以一个十六路彩灯花样控制器、一个四频率输出分频器,一个四选一控制器和一个时间选择器总共四部分来完成设计。

四选一控制器从分频器选择不同频率的时钟信号输送到彩灯花样控制器,从而达到控制彩灯闪烁速度的快慢,时间选择器控制每种速度维持的时间长短。

整个十六路彩灯控制系统设计的模块图如图1所示图一4分层次方案设计及代码描述4.1子模块及其功能本次设计分为四个子模块,即十六路彩灯花样控制器、四频率输出分频器,四选一控制器和时间选择器,其子模块及其功能如下:4.1.1四频率输出分频器在本次设计中,设计了六种花样,要求这六种花样以不同的频率显示,而只有一个输入的时钟信号,所以对所输入的时钟信号进行2 分频,4 分频,8分频,16分频,得到四种频率信号,CLKDIV模块用来完成此功能。

EDA实验报告8路彩灯

EDA实验报告8路彩灯

河南工业大学EDA技术实验报告专业电科班级1202 姓名高兆华学号201216030211实验地点6316+ 6515 实验日期2014-11-18成绩评定一、实验项目8路彩灯控制器二、实验目的1、熟熟练掌握VHDL的用法2、了解8路彩灯的工作原理,电路结构三、实验原理实验原理图:VHDL程序:1、8路彩灯的三种花形控制模块CDLIBRARY IEEE;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cd ISPORT(clk:IN STD_LOGIC;jp:OUT STD_LOGIC;qq:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END cd;ARCHITECTURE behav OF cd ISCONSTANT w:INTEGER:=7;SIGNAL q:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINPROCESS(clk)VARIABLE flag:BIT_VECTOR(2 DOWNTO 0):="000"; VARIABLE jp1: STD_LOGIC:='0';BEGINIF clk'EVENT AND clk='1'THENIF flag="000"THENq<="11"&q(w DOWNTO 2);IF q(2)='1'THENflag:="001";END IF;ELSIF flag="001"THENq<=q(w-2 DOWNTO 0)&"00";IF q(5)='0'THENflag:="010";END IF;ELSIF flag="010"THENq(w DOWNTO 4)<=q(w-2 DOWNTO 4)&"11";q(w-4 DOWNTO 0)<="11"&q(w-4 DOWNTO 2);IF q(2)='1'THENflag:="011";END IF;ELSIF flag="011"THENq(w DOWNTO 4)<="00"&q(w DOWNTO 6);q(w-4 DOWNTO 0)<=q(w-6 DOWNTO 0)&"00";IF q(1)='0'THENflag:="100";END IF;ELSIF flag="100"THENq(w DOWNTO 4)<="11"&q(w DOWNTO 6);q(w-4 DOWNTO 0)<="11"&Q(w-4 DOWNTO 2);IF q(2)='1'THENflag:="101";END IF;ELSIF flag="101"THENq<="00000000";jp1:=NOT jp1;flag:="000";END IF;END IF;qq<=q;jp<=jp1;END PROCESS;END behav;2、二选一多路选择器模块MUX21 library ieee;use ieee.std_logic_1164.all;entity mux21 isport(a,b,s:in std_logic;y:out std_logic);end mux21;architecture ar of mux21 isbeginprocess(a,b,s)beginif s='0'theny<=a;elsey<=b;end if;end process;end ar;3、二分频模块FEN2library ieee;use ieee.std_logic_1164.all;entity fen2 isport(clk:in std_logic;clkk:out std_logic);end fen2;architecture behav of fen2 isbeginprocess(clk)variable clkk1:std_logic:='0';beginif clk'event and clk='1'thenclkk1:=not clkk1;end if;clkk<=clkk1;end process;end behav;四、仿真结果及分析第一个脉冲到来时,q6、q7为高电平,所以连个灯同时点亮,第二个脉冲到来时q5、q4也变为高电平,两个灯也被点亮,一次类推,直到q0、q1变为高电平,第一种花型完成。

彩灯控制器设计及实验报告三篇

彩灯控制器设计及实验报告三篇

彩灯控制器设计及实验报告三篇篇一:多路彩灯控制器的设计一课程设计题目(与实习目的)(1)题目:多路彩灯控制器(2)实习目的:1.进一步掌握数字电路课程所学的理论知识。

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

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

4.培养认真严谨的工作作风和实事求是的工作态度。

5.作为课程实验与毕业设计的过度,课程设计为两者提供了一个桥梁。

二任务和要求实现彩灯控制的方法很多,如EPROM编程、RAM编程、单板机、单片机等,都可以组成大型彩灯控制系统。

因为本次实习要求设计的彩灯路数较少,且花型变换较为简单,故采用移位寄存器型彩灯控制电路。

(1)彩灯控制器设计要求设计一个8路移存型彩灯控制器,要求:1.彩灯实现快慢两种节拍的变换;2.8路彩灯能演示三种花型(花型自拟);3.彩灯用发光二极管LED模拟;4.选做:用EPROM实现8路彩灯控制器,要求同上面的三点。

(2)课程设计的总体要求1.设计电路实现题目要求;2.电路在功能相当的情况下设计越简单越好;3.注意布线,要直角连接,选最短路径,不要相互交叉;4.注意用电安全,所加电压不能太高,以免烧坏芯片和面包板。

三总体方案的选择(1)总体方案的设计针对题目设计要求,经过分析与思考,拟定以下二种方案:方案一:总体电路共分三大块。

第一块实现花型的演示;第二块实现花型的控制及节拍控制;第三块实现时钟信号的产生。

主体框图如下:方案二:在方案一的基础上将整体电路分为四块。

第一块实现花型的演示;第二块实现花型的控制;第三块实现节拍控制;第四块实现时钟信号的产生。

并在部分电路的设计上与方案一采用了完全不同的方法,如花型的控制。

主体框图如下:(2)总体方案的选择方案一与方案二最大的不同就在,前者将花型控制与节拍控制两种功能融合在一起,是考虑到只要计数器就可以实现其全部功能的原因,且原理相对简单。

EDA彩灯控制器课程设计报告书

EDA彩灯控制器课程设计报告书

目录第一章绪论 (1)1.1系统背景 (2)1.2课程设计的主要内容和任务以及要达到的目标 (3)第二章系统电路设计 (4)2.1 系统总体设计框架结构 (4)2.1 系统硬件 (4)第三章系统软件设计 (5)3.1 方案原理 (5)3.2 模块设计 (6)3.3 总体模块设计 (9)第四章实验结果和分析 (9)4.1 实验仿真结果 (9)结束语 (12)附录 (13)第一章绪论1.1系统背景20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。

在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。

这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。

这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

现在对EDA的概念或范畴用得很宽。

包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。

目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。

例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。

EDA技术实验10-彩灯控制器设计与实现

EDA技术实验10-彩灯控制器设计与实现

ENTITY counter_4 IS
PORT
(
clk,rst
: IN
std_logic;
count_out
: OUT integer range 0 to 3 );
std_logic
END xzq4_1; ARCHITECTURE a OF xzq4_1 IS
BEGIN PROCESS (rst,inp) BEGIN
if(rst='1') then output<='0';
else
case inp is
when 0=>output<=in1;
when 1=>output<=in2;
count_out<=temp;
END PROCESS;
17
END a;
-------------------------------------------4进制计数器模块----------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
if clk'event and clk='1'then
if b>=5 then
b:=0;
clk_6<='1';
else
b:=b+1;
clk_6<='0';
end if;
end if;
end if;
end process p2;
p3:process(clk,rst)
variable c:integer range 0 to 20;

EDA(VHDL)实验一 彩灯实验

EDA(VHDL)实验一 彩灯实验

实验一彩灯实验
一、实验目的
1 通过实验初步了解EDA的基本概念。

2 能理解VHDL语言实现硬件设计的思路。

3 能熟练掌握EDA开发软件的使用。

二、实验原理
在本实验中,8个彩灯共阴接地,阳极分别为FPGA的8个I/O相连,I/O输出变化的电平,来控制彩灯的点亮。

三、实验内容与步骤
1 打开Quartus II软件,依次点击菜单栏中的“File-Open Project”,打开EDA/LIGHT文件夹,在对话框中选择项目LIGHT,再点击打开即可;
2 双击项目管理器中的顶层项目LIGHTALL,顶层文件打开;
3 分别双击原理图表中PIN1HZ、light模块,打开即可看到源文件:
(1)light模块源程序
light模块方针波形如图所示:
程序分析:
(2)PIN1HZ模块源程序
PIN1HZ模块方针波形如图所示:
程序分析:
4 重新设置器件Cyclone EP1C6Q240C8 和配置芯片EPCS1;
5 根据配套的硬件资源分配表进行管脚分配,分配后的结果如图所示:
6 然后再编译一次;
7 下载程序到目标芯片。

四、实验现象
八个彩灯采用不同的模式被点亮。

五、思考题
试着改变程序,使得LED灯的切换速度发生变化。

只要改变PIN1HZ模块源程序的分频比,即可使得LED灯的切换速度发生变化。

例如,把50MHz分频为2Hz的程序如下:。

eda可编程霓虹灯设计实训报告

eda可编程霓虹灯设计实训报告

eda可编程霓虹灯设计实训报告EDA(Electronic Design Automation)可编程霓虹灯设计实训报告一、引言在现代科技发展迅速的时代,电子设计自动化(EDA)成为了电子工程师必备的工具之一。

EDA可编程霓虹灯设计实训是一项以可编程霓虹灯为对象的实践训练,旨在通过设计和实现电路,培养学生的电子设计和编程能力。

本报告将详细介绍EDA可编程霓虹灯设计实训的目标、实验内容、实验步骤以及实验结果与分析。

二、实训目标本次实训的主要目标是让学生掌握可编程霓虹灯的设计原理和实现方法,了解EDA工具的基本操作和使用技巧,培养学生的电子设计和编程能力。

通过实际动手操作和实验结果的分析,学生将能够深入理解电子设计自动化工具的原理和应用,提高自己的工程实践能力。

三、实验内容本次实训的主要内容包括以下几个方面:1. 可编程霓虹灯的原理和结构:学生需要了解可编程霓虹灯的基本原理和结构,包括可编程控制器、驱动电路和LED灯组成的基本框架。

2. EDA工具的基本操作:学生需要学会使用EDA工具进行电路设计和仿真,了解EDA工具的基本操作和使用技巧。

3. 可编程霓虹灯的电路设计:学生需要根据实验要求,设计出符合要求的可编程霓虹灯电路,并使用EDA工具进行仿真和验证。

4. 可编程霓虹灯的编程设计:学生需要使用编程语言对可编程霓虹灯进行编程设计,实现不同的灯光效果和动画效果。

5. 实验结果的分析和总结:学生需要对实验结果进行分析和总结,评估自己的设计和编程能力,并提出改进的意见和建议。

四、实验步骤1. 确定实验要求和目标:学生需要明确实验要求和目标,理解实验的目的和意义。

2. 学习可编程霓虹灯的原理和结构:学生需要通过学习相关资料和教材,了解可编程霓虹灯的原理和结构,掌握基本的电路组成和工作原理。

3. 学习EDA工具的基本操作:学生需要学会使用EDA工具进行电路设计和仿真,熟悉工具的基本操作和使用技巧。

4. 设计可编程霓虹灯电路:学生根据实验要求,设计出符合要求的可编程霓虹灯电路,并使用EDA工具进行仿真验证。

  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种模式自动循环。

相关文档
最新文档