VHDL彩灯控制课程设计最终版对外Word下载.docx
《VHDL彩灯控制课程设计最终版对外Word下载.docx》由会员分享,可在线阅读,更多相关《VHDL彩灯控制课程设计最终版对外Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
引言
随着科技的发展
在现代生活中,
彩灯作为一种景观应用越来越多的应用到节目庆典、剧场灯光,橱窗装饰中。
EDA技术的应用引起电子产品及系统开发的革命性变革
以VHDL为基础的多路彩灯控制系统,同时减少了设计芯片的数量、缩小了体积、降低了功耗、提高了设计的灵活性、可靠性和可扩展性。
在电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言则是EDA的关键技术之一,它采用自顶向下的设计方法,即从系统总体要求出发,自上至下地将设计任务分解为不同的功能模块,最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。
本文介绍了基于EDA技的多路彩灯控制器的设计与分析。
在QuartusII环境下采用VHDL语言实现,论述
了基于VHDL语言和FPGA芯片的数字系统设计思想和实现过程。
多路彩灯控制器通过对应的开关按钮,能够控制多个彩灯的输出状态,组合多种变幻的灯光闪烁。
1设计任务及要求
1.1课程设计的目的
本次设计的主要目的是为了巩固所学的专业技术知识,培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力,培养初步的独立设计能力;
通过课程设计实践,了解并掌握一般的综合设计过程,训练并提高学生在理论计算、结构设计、工程绘图、查阅设计资料、运用标准与规范和应用计算机等方面的能力,更好地将理论与实践相结合,提高综合运用所学理论知识独立分析和解决问题的能力。
再设计完成后,还要将设计的电路进行安装、调试,加强我们的动手能力。
在此过程中培养从事设计工作的整体观念。
通过课程设计学习掌握适用EDA软件QuartusII,电路描述,综合,模拟仿真过程,同时掌握EDA的VHDL语言。
1.2设计任务及要求
设计一个多路彩灯控制器,能够在6种不同的彩灯花型之间进行循环变化,并可设置花型变化的节奏,且可进行复位。
要求给出系统总体组成框图,设计思路,完成以上模块的VHDL实现及功能仿真,顶层文件及整体仿真。
2.系统设计方案
2.1系统整体设计
整个系统有三个输入信号,分别为由系统晶振产生的时钟信号CLK脉冲,控制快慢的信号SPEED,复位清零信号CLR,输出信号是9路彩灯输出状态。
系统整体设计框图如图2-1:
图2-1系统整体设计框图
3各个分模块设计与控制
3.1时序模块
3.1.1时序模块功能
该模块主要功能:
通过CLK、CLR、SPEED三个输入端口和CLK1输出端口,实现分频电路的可控调节,从而控制彩灯的各个花型的变换速度快慢。
框图入3-1所示
图3-1时序模块框图
CLK为输入时钟信号,电路在时钟上升沿变化;
CLR为复位清零信号,高电平有效,一旦有效时,电路无条件的回到初始状态;
SPEED为频率快慢选择信号,低电平节奏快,高电平节奏慢;
CLK1为输出信号,CLR有效时输出为零,否则随SPEED信号的变化而改变。
设定时序控制电路所产生的控制时钟信号的快慢两种节奏分别为输入时钟信号频率的1/2和1/8,因而输出时钟控制信号可以通过对输入时钟的计数来获得。
当SPEED为低电平时,输出每经过一个时钟周期进行翻转,实现二分频的快节奏;
当SPEED为高电平时,输出每经过四个时钟周期进行翻转,实现八分频的慢节奏。
3.1.2时序模块程序
参见附录1。
3.1.3时序模块波形仿真
时序模块波形仿真结果如图3-2示
图3-2时序模块仿真图
由波形图中可以看出当高电平时,CLK1出为低电平复位。
当SPEED为高电平时,CLK1出为CLK进行八分频后的时钟;
当SPEED为低电平时,CLK1出为CLK进行二分频后的时钟。
3.2显示模块
3.2.1显示模块功能
显示控制电路的模块框图如3-3,入信号CLK和CLR的定义与时序控制电路一样,输出信号LED[9..0]能够循环输出9路彩灯6种不同状态的花型。
对状态的所对应的彩灯输出花型定义如表3-1,彩灯状态的状态循环图如图3-4所示。
图3-3显示模块框图
表3-1状态对应表
状态名
状态
S0
000000000
S1
001001001
S2
010010010
S3
011011011
S4
100100100
S5
101101101
S6
110110110
图3-4彩灯状态示例
3.2.2显示模块程序
参见附录2
3.2.3显示模块仿真图
显示模块波形仿真图3-5,通过分析仿真图可知当CLR为高电平时,LED的状态为S0,彩灯全灭。
否则状态从S1到S6循环。
图3-5显示模块仿真图
3.3系统顶层设计
3.3.1顶层程序设计
参见附录3.
3.3.2系统顶层波形仿真
通过分析顶层仿真图3-6可知,当CLR为高电平时,LED输出为零。
当SPEED为高电平时,彩灯LED花型变化缓慢;
当SPEED为低电平时,彩灯LED花型变化快。
图3-6系统顶层仿真图
4.总结与心得
通过本次课程设计实现了彩灯的全部功能,此次设计充分利用VHDH“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂的数字系统是非常有用的。
它使的我们可以从简单的单元入手,逐渐构成庞大而复杂的系统。
通过使用EDA编程既方便又快捷的实现了程序。
本次设计的程序已经在硬件系统上得到了验证,实验表明,此设计方法能够满足多种不同花样彩灯的变化要求。
并且该方法便于扩展不同变化模式的彩灯花样。
通过近一周时间课程设计,不仅检验了我以往所学习的理论知识,而且还丰富了课外知识学到了许多在课上没有学过的东西,并且也体会到了自己做设计时的能力不足,以及综合运用知识的能力的不足,体会了学以致用、与实践相结合的乐趣,也发现了团队合作的重要性,而且通过查阅资料上网搜索学习到了许多搜索资料方面的技能,也对今后的资料搜索和论文编写打下了良好的基础。
参考文献
[1]潘松,黄继业等.EDA与VHDL(第三版).清华大学出版社,2009
[2]李洋.EDA技术实用教程.机械工业出版社,2011..
[3]曹昕燕,周凤臣.《EDA技术实验与课程设计》主编清华大学出版社,2008
附录1
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYtimecontrolIS
PORT(SPEED:
INSTD_LOGIC;
CLK:
CLR:
CLK1:
OUTSTD_LOGIC);
ENDtimecontrol;
ARCHITECTUREARTOFtimecontrolIS
SIGNALCK:
STD_LOGIC;
BEGIN
PROCESS(CLK,CLR,SPEED)IS
VARIABLETEMP:
STD_LOGIC_VECTOR(2DOWNTO0);
IFCLR='
1'
THENCK<
='
0'
;
TEMP:
="
000"
ELSIF(CLK'
EVENTANDCLK='
)THEN
IFSPEED='
THEN
IFTEMP="
011"
THEN
CK<
=NOTCK;
ELSE
=TEMP+1;
ENDIF;
else
ENDPROCESS;
CLK1<
=CK;
ENDART;
附录2
ENTITYdisplayledIS
PORT(CLK1:
LED:
OUTSTD_LOGIC_VECTOR(8DOWNTO0));
ENDENTITYdisplayled;
ARCHITECTUREbehavOFdisplayledIS
TYPESTATEIS(S0,S1,S2,S3,S4,S5,S6);
SIGNALCURRENT_STATE:
STATE;
SIGNALLIGHT:
STD_LOGIC_VECTOR(8DOWNTO0);
PROCESS(CLR,CLK1)IS
CONSTANTL1:
STD_LOGIC_VECTOR(8DOWNTO0):
001001001"
CONSTANTL2:
010010010"
CONSTANTL3:
011011011"
CONSTANTL4:
100100100"
CONSTANTL5:
101101101"
CONSTANTL6:
110110110"
THENCURRENT_STATE<
=S0;
ELSIF(CLK1'
EVENTANDCLK1='
)THEN
CASECURRENT_STATEIS
WHENS0=>
LIGHT<
000000000"
CURRENT_STATE<
=S1;
WHENS1=>
=L1;
=S2;
WHENS2=>
=L2;
=S3;
WHENS3=>
=L3;
=S4;
WHENS4=>
=L4;
=S5;
WHENS5=>
=L5;
=S6;
WHENS6=>
=L6;
ENDCASE;
ENDPROCESS;
LED<
=LIGHT;
ENDARCHITECTUREbehav;
附录3
ENTITYwholeIS
PORT(CLK,CLR,SPEED:
ENDENTITYwhole;
ARCHITECTUREthreeOFwholeIS
COMPONENTtimecontrol
PORT(CLR,CLK,SPEED:
ENDCOMPONENT;
COMPONENTdisplayled
PORT(CLK1,CLR:
SIGNALS:
BEGIN
U1:
timecontrolPORTMAP(SPEED=>
SPEED,CLK=>
CLK,CLR=>
CLR,CLK1=>
S);
U2:
displayledPORTMAP(CLK1=>
S,CLR=>
CLR,LED=>
LED);
END;