EDA彩灯控制器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子设计自动化
大作业
题目彩灯控制器
学院控制科学与工程学院
班级
姓名
学号
二0一一年十一月六日
目录
一、摘要 (3)
1.1 引言 (3)
二、总体设计 (4)
2.1 设计背景 (4)
2.2 设计要求 (4)
2.3 设计思路 (5)
三、单元模块设计 (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)
一、摘要
本课题主要是基于可编程逻辑器件,使用硬件描述语言VHDL,采用“自顶而下”的设计方法,完成一个彩灯控制器的设计,并且使用Quartus II仿真软件来仿真结果。本文先对彩灯控制器的整体框图和原理做简单的说明,对彩灯控制器分模块说明和分析,而后将各个模块组装实现彩灯的花型控制,最后探讨VHDL语言的描述和仿真结果。
1.1 引言
当今社会是数字化的社会,也是数字集成电路广泛应用的社会,数字本身在不断的进行更新换代。它由早起的电子管、晶体管、小中规模集成电路发展到超大规模集成电路以及许多具有特定功能的专用集成电路。而EDA技术就是以微电子技术为物理层面,现代电子设计为灵魂,计算机软件技术为手段,最终形成集成电子系统或专用集成电路ASIC为目的的一门新兴技术。
VHDL是一种应用较为广泛的HDL语言,能对范围广泛的各种复杂的网络在不同的抽象级加以描述,而且在整个设计过程中可使用同一种语言。采用VHDL作为HDL综合设计的
优点有:标准语言,即设计者可在不同环境下进行设计;仿真和综合均可采用同一种语言进行;VHDL中提供的大量的资源模块,简化了设计者的开发工作;由VHDL描述的源文件既是程序文件又可作为设计的文档。
二、总体设计
2.1设计背景
在经济和商业高度发达的今天,彩灯已经成为人民日常生活不可或缺的一部分,已经逐渐为越来越多的人们所关注,在家庭中的普及率不断提高,大大的丰富和点缀了人民的生活。彩灯由不同的颜色的LED灯组成,通过控制不同颜色的灯的亮与灭,呈现给人们不同的花塑和图案,极大的点缀了单调的都市夜景,让城市成为了多姿多彩的不夜城。
2.2 设计要求
设计能让一排彩灯(8只)自动改变显示花样的控制系统,发光二极管可作为彩灯用。控制器应该有两种控制方式:(1)、彩灯的循环变化有快慢两种节奏,彩灯能够循环变化,而且有清零的功能。
(2)、设计彩灯的花型显示为四种。
2.3 设计思路
设计一个彩灯控制器,可以实现四种花型循环的变化,即应该有复位开关,用状态机来控制实现。用分频器来控制实现调速按钮,高电平变化快,低电平变化慢,还要配备清零按钮。次彩灯控制系统设定有四种花样变化,这四种花样可以循环变化显示。
根据上述的情况来分配任务,即clk表示时钟信号,selmode来控制复位清零信号,rst来表示分频,即控制快慢变化。将本次设计的主控电路分为两个模块,分别为时序控制电路模块和显示模块。时序控制电路是根据输入信号的设置得到相应的输出信号,并且将此信号作为显示电路的时钟信号;显示电路输入时钟信号的周期有规律的输出设定的四种彩灯变化花型。
三、单元模块设计
3.1 设计方框流程图
备注:其中分频器模块是实现变化节拍的电路,而状态变化产生电路同时有循环的功能以及花型变化的功能,显示电路只是现实8个LED灯的变化情况。
设计方框示意图:
备注:CLK_IN是分频器和状态机的时钟输入,CLK-OUT是端口输出电平,RST为端口输入电平,当RST输入为高电平有效时,CLK_OUT端口输出信号为清零,当RST输入为低电平时,CLK_IN通过分频后从CLK_OUT输出,分别可调节为0.5
秒和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(
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';