1
电子设计自动化
大作业
题 目 彩灯控制器
学 院 控制科学与工程学院
班 级
姓 名
学 号
二0一一年十一月六日
目录
一、 摘要……………………………… 3
1.1 引言………………………… 3 二、总体设计………………………… 4
2.1 设计背景……………………2.2 设计要求……………………2.3 设计思路……………………三、单元模块设计…………………… 5
3.1 设计方框流程图…………… 5 3.2 模块设计…………………… 7 3.2.1 时序控制电路模块… 7 3.2.2 显示模块电路……… 9 3.2.3 顶出模块…………… 11 四、彩灯控制器整体组装…………… 13 4.1 组装电路原理图…………… 13 4.2 仿真波形及结果…………… 14 五、实验总结………………………… 15
2
4 4 5
一、摘 要
本课题主要是基于可编程逻辑器件,使用硬件描述语言VHDL,采用“自顶而下”的设计方法,完成一个彩灯控制器的设计,并且使用Quartus II仿真软件来仿真结果。本文先对彩灯控制器的整体框图和原理做简单的说明,对彩灯控制器分模块说明和分析,而后将各个模块组装实现彩灯的花型控制,最后探讨VHDL语言的描述和仿真结果。
1.1 引 言
当今社会是数字化的社会,也是数字集成电路广泛应用的社会,数字本身在不断的进行更新换代。它由早起的电子管、晶体管、小中规模集成电路发展到超大规模集成电路以及许多具有特定功能的专用集成电路。而EDA技术就是以微电子技术为物理层面,现代电子设计为灵魂,计算机软件技术为手段,最终形成集成电子系统或专用集成电路ASIC为目的的一门新兴技术。
VHDL是一种应用较为广泛的HDL语言,能对范围广泛的各种复杂的网络在不同的抽象级加以描述,而且在整个设计过程中可使用同一种语言。采用VHDL作为HDL综合设计的
3
优点有:标准语言,即设计者可在不同环境下进行设计;仿真和综合均可采用同一种语言进行;VHDL中提供的大量的资源模块,简化了设计者的开发工作;由VHDL描述的源文件既是程序文件又可作为设计的文档。
二、 总体设计 2.1 设计背景
在经济和商业高度发达的今天,彩灯已经成为人民日常生活不可或缺的一部分,已经逐渐为越来越多的人们所关注,在家庭中的普及率不断提高,大大的丰富和点缀了人民的生活。彩灯由不同的颜色的LED灯组成,通过控制不同颜色的灯的亮与灭,呈现给人们不同的花塑和图案,极大的点缀了单调的都市夜景,让城市成为了多姿多彩的不夜城。
2.2 设计要求
设计能让一排彩灯(8只)自动改变显示花样的控制系统,发光二极管可作为彩灯用。控制器应该有两种控制方式:
(1)、彩灯的循环变化有快慢两种节奏,彩灯能够循环变化,而且有清零的功能。
(2)、设计彩灯的花型显示为四种。
4
2.3 设计思路
设计一个彩灯控制器,可以实现四种花型循环的变化,即应该有复位开关,用状态机来控制实现。用分频器来控制实现调速按钮,高电平变化快,低电平变化慢,还要配备清零按钮。次彩灯控制系统设定有四种花样变化,这四种花样可以循环变化显示。
根据上述的情况来分配任务,即clk表示时钟信号,selmode来控制复位清零信号,rst来表示分频,即控制快慢变化。将本次设计的主控电路分为两个模块,分别为时序控制电路模块和显示模块。时序控制电路是根据输入信号的设置得到相应的输出信号,并且将此信号作为显示电路的时钟信号;显示电路输入时钟信号的周期有规律的输出设定的四种彩灯变化花型。
三、单元模块设计 3.1 设计方框流程图 5 分频器模块状态变换产生电路显示电路
备注:其中分频器模块是实现变化节拍的电路,而状态变化产生电路同时有循环的功能以及花型变化的功能,显示电路只是现实8个LED灯的变化情况。
设计方框示意图:
备注:CLK_IN是分频器和状态机的时钟输入,CLK-OUT是端口输出电平,RST为端口输入电平,当RST输入为高电平有效时,CLK_OUT端口输出信号为清零,当RST输入为低电平时,CLK_IN通过分频后从CLK_OUT输出,分别可调节为0.5
6
秒和0.x秒的频率。即设计的彩灯控制器总有三个输入信号和八个输出信号,在仿真里采用芯片EP3C16Q240C8来实现,端口的定义为:
CLK :PIN_181; RST : PIN_183; SELMODE : PIN_185;
LED(0-7) :PIN_202,207,216,218 :PIN_220,222,224,230
3.2 模块设计
3.2.1时序控制模块:CLK为输入时钟信号,电路在时钟上升沿变化:selmode为复位清零信号,高电平有效,一旦有效时,电路无条件的回到初始状态;rst为频率的快慢选择信号,低电平节奏快,高电平节奏慢;clkout为输出时钟信号。
时序控制电路模块的程序为: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity shixukongzhi is --定义实体 port(
7
clk: in std_logic; --时钟信号 selmode: in std_logic; --复位信号 rst: in std_logic; --快慢控制信号 clkout: out std_logic --输出时钟信号 ); end shixukongzhi ;
architecture fengping of shixukongzhi is signal clk_tmp: std_logic;
signal counter: std_logic_vector(1 downto 0); --计数器 begin
process(clk,selmode,rst) begin
if selmode='1' then --清零 clk_tmp<='0'; counter<=\"00\"; elsif clk'event and clk='1' then
if rst='0' then --四分频,快节奏 if counter=\"01\" then counter<=\"00\"; clk_tmp<=not clk_tmp; else
counter<=counter+'1';
8
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; --输出分频后的信号 end fengping
时序控制模块的框架图:
3.2.2 显示模块电路程序:
9
library ieee;
use ieee.std_logic_1164.all; entity xianshi is port(
clk: in std_logic ; --输入时钟信号 selmode: in std_logic; --复位信号 led: out std_logic_vector(7 downto 0)); --8个彩灯输出
end xianshi;
architecture fengping of xs is
type states is --状态机可以实现的四种花型 (s0,s1,s2,s3); signal state: states; begin
process(clk,selmode) begin
if selmode='1' then state<=s0; led<=\"00000000\";
elsif clk'event and clk='1' then --状态机实现花型的转换 case state is when s0=>
10
state<=s1; when s1=> state<=s2; led<=\"01010101\"; when s2=> state<=s3; led<=\"10101010\"; when s3=> state<=s4;
led<=\"10001000\"; end case; end if; end process; end fengping;
3.2.3 顶出模块的设计程序 library ieee;
use ieee.std_logic_1164.all; entity dingchu is port (
clk: in std_logic;
11
selmode: in std_logic; rst:in std_logic;
led: out std_logic_vector(7 downto 0)); end dingchu;
architecture fengping of dingchu is
component shixukongzhi is --定义元件:时序控制电路 port(
clk: in std_logic; selmode: in std_logic; rst:in std_logic; clkout: out std_logic); end component shixukongzhi;
component xianshi is --定义元件:显示电路 port(
clk: in std_logic; selmode: in std_logic;
led: out std_logic_vector(7 downto 0)); end component xianshi; signal clk_tmp: std_logic; begin
u1:shixukongzhi port map(clk,selmode,rst,clk_tmp);
12
u2:xianshi port map(clk_tmp,selmode,led);
end fengping; 顶
出
模
块
框
架
图
:
四、彩灯控制器整体组装 4.1组装电路原理图:
备注:由于仿真软件Quartus II的库存元件的有限,上面的clrselmode,optrst,即原理图和仿真波形图可得。
13
4.2 仿真波形及结果 时序控制模块仿真波形:
从图中可以看出,当复位信号为高电平时,电路时钟输出清零,当快慢信号rst为低电平时,时序控制电路四分频起作用,当快慢信号rst为高电平时,时序控制电路八分频起作用,仿真结果符合电路要求。 显示模块仿真波形:
14
当复位信号有效时彩灯的输出为零,而,显示电路的四种花型在不同的状态间转换,并且是循环的显示。 彩灯控制仿真波形图为:
15
从图中可以看出rst为高电平的时候彩灯状态转换为慢,当rst为低电平的时候,彩灯的状态转换为快,当复位信号有效时,所有的输出全部清零。
五、实验总结
通过本次实验的学习和实践,我对DEA这门课程有了感性的认识,并且对仿真软件Quartus II 有了深刻的了解和学会运用软件建立工程仿真实验,对硬件描述语言VHDL有了较为基础的了解和认识,深刻体会到该语言方面的设计在生活中应用范围之广泛。
经过本次作业,我体会到设计对设计人员的基本要求:掌握最基本的知识并且学会灵活运用这些基本知识,大胆创新敢于实践,遵守相关的游戏规则,运用谨慎全面的逻辑思维思考问题、解决问题。具体而言,对VHDL语言的掌握程度更加的深刻,虽不能独立的设计复杂的产品,但对整个流程有了一定的了解,为以后的工作打下了基础,积累了经验。
本次课程不仅是对基础知识的提升,更是对思维方式的扩展有了相当的帮助,我相信知识是在不断的更新,但从本课程学到的思维方式却是对以后的发展大有裨益。
在此,感谢XXX老师的授课和指导。
2011年11月6日
16
因篇幅问题不能全部显示,请点此查看更多更全内容