- 10
- 0
- 约4.31千字
- 约 5页
- 2015-09-26 发布于重庆
- 举报
实验十四多路彩灯控制器
实验十四 多路彩灯控制器
一、实验任务及要求
设计一个十六路彩灯控制器,6种花型循环变化,有清零开关,并且可以选择快慢两种节拍。
二、CLK_IN,系统清零信号CLR,彩灯节奏快慢选择开关CHOSE_KEY;共有16个输出信号LED[15..0],分别用于控制十六路彩灯。
据此,我们可将整个彩灯控制器CDKZQ分为两大部分:时序控制电路SXKZ和显示控制电路XSKZ,整个系统的组成原理图如图2-4所示。
2、提示
(1) 在时序控制电路SXKZ的设计中,利用计数器计数达到分频值时,对计数器进行清零,同时将输出信号反向,这就非常简洁地实现了对输入基准时钟信号的分频,并且分频信号的占空比为0.5。
(2) 在显示控制电路XSKZ的设计中,利用状态机可以非常简洁地实现了六种花型的循环变化,同时利用六个十六位常数的设计,可非常方便地设置和修改六种花型。
(3) 对于顶层程序的设计,因本系统模块较少,既可使用文本的程序设计方式,也可使用原理图的设计方式。但对于模块较多的系统,最好使用文本的程序设计方式。
图2-4彩灯控制器组成原理图
三、实验报告要求
1.画出顶层原理图。
2.系统通过仿真后,根据EDA实验开发系统进行编程下载和硬件验证。
3.写出各功能模块的VHDL语言源文件。
4.书写实验报告时应结构合理,层次分明,注意语言的流畅。
四、主要VHDL源程序
1、时序控制电路的VHDL源程序
--SXKZ.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SXKZ IS
PORT(CHOSE_KEY:IN STD_LOGIC;
CLK_IN:IN STD_LOGIC;
CLR:IN STD_LOGIC;
CLK:OUT STD_LOGIC);
END ENTITY SXKZ;
ARCHITECTURE ART OF SXKZ IS
SIGNAL CLLK:STD_LOGIC;
BEGIN
PROCESS(CLK_IN,CLR,CHOSE_KEY) IS
VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
IF CLR=1 THEN --当CLR=1时清零,否则正常工作
CLLK=0;TEMP:=000;
ELSIF RISING_EDGE(CLK_IN) THEN
IF CHOSE_KEY=1 THEN
IF TEMP=011 THEN
TEMP:=000;
CLLK=NOT CLLK ;
ELSE
TEMP:=TEMP+1;
END IF;
-- 当CHOSE_KEY=1时产生基准时钟频率的1/4的时钟信号,否则产生基准时钟
--频率的1/8的时钟信号
ELSE
IF TEMP=111 THEN
TEMP:=000;
CLLK=NOT CLLK ;
ELSE
TEMP:=TEMP+’1;
END IF;
END IF;
END IF;
END PROCESS;
CLK=CLLK;
END ARCHITECTURE ART;
2、显示控制电路的VHDL源程序
--XSKZ.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY XSKZ IS
PORT(CLK:IN STD_LOGIC;
CLR:IN STD_LOGIC;
LED:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
END ENTITY XSKZ;
ARCHITECTURE ART OF XSKZ IS
TYPE STATE IS(S0,S1,S2,S3,S4,S5,S6);
SIGNAL CURRENT_STATE:STATE;
SIGNAL FLOWER:STD_LOGIC_VECTOR(15 DOWNTO 0);
BEGIN
PROCESS(CLR,CLK) IS
CONSTANT F1:STD_LOGIC_VECTOR(15 DOWNTO 0):=0001000100010001;
CONSTANT F2:STD_LOGIC_VECTOR(15 DOWNTO 0):=10101
原创力文档

文档评论(0)