设计报告课程名称EDA技术指导教师王春玲设计题目彩灯灯控系统设计班级2010级专业电子信息科学与技术院系物理与电子工程学院姓名罗小涛学号2010080088合作者孙洋洋·陈方胜摘要:该设计是以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)为主要,以原理图输入设计为辅的表达方式,以QuartusⅡ开发软件和EDA试验箱为设计工具,阐述了彩灯控制器的工作原理和软硬件的实现方法。它以按键控制彩灯工作模式。并对所设计的控制器进行了时序仿真和编程下载进行硬件验证,顺利实现设计目标。关键词:彩灯分频电路VHDL语言FPGA芯片有限状态机Abstract:thisdesignbasedonfieldprogrammablelogicdevices(FPGA)todesignthecarrier,withhardwaredescriptionlanguage(VHDL)asthemain,inprinciplediagraminputdesign,supplementedbyexpresswaytoQuartusdevelopmentsoftwareandEDAtestchamberfordesigntools,thispaperexpoundstheworkingprincipleoflightscontrollerhardwareandsoftwareandtherealizationmethodofitbuttonstocontrollightsworkmodeandthedesignofcontrolleronthetimingsimulationandprogrammingdownloadforhardwarevalidation,smoothrealizationdesigngoalKeywords:lightscrossovercircuitVHDLlanguageFPGAchipfinitestatemachine1设计任务及要求1.1要有多重花型变化1.2多种花型可以自动变换,循环往复1.3彩灯变化的快慢节拍可以选择2系统设计方案2.1EDA技术简介EDA是电子设计自动化(ElectronicDesignAutomation)缩写,是90年代初从CAD、CAM、CAT和CAE的概念发展而来的。EDA技术是电子设计的发展趋势,利用EDA工具可以代替设计者完成电子系统设计中的大部分工作。EDA工具从数字系统设计的单一领域,发展到今天,应用范围已涉及模拟、微波等多个领域,可以实现各个领域电子系统设计的测试、设计方针和布局布线等。现在对EDA的概念或范畴用得很宽,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA主要辅助进行三个方面的设计工作:IC设计、电子电路设计和PCB设计。2.2系统的整体组装设计原理图图1系统的整体组装设计原理图2.3根据系统设计要求,先设计一个具有六种花型循环变化的彩灯控制器。系统设计采用自顶向下的设计方法,系统的整体组装设计原理图,它由时序控制模块和显示控制模块两部分组成。整个系统有3个输入信号:系统时钟信号CLK,子系统清零信号CLR和控制彩灯节奏快慢的选择开关SPEED。9个输出信号LED(8..0),分别用于模拟九色彩灯。3各个模块控制3.1时序模块该模块主要功能:通过CLK,CLR,SPEED三个输入端口和CLK1输出端口,实现分频电路的可控调节。从而控制彩灯的各个图案的变换速度快慢。3.1.1时序模块原理图如下:图2时序模块原理图如下CLK:时钟信号CLR:复位SPEED:速度变换CLK1:输出时钟图3时序模块元件例化图3.1.2时序模块程序如下:LIBRARYIEEE;--时序控制模块(SX)USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSXISPORT(SPEED,CLK,CLR:INSTD_LOGIC;--输入信号SPEED,CLK,CLRCLK1:OUTSTD_LOGIC);--输出时钟CLK1ENDSX;ARCHITECTUREARTOFSXISSIGNALCK:STD_LOGIC;BEGINPROCESS(CLK,CLR,SPEED)IS—敏感信号CLK,CLR,SPEEDVARIABLETEMP:STD_LOGIC_VECTOR(2DOWNTO0);--变量TEMP位宽为3位BEGINIFCLR='1'THENCK='0';--复位端为高电平时清0TEMP:=000;ELSIF(CLK'EVENTANDCLK='1')THENIFSPEED='1'THEN--图案变换速度控制IFTEMP=011THEN--时钟分频(八分频)TEMP:=000;CK=NOTCK;ELSETEMP:=TEMP+1;--TEMP加1ENDIF;elseCK=NOTCK;--二分频ENDIF;ENDIF;ENDPROCESS;CLK1=CK;--输出时钟ENDART;3.1.3时序模块波形仿真如下:图4时序模块波形仿真如下分析:由波形可知当CLR为高电平时,CLK1输出为低电平复位。当SPEED为高电平时,CLK1输出为CLK进行四分频后的时钟;当SPEED为低电平时,CLK1输出原CLK。3.2显示模块3.2.1显示模块原理图如下:图5显示模块原理图CLK1:时钟信号输入CLK:复位LED:彩灯显示图6显示模块元件例化图3.2.2显示模块程序如下:LIBRARYIEEE;--显示模块(XS)USEIEEE.STD_LOGIC_1164.ALL;ENTITYXSISPORT(CLK1,CLR:INSTD_LOGIC;--定义输入时钟信号,复位信号LED:OUTSTD_LOGIC_VECTOR(8DOWNTO0));--彩灯输出ENDENTITYXS;ARCHITECTUREARTOFXSISTYPESTATEIS(S0,S1,S2,S3,S4,S5,S6);--7种状态SIGNALCURRENT_STATE:STATE;--定义CURRENT_STATE数据类型为STATESIGNALLIGHT:STD_LOGIC_VECTOR(8DOWNTO0);信号LIGHT位宽为9位BEGINPROCESS(CLR,CLK1)IS—敏感信号CLR,CLK1CONSTANTL1:STD_LOGIC_VECTOR(8DOWNTO0):=001001001;--彩灯图案一CONSTANTL2:STD_LOGIC_VECTOR(8DOWNTO0):=010010010;--彩灯图案二CONSTANTL3:STD_LOGIC_VECTOR(8DOWNTO0):=011011011;--彩灯图案三CONSTANTL4:STD_LOGIC_VECTOR(8DOWNTO0):=100100100;--彩灯图案四CONSTANTL5:STD_LOGIC_VECTOR(8DOWNTO0):=101101101;--彩灯图案五CONSTANTL6:STD_LOGIC_VECTOR(8DOWNTO0):=110110110;--彩灯图案六BEGINIFCLR='1'THENCURRENT_STATE=S0;--复位ELSIF(CLK1'EVENTANDCLK1='1')THEN—CLK1上升沿时CASECURRENT_STATEIS--彩灯变化WHENS0=--CURRENT_STATE状态为S0LIGHT=ZZZZZZZZZ;--LIGHT为高阻态CURRENT_STATE=S1;WHENS1=--CURRENT_STATE状态为S1LIGHT=L1;--LIGHT为图案一CURRENT_STATE=S2;WHENS2=--CURRENT_STATE状态为S2LIGHT=L2;--LIGHT为图案二CURRENT_STATE=S3;WHENS3=--CURRENT_STATE状态为S3LIGHT=L3;--LIGHT为图案三CURRENT_STATE=S4;WHENS4=--CURRENT_STATE状态为S4LIGHT=L4;--LIGHT为图案四CURRENT_STATE=S5;WHENS5=--CURRENT_STATE状态为S5LIGHT=L5;--LIGHT为图案五CURRENT_STATE=S6;WHENS6=--CURRENT_STATE状态为S6LIGHT=L6--LIGHT为图案六;CURRENT_STATE=S1;ENDCASE;ENDIF;ENDPROCESS;LED=LIGHT;--输出数据ENDARCHITECTUREART;3.2.3显示模块波形仿真图如下:图7显示模块波形仿真图3.2.4分析:当CLR为高电平时,现态CURRENT_STATE的状态为S0,LED输出为高阻态。否则,CURRENT_STATE从S1到S6循环,LED从L1到L6循环。显示模块状态图如下:图8显示模块状态图如下由图可知CURRENT_STATE的状态变化是S0-S1-S2-S3-S4-S5-S6-S13.3彩灯系统顶层原理图设计3.3.1顶层原理图设计图图9顶层原理图设计图3.3.2彩灯系统波形仿真图如下:图10彩灯系统波形仿真图如下分析:当RST为高电平时,LED输出为高阻态。当SPEED为高电平时,彩灯LED图形变化缓慢;当SPEED为低电平时,彩灯LED图案变化快。4编程与下载引脚锁定图11引脚锁定图5总结与体会通过本次课程设计我们做了彩灯控制系统,我们对EDA技术有了更深的了解,初步学会了自顶向下的设计方法设计系统,并利用VHDL语言进行了简单的电路模块化设计。在本次课程设计中我们发现了我们平时学习中的很多不足的地方,所学的理论知识无法灵活运用,遇到问题时不知所措,不能冷下心来思考等问题。在这次实际操作出现错误到修改错误的过程。让我们得到很大的提高,并告诉我们在发现问题时,及时问老师同学,注重团队合作的力量。我们同组同学明确分工,出现问题时认真探讨出错的原因。6参考文献[1]潘松,黄继业.EDA技术实用教程.北京:科学出版社,2002[2]《EDA技术实验与课程设计》主编曹昕燕周凤臣清华大学出版社[3]电子设计自动化(EDA)教程王锁萍成都电子科技大学出版社[4]辛春艳.VHDL硬件描述语言.北京:国防工业出版社,20027附录(源程序)LIBRARYIEEE;--时序控制模块(SX.VHD)USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSXISPORT(SPEED,CLK,CLR:INSTD_LOGIC;CLK1:OUTSTD_LOGIC);ENDSX;ARCHITECTUREARTOFSXISSIGNALCK:STD_LOGIC;BEGINPROCESS(CLK,CLR,SPEED)ISVARIABLETEMP:STD_LOGIC_VECTOR(2DOWNTO0);BEGINIFCLR='1'THENCK='0';TEMP:=000;ELSIF(CLK'EVENTANDCLK='1')THENIFSPEED='1'THENIFTEMP=011THENTEMP:=000;CK=NOTCK;ELSETEMP:=TEMP+1;ENDIF;elseCK=NOTCK;ENDIF;ENDIF;ENDPROCESS;CLK1=CK;ENDART;LIBRARYIEEE;--显示模块(XS.VHD)USEIEEE.STD_LOGIC_1164.ALL;ENTITYXSISPORT(CLK1,CLR:INSTD_LOGIC;LED:OUTSTD_LOGIC_VECTOR(8DOWNTO0));ENDENTITYXS;ARCHITECTUREARTOFXSISTYPESTATEIS(S0,S1,S2,S3,S4,S5,S6)