电子设计自动化
大作业
题 目
彩灯控制器
学 院
控制科学与工程学院
班 级
姓 名
学 号
二 0 一一年十一月六日
1
目录
一、摘要……………………………… 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
2
一、摘 要
本课题主要是基于可编程逻辑器件,使用硬件描述语言
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
RST
:PIN_181;
: 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
--时钟信号
--复位信号
--快慢控制信号
--输出时钟信号
);
is
end shixukongzhi ;
architecture fengping of shixukongzhi
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
--四分频,快节奏