《多路彩灯控制器.docx》由会员分享,可在线阅读,更多相关《多路彩灯控制器.docx(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、专业实训EDA技术与VHDL课程设计班 级: 电信12-2 姓 名: 李 猛 学 号: 1206110207 指导教师: 石松宁 成 绩: 电子与信息工程学院多路彩灯控制器摘要在电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段。本文利用VHDL语言设计了一个十六路彩灯控制器,六种花型循环变化,有清零开关,并且可以选择快慢两种节拍。整个系统共有三个输入信号CLK、CLR和KEY,十六路输出信号。时钟信号CLK由外部输入,经分频后控制快慢节奏。将整个系统分为三个部分,分别为时序控制部分、显示控制部分和顶层程序部分。并利用QuartusII软件进行时序仿真和查看RTL图,最终实现
2、多路彩灯控制器。关键词:电子设计自动化(EDA)、彩灯控制器、VHDL、QuartusII1 设计分析现今科学技术飞速发展,人民的生活水平不断提高。在现代生活中,彩灯作为一种装饰物品,既可以增强人们的感观,起到广告宣传的作用,又可以增添节日气氛,为人们的生活增添色彩。随着电子技术的发展,应用系统向着小型化、快速化、大容量、重量轻的方向发展,EDA(Electronic Design Automatic)技术的应用引起电子产品及系统开发的革命性变革。VHDL语言作为可编程逻辑器件的标准语言描述能力强,覆盖面广,抽象能力强,在实际应用中越来越广泛。在这个阶段人们开始追求贯彻整个系统设计的自动化,可
3、以从繁重的设计工作中彻底解脱出来,把精力集中在创造性的方案与概念构思上,从而可以提高设计效率,缩短产品的研制周期。作为一种工业标准硬件描述语言,相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(Top to Down)和基于库(LibraryBased)的设计的特点。因此设计者可以不必了解硬件结构,从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)
4、的设计。用VHDL语言进行数字逻辑电路和数字系统的设计,是电子电路设计方法上的一次革命性变革。与传统设计方法相比,VHDL 语言有很多优点:(1) 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2) VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3) VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的
5、完成必须有多人甚至多个开发组共同并行工作才能实现。(4) 对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5) VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。1.1 设计思路本文利用VHDL语言设计了一个十六路彩灯控制器,六种花型循环变化,有清零开关,并且可以选择快慢两种节拍。整个系统共有三个输入信号CLK、CLR和KEY,十六路输出信号。时钟信号CLK由外部输入,经分频后控制快慢节奏。运用自顶而下的设计思想,按功能逐层分割实现层次化设计。根据多路彩灯
6、控制器的设计原理,将整个系统分为三个部分,分别为时序控制部分、显示控制部分和顶层程序部分。本设计方案的设计思想比较简单,元件种类使用少,充分利用了各种元件。程序编写简单易懂,并能够灵活地添加或删减程序实现多种花型的变化,有很大的灵活性2。显示控制部分中实现的六种花型分别为:表1-1 状态与显示的花型状态显示花型状态S1状态S2状态S3状态S4状态S5状态S6时序控制部分显示功能部分LED0LED15顶层设计部分CLK分频循环图1-2 多路彩灯控制器系统方框图2 系统设计及功能2.1 控制部分功能描述时序控制部分的功能是产生输入时钟信号的1/2分频信号和1/4分频信号,用来控制十六路彩灯的节奏变
7、化快慢。显示控制部分的功能是使电路产生六种不同的状态花型并且循环显示,以此实现本次课程设计要求实现的多路彩灯控制器的花型循环显示功能。顶层控制部分是实现时序控制部分与显示部分的元件例化和连接功能。2.2 时序控制部分 时序控制部分是本程序的时钟信号选择部分,它的功能是产生输入时钟信号的1/2分频信号和1/4分频脉冲信号,以此控制十六路彩灯的节奏变化快慢。时序控制部分在本电路中起着至关重要的作用,它以彩灯闪动快慢节奏的变化实现了多路彩灯绚丽多彩的花型节奏变化。时序控制电路是整个电路中一个分部分,它的设计对十六路彩灯控制器设计的顺利完成起着决定性的作用。2.2.1 时序控制部分VHDL文本输入界面
8、图2-1时序控制部分VHDL文本输入图时序控制部分程序:IF CLR=1 THEN CLKK=0;TEMP:=00;ELSIF CLKEVENT AND CLK=1 THENIF KEY=1 THENIF TEMP=01 THEN TEMP:=00; CLKK=NOT CLKK;ELSE TEMP:=TEMP+1;END IF;ELSEIF TEMP=11 THEN TEMP:=00; CLKK=NOT CLKK;ELSE TEMP:=TEMP+1;END IF;END IF;END IF;END PROCESS;CLKO=CLKK;本段程序的作用是当CLR=1时,电路复位,即CLKK=0;T
9、EMP:=00;当KEY=1时产生输入时钟信号频率的1/2的分频信号,否则产生输入时钟信号频率的1/4的分频信号。本段程序实现了时钟频率的选择与变换,要想改变彩灯节奏变化的快慢,只需利用KEY选择开关置1或置0即可轻松实现输入时钟信号频率的1/2的时钟信号和输入时钟信号频率的1/4的分频信号的转换,简单并且容易修改,为十六路彩灯控制器的设计提供了更大的灵活性。2.2.2 时序控制部分波形仿真界面图2-2时序控制部分KEY=1时序仿真图图2-3时序控制部分KEY=0时序仿真图2.3 显示功能部分显示功能部分的主要功能是使电路产生六种花型并且循环显示,以此实现本次课程设计要求实现的多路彩灯控制器的
10、花型循环显示功能。显示功能部分应用VHDL语言设计了本次十六路彩灯的六种循环花型,显示功能电路是整个电路中另外一个分部分,它的设计质量直接决定着十六路彩灯控制器花型循环的花样和质量。2.3.1 显示功能部分VHDL文本输入界面图2-4 显示功能部分VHDL文本输入图显示功能部分程序:PROCESS(CLR,CLK)ISCONSTANT F1:STD_LOGIC_VECTOR(CONSTANT F2:STD_LOGIC_VECTOR(CONSTANT F3:STD_LOGIC_VECTOR(CONSTANT F4:STD_LOGIC_VECTOR(CONSTANT F5:STD_LOGIC_VE
11、CTOR(CONSTANT F6:STD_LOGIC_VECTOR(本段程序的作用是定义六种花型。此六种花型可根据个人的喜好灵活进行调节和改变,这在很大程度上增加了程序本身的实用性,又由于是软件程序设计,下载到硬件上后LED灯的排列和摆设更不受程序的影响。显示功能部分状态转换程序1:IF CLR=1 THEN CURRENT_STATENEXT_STATE=ZZZZZZZZZZZZZZZZ; CURRENT_STATENEXT_STATE=F1; CURRENT_STATENEXT_STATE=F2; CURRENT_STATENEXT_STATE=F3; CURRENT_STATENEXT_
12、STATE=F4; CURRENT_STATENEXT_STATE=F5; CURRENT_STATENEXT_STATE=F6; CURRENT_STATE=S1;END CASE;END IF;END PROCESS;LED=NEXT_STATE;程序的作用是如果当CLR=1时,则状态进行初始化,即CURRENT_STATE=S0;并且通过状态的转换实现六种花型的循环显示。如果想改变六种花型的循环顺序,只需修改部分状态即可,本程序有很大的灵活性和实用性。2.3.2 时序功能部分波形仿真界面图2-5时序功能部分时序仿真图3 功能实现及仿真3.1 整体功能描述在时序控制电路SXDL的设计中,利
13、用计数器计数达到分频值时,对计数器进行清零,同时将输出信号反向,这就非常简洁地实现了对输入时钟信号的分频,并且分频信号的占空比为。在显示控制电路XSDL的设计中,利用状态机非常简洁地实现了六种花型的循环变换,同时利用六个十六位常数的设计,可非常方便地设置和修改六种花型。对于顶层程序的设计是彩灯显示控制电路是整个设计的核心,彩灯显示控制部分能进行彩灯的花型控制,它负责整个设计的输出效果即各种彩灯图案的样式变化。在电路中以 1 代表灯亮,以 0 代表灯灭,由 0、1按不同的规律组合代表不同的灯光图案,同时使其选择不同的变化频率,从而实现多种图案多种频率的花样功能显示。该程序充分地说明了用 VHDL
14、设计电路的简单易修改的特性,即可通过适当地改变程序中输出变量来改变彩灯的花型。时序控制部分对灯闪的速度控制有两种速度,一是1/2分频时钟信号,二是1/4分频时钟信号。并且还可以通过改变CLK的时钟输入信号来产生更多的频率。最后,当各个部分均完成上述操作之后,即可利用Quartus的原理图输入,调用各个元器件(底层文件),以原理图的形式形成最后的十六路彩灯显示系统(顶层文件),并且进行测试仿真。3.2 设计原理用VHDL进行设计,首先应该了解VHDL语言一种全方位硬件描述语言。包括系统行为级、寄存传输级和逻辑门级多个设计层次。应充分利用VHDL“自顶向下”的设计优点以及层次化的设计概层次概念对于
15、设计复杂的数字系统是非常有用它使得人们可以从简单的单元入手,逐渐构成庞大而复杂的系统。根据多路彩灯控制器的设计要求可知,整个系统共有三个输入信号:控制彩灯节奏快慢的时钟信号CLK,系统复位信号CLR,彩灯节奏快慢选择开关KEY;共有十六个输出信号LED15LED0,分别用于控制十六路彩灯。据此可以将整个彩灯控制电路DCDL分为两大部分:时序控制电路SXDL和显示控制电路XSDL。系统的工作原理是时序控制电路SXDL根据输入信号KEY、CLR、CLK产生的符合一定要求的、供显示控制电路XSDL使用的控制时钟信号,而显示控制电路XSDL则根据时序控制电路SXDL输入的控制时钟信号,输出六种花型循环
16、变化的、控制十六路彩灯工作的控制信号,这些控制信号加上驱动电路一起控制彩灯工作。图3-1 顶层设计RTL图顶层程序部分设计程序1:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DCDL ISPORT(CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; KEY:IN STD_LOGIC; LED:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END ENTITY DCDL;ARCHITECTURE ART OF DCDL ISCOMPONENT SXDL ISPORT(KEY:IN STD_LOGIC;
17、CLK:STD_LOGIC; CLR:IN STD_LOGIC; CLKO:OUT STD_LOGIC);END COMPONENT SXDL;COMPONENT XSDL ISPORT(CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; LED:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END COMPONENT XSDL;SIGNAL S1:STD_LOGIC;BEGINU1:SXDL PORT MAP(KEY,CLK,CLR,S1);U2:XSDL PORT MAP(S1,CLR,LED);END ARCHITECTURE ART;3.3 程
18、序编译及仿真VHDL顶层程序程序输入界面图3-2 VHDL顶层程序程序输入图顶层程序波形仿真图:图3-3顶层程序时序仿真图从仿真波形可以看出,此程序可以实现六种不同花样彩灯的相互变换,每种花样彩灯可以循环变化。4 设计总结在电子技术设计领域,可编程逻辑器件的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。VHDL语言作为可编程逻辑器件的标准语言描述能力强,覆盖面广,抽象能力强,在实际应用中越来越广泛。VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次。应充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂的数
19、字系统是非常有用的,它使得我们可以从简单的单元入手,逐渐构成庞大而复杂的系统。通过使用EDA编程既方便又快捷的实现了本次设计,通过仿真说明此设计方法能够满足多种不同花样彩灯的变化要求,并且该方法便于扩展不同变化模式的彩灯花样。但是试验中也出现了一些不熟练的操作问题和一些复杂程序的不能完全理解都需要我在平时多学习,进一步的完善自己。在设计时和同学相互交流各自的想法也是很重要的,不同的人对问题的看法总有差异,我们可以从交流中获得不同的思路,多多借鉴别人好的想法。课程设计是配合基础课程与实验教学的一个非常重要的教学环节。它不但能巩固我们已所学的理论知识,而且能提高我们的电子电路的设计水平,还能加强我
20、们综合分析问题和解决问题的能力,进一步培养我们的实验技能和动手能力,启发我们的创新意识和创新思维。这次课设使我受益匪浅,使我对自己有了更清楚的认识。参考文献1 潘松、黄继业.EDA技术与VHDL(第4版)M.清华大学出版社,2005.2 范秋华、赵艳秋、何香玲.基于VHDL的彩灯控制J.现代电子技术,2004.附录1.时序控制完整程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SXDL ISPORT(KEY:IN STD_LOGIC; CLK:IN STD_LOGIC; CLR:
21、IN STD_LOGIC; CLKO:OUT STD_LOGIC);END ENTITY SXDL;ARCHITECTURE ART OF SXDL ISSIGNAL CLKK:STD_LOGIC;BEGINPROCESS (CLK,CLR,KEY) ISVARIABLE TEMP:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINIF CLR=1 THEN CLKK=0;TEMP:=00;ELSIF CLKEVENT AND CLK=1 THENIF KEY=1 THENIF TEMP=01 THEN TEMP:=00; CLKK=NOT CLKK;ELSE TEMP:=T
22、EMP+1;END IF;ELSEIF TEMP=11 THEN TEMP:=00; CLKK=NOT CLKK;ELSE TEMP:=TEMP+1;END IF;END IF;END IF;END PROCESS;CLKO=CLKK;END ARCHITECTURE ART;2.显示功能完整程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XSDL ISPORT(CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; LED:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END ENTITY XSDL;A
23、RCHITECTURE ART OF XSDL ISTYPE STATE IS(S0,S1,S2,S3,S4,S5,S6);SIGNAL CURRENT_STATE:STATE;SIGNAL NEXT_STATE:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINPROCESS(CLR,CLK)ISCONSTANT F1:STD_LOGIC_VECTOR(CONSTANT F2:STD_LOGIC_VECTOR(CONSTANT F3:STD_LOGIC_VECTOR(CONSTANT F4:STD_LOGIC_VECTOR(CONSTANT F5:STD_LOGIC_VE
24、CTOR(CONSTANT F6:STD_LOGIC_VECTOR(BEGINIF CLR=1 THEN CURRENT_STATENEXT_STATE=ZZZZZZZZZZZZZZZZ; CURRENT_STATENEXT_STATE=F1; CURRENT_STATENEXT_STATE=F2; CURRENT_STATENEXT_STATE=F3; CURRENT_STATENEXT_STATE=F4; CURRENT_STATENEXT_STATE=F5; CURRENT_STATENEXT_STATE=F6; CURRENT_STATE=S1;END CASE;END IF;END
25、PROCESS;LED=NEXT_STATE;END ARCHITECTURE ART;3.顶层设计完整程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DCDL ISPORT(CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; KEY:IN STD_LOGIC; LED:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END ENTITY DCDL;ARCHITECTURE ART OF DCDL ISCOMPONENT SXDL ISPORT(KEY:IN STD_LOGIC; CLK:STD_LOGIC; CLR:IN STD_LOGIC; CLKO:OUT STD_LOGIC);END COMPONENT SXDL;COMPONENT XSDL ISPORT(CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; LED:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END COMPONENT XSDL;SIGNAL S1:STD_LOGIC;BEGINU1:SXDL PORT MAP(KEY,CLK,CLR,S1);U2:XSDL PORT MAP(S1,CLR,LED);END ARCHITECTURE ART;
限制150内