《8路彩灯设计报告解析(共15页).doc》由会员分享,可在线阅读,更多相关《8路彩灯设计报告解析(共15页).doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上设 计 报 告课程名称 在系统编程技术 任课教师 设计题目 多路彩灯控制器的设计 班级 姓名 学号 日期 2010-6-16 目录专心-专注-专业多路彩灯控制器的设计前言多路彩灯控制器通过对应的开关按钮,能够控制多个彩灯的输出状态,组合多种变幻的灯光闪烁,它被广泛地应用到节日庆典、剧场灯光、橱窗装饰中。采用数字电路方式实现的多路彩灯控制器其原理比较简单,基于对VHDL的初步学习,利用VHDL语言设计一个灯控制器,能循环变化花型,可清零,可选择花型变化节奏。本想设计一个16路的彩灯,但是由于实验设备的限制,只能做8路得彩灯,但是其原理并没有区别,都是根据它是由两个主要部
2、分组成,即时序控制电路和显示控制模块两部分组成,利用VHDL语言的结构化和自顶而下的设计方法,先分别设计出时序控制电路和显示控制电路两部分,然后利用VHDL的自顶而下的设计,在总的彩灯控制器设计中引入时序控制和显示控制,即可实现多路彩灯控制器的设计。一、题目分析1.1 总体方框图多路彩灯控制器设计时序控制电路设计显示控制模块设计7种花型循环闪烁功能复位清零功能快慢节奏功能1.2 具体功能要求本次设计要实现的功能如下:1、彩灯控制器由8路发光二极管构成,当控制器开关打开时,能够在7种不同的彩灯花型之间进行循环变化;2、控制器具备复位功能,一旦复位信号有效,不论控制器花型变化处于何种状态,都会无条
3、件即刻清零,恢复到初始状态;3、设置节拍选择按钮。按下此按钮,多路彩灯控制器的花型变化的节奏减缓;放开此按钮,则变化节奏加快。二、系统设计方案方案论证:方案一:以一个8路彩灯花样控制器、一个四频率输出分频器,一个四选一控制器和一个时间选择器总共四部分来完成设计。四选一控制器从分频器选择不同频率的时钟信号输送到彩灯花样控制器,从而达到控制彩灯闪烁速度的快慢,时间选择器控制每种速度维持的时间长短。方案二:根据要完成的功能要求,整个系统共有3个输入信号,分别是控制器快慢节奏控制信号opt、复位清零信号clr和时钟脉冲信号clk,输出信号是8路彩灯的输入状态led70,系统框图如下分析:多路彩灯控制器
4、可由两个电路模块组成:时序控制电路模块和显示控制电路模块。时序控制电路根据输入信号的设置得到相应的输出信号,并将此信号作为显示控制电路的时钟信号;显示控制电路根据输入时钟信号的周期,有规律的输出预先设定的六种彩灯从而使得多路彩灯控制器在一定的输入条件下提供符合设计要求的有效输出。经过以上分析,选择方案二较合理,因为资源的限制,选择方案二较合理。三、主要模块设计多路彩灯控制器的实现基础是时序控制电路和显示控制电路的设计。3.1、时序控制模块时序控制电路模块的方框图如下时序控制电路原理图如下:其中,clk为输入时钟信号,电路在时钟上升沿发生变化;clr为复位清零信号,高电平有效,且一旦该信号有效,
5、电路无条件复位为初始状态;opt为快慢节奏选择信号,低电平节奏快,高电平节奏慢;clkout为输出信号,当clr信号有效时其输出为0;否则clkout的周期随opt信号的改变而改变。设置时序控制电路所产生的控制时钟信号的快慢两种节奏,分别为输入时钟信号频率的1/4和1/8,因而输出时钟控制信号可以通过对输入时钟的计数来获得。当opt为低电平时,输出每经过两个时钟周期进行翻转,实现四分频的快节奏;当opt为高电平时,输出每经过四个时钟周期进行翻转,实现八分频的慢节奏。3.2、显示控制电路模块 显示控制电路模块的方框图如下:显示控制电路原理图如下:输入信号clk和clr的定义与时序控制电路一样,输
6、出信号led7.0能够循环输出8路彩灯。各状态对应的彩灯输出花型定义为:S0: 00000000S1: 01010101S2: 10101010S3: 10001000S4: 11001100S5: 00110011S6: 00010001四、 VHDL源程序设计(见附录)五、系统仿真与分析5.1时序控制电路的仿真波形仿真波形分析:从上图可以看出,当复位信号为高电平时,信号使能,使得电路不论处于何种状态或时钟周期的哪个位置,都即刻被复位清零。图中,复位信号从时钟下降沿开始有效,输出信号不必等到时钟的上升沿就马上恢复为初始状态。当快慢节奏信号opt为低电平时,此时的时序控制电路起着四分频的作用,
7、每经过两个输入时钟周期,输出信号都进行翻转,当快慢节奏选择信号opt高电平时,时序控制电路类似于八分频分频器。每经过四个输入时钟周期,输出信号都进行翻转。Opt信号取值不同时对应的输出控制信号的周期也不相同,二者分别表示两种频率不同的快慢周期信号。上图的仿真结果符合电路的设计要求。5、2显示控制模块的仿真波形仿真波形分析:当复位清零信号有效时,彩灯输出为初始状态,按照预先设定为全0;否则,显示控制电路在7种不同状态之间循环变化。5、3多路彩灯控制器的仿真波形多路彩灯控制器仿真波形:下图为多路彩灯控制器复位功能仿真波形:仿真波形分析:图中,当复位信号clr为高电平时,不论8路彩灯处于何种工作状态
8、,也不论在输入时钟信号的哪个功能,所有的输出都被清零,恢复为初始状态,也就是说,clr的优先级别最高。下图为多路彩灯控制器快节奏输出的仿真实现:下图为多路彩灯控制器慢节奏输出的仿真实现:仿真波形分析:当快慢节奏选择信号选择快节奏输出,即信号opt为低电平,此时,每经过四个时钟周期,彩灯的输出状态发生一次变化,并在七个不同的状态之间循环改变,当快慢节奏选择信号选择慢节奏输出,即信号opt为高电平,每次要经过八个时钟周期才会改变一次输出状态。通过使用时序控制电路和显示控制电路这两个例化元件,将时序控制电路的输出作为显示电路的输入时钟信号,即可实现多路彩灯的控制器,如下图所示:五、硬件实现5.1 引
9、脚锁定(模式5)CLOCK0:8路彩灯控制器的时钟脉冲信号clk接目标芯片EP1C3T144C8的CLOCK0键8:8路彩灯控制器的复位清零信号clr接目标芯片EP1C3T144C8的模式5的实验结构图的键8 键7:8路彩灯控制器的快慢节奏控制信号opt接目标芯片EP1C3T144C8的模式5的实验结构图的键7D1D8:8路彩灯控制器的8路输出信号led70接目标芯片EP1C3T144C8的模式5的实验结构图的D1D8的led灯显示输出状态5.2 硬件测试及说明下载完成后接通目标芯片的CLOCK0,按下键8为高电平时(相应的led灯发光),输出的led灯全部被清零,键8为低电平时(相应的led
10、灯灭),输出的led灯从00000000状态开始循环发光,键7为设置节拍按钮,按下此按钮为低电平时(四分频),多路彩灯的输出频率为输入时钟脉冲CLOCK0频率的1/4,键7为高电平时(八分频),多路彩灯的输出频率为输入时钟脉冲CLOCK0频率的1/8,比如当输入频率选为64HZ时,键7为高电平时,输出彩灯状态的转换频率为8HZ,即每0.125s变换一次状态,键7为低电平时,输出彩灯状态的转换频率为16HZ,即每0.0625s变换一次状态,节奏较快。通过选择钟脉冲CLOCK0的频率可以变换输入输出的频率。六、结论由以上可以知道,本实验设计的多路彩灯控制器实现了系统设计的要求,即在硬件连接测试时,
11、在芯片EP1C3T144C8的测试上,测试结果与题目所要实现的一致。通过改变CLOCK0的频率以及opt来控制输出彩灯的快慢。七、设计总结通过本课程设计,我学会了EDA简单系统的设计。多路彩灯控制器有时钟控制模块和显示控制模块,其中模块设计中分别利用了分频器和状态机。利用分频器得到了两个频率的时钟信号,利用了状态机得到了彩灯的六种输出状态。运用自顶而下的设计思想,按功能逐层分割实现层次化设计,在VHDL程序设计整体思路上采用的是自顶而下的模块化的行为结构描述的方法。在设计子模块时分别进行模拟仿真并且在最后对整个系统进行仿真,确保整个系统的正确性。从本次设计中,我掌握了VHDL的语法结构和使用方
12、法学,学会子模块的设计,以及简单系统的设计方法和思路。本次的设计是简单系统的设计,其实还可以增加多路彩灯的实现的功能,比如还可以使多路彩灯的输出定时自动变换快慢节奏,或者使多路彩灯的输出的频率不止两种,给时序控制电路定时,使其输出更多种频率的循环。这点会在以后继续学习的过程中加以改进。设计过程中通过查阅资料和与同学交流最后能完成要求的功能。八、参考文献1EDA技术与VHDL电路开发应用实践 刘欲晓 方强 黄宛宁等编著 电子工业出版社2EDA技术实用教程 潘松 黄继业编著 科学出版社3数字逻辑EDA设计与实践 刘昌华编著 国防工业出版社九、附录1、时序控制电路VHDL设计源程序:LIBRARY
13、IEEE; -加载库文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; / IEEE设计库名,STD_LOGIC_UNSIGNED程序包名ENTITY metronome IS -定义实体 PORT(clk :IN STD_LOGIC; -时钟信号 clr:IN STD_LOGIC; -复位信号 opt:IN STD_LOGIC; -快慢选择信号 clkout:OUT STD_LOGIC); -输出时钟控制信号END metronome;ARCHITECTURE rtl OF metronome IS -定义结构体SIG
14、NAL clk_tmp: STD_LOGIC;-定义中间结点信号SIGNAL counter: STD_LOGIC_VECTOR(1 DOWNTO 0);-定义计数器BEGIN /下面为结构体中的功能描述语句 PROCESS(clk,clr,opt) -当敏感信号发生变化时,启动进程 BEGIN IF clr=1 THEN -清零 clk_tmp=0; counter=00; /00表示二进制数,矢量位,必须加双引号 ELSIF clkEVENT AND clk=1 THEN IF opt=0 THEN -四分频,快节奏 IF counter=01 THEN counter=00; clk_t
15、mp=NOT clk_tmp; /逻辑操作符NOT,取反 ELSE counter= counter+1; / counter逻辑矢量,1整数,不同类型数据相加,调用函数,即运算符重载,用到STD_LOGIC_UNSIGNED程序包,既有输出又有反馈 END IF; ELSE IF counter=11 THEN -八分频,慢节奏 counter=00; clk_tmp=NOT clk_tmp; ELSE counter= counter+1; END IF; END IF; END IF; END PROCESS; clkout=clk_tmp; -输出分频后的时钟信号 / clk_tmp为
16、信号,所以放在进程外,若为变量,则放在进程里,数据对象有信号、变量、常量END rtl; 2、显示控制模块VHDL设计源程序:LIBRARY IEEE; -加载库文件USE IEEE.STD_LOGIC_1164.ALL;ENTITY output IS -定义实体output PORT(clk :IN STD_LOGIC; -输入时钟信号 clr:IN STD_LOGIC; -复位信号 led:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -彩灯输出END output;ARCHITECTURE rtl OF output IS -定义结构体TYPE states IS
17、 -枚举类型,枚举状态机状态 / states数据类型 (s0,s1,s2,s3,s4,s5,s6);SIGNAL state: states; /定义一个数据的暂存节点BEGIN PROCESS(clk,clr) -进程 /进程的敏感信号表,通常要求将进程中所有的输入信号放在敏感信号表中 BEGIN IF clr=1 THEN -清零 /条件语句IF- THEN- ELSIF state=S0; led / =不是操作符,含义“于是” state=s1; / state=s2; led state=s3; led state=s4; led state=s5; led state=s6; l
18、ed state=s1; led=00010001; END CASE; END IF; END PROCESS; END rtl; 3、多路彩灯控制器顶层设计源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; / STD_LOGIC_1164程序包ENTITY colorled IS -定义实体,顶层模块 PORT( /描述电路端口及端口信号 clk:IN STD_LOGIC; -输入时钟信号 /端口模式IN,数据类型STD_LOGIC,属标准位类型 clr:IN STD_LOGIC; -清零信号 opt:IN STD_LOGIC; -节奏选择信号
19、led:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -8路彩灯输出 /标准逻辑矢量数据类型STD_LOGIC_VECTOR );END colorled;ARCHITECTURE rtl OF colorled IS -定义结构体 /描述电路器件的内部逻辑功能或电路结构COMPONENT metronome IS -定义元件,时序控制电路 /元件名metronome /调用时序控制电路声明语句/元件例化,引入连接关系,将设计好的实体定义为一个元件,利用特定语句将此元件与当前的设计实体中的指定端口相连接 PORT( /端口名表,列出该元件对外通信的各端口名 clk:IN S
20、TD_LOGIC; clr:IN STD_LOGIC; opt:IN STD_LOGIC; clkout:OUT STD_LOGIC );END COMPONENT metronome; /元件定义语句,相当于对一个现成的设计实体进行封装 COMPONENT output IS -定义元件,显示控制电路 PORT( clk :IN STD_LOGIC; clr:IN STD_LOGIC; led:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END COMPONENT output; SIGNAL clk_tmp:STD_LOGIC; /定义一个信号作为内部的连接线BEGIN /元件例化语句之二,将此元件与当前设计实体(顶层文件)中元件间及端口的连接 U1:metronome PORT MAP(clk,clr,opt,clk_tmp); -例化时序控制模块 /例化名U1,相当于插座名,元件名metronome,端口连接PORT MAP U2:output PORT MAP(clk_tmp,clr,led); -例化显示控制模块END rtl;