VHDL彩灯控制器设计.docx
- 文档编号:9737569
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:16
- 大小:165.80KB
VHDL彩灯控制器设计.docx
《VHDL彩灯控制器设计.docx》由会员分享,可在线阅读,更多相关《VHDL彩灯控制器设计.docx(16页珍藏版)》请在冰豆网上搜索。
VHDL彩灯控制器设计
北京理工大学珠海学院
课程设计
题目:
彩灯控制器的设计
姓名:
陈济文
学院:
信息科学技术学院
专业:
信息工程
班级:
信工
(1)班
学号:
0501311025
指导教师:
张伯颐
完成日期2008年1月
课程设计任务书
题目
彩灯控制器EDA设计
课程设计内容简介:
(任务概述,技术参数)
本统系由一个时序控制模块SX和一个显示控制模块XS组成;
基本功能:
(1)通过CLK键,输入时钟脉冲,用9盏灯实现四种花型的循环交替变化,有四方形,十字形,z形和U字形;
(2)每两种花形变化的间隔为2秒;
(3)有复位的功能,通过CLR键来控制复位;
(4)有暂停功能,通过K1键来控制暂停和继续;
扩展功能:
(1)可调节花形循环的速度,SPEED键为控制速度键;
(2)用户可以选择对应的彩灯形状,当K1为暂停状态时,用K2和K3键的四个组合来控制所要显示的花形;
(3)彩灯可以按指定的图形去闪烁发亮。
设计者姓名
指导教师意见:
指导教师签名:
目录
一、概述…………………………………………………………………3
二、设计流程……………………………………………………………4
三、ASM图及框架…………………………………………….….…….5
四、编译的调试,处理和仿真…………………………………………7
五、下载验证……………………………………………………………9
六、调试分析和结果……………………………………………………10
七、附录I彩灯控制器的源程序………………………………………11
八、实验总结…………………………………………………………
九、参考文献………………………………………………………..17
一、概述
随着电子技术的发展,当前数字系统的设计正朝着速度快,容量大,体积小,重量轻的方向发展。
推动该潮流迅猛发展的引擎就是日趋进步和完善的ASIC设计技术。
目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上至下地逐层完成相应的描述,综合,优化,仿真与验证,直到生成器件。
上述设计过程除了系统行为和功能描述以外,其余所有的设计过程几乎都可以用计算机来自动完成,也就是说做到了电子设计自动化(EDA)。
这样做可以大大地缩短系统的设计周期,以适应当今品种多,批量小的电子市场的需求,提高产品的竞争能力。
1.1程序设计目的
本程序以计算机为工作平台,综合运用EDA软件工具开发环境、用硬件描述语言VHDL为设计语言,以ASIC来实现载体的设计。
通过在EDA中的编译和处理、仿真下载、调试分析,接受一次电子设计蓝领初步的设计训练,并使所学的知识和技能得到进一步巩固、深化和扩展,以达到可以运用EDA工具设计一些简单的电子产品,掌握使用EDA工具设计数字系统的设计思想和设计方法,为继续学习和认识电子设计知识打下良好的基础。
1.2程序设计内容
课程设计的时间为两周时间,内容包括:
(1)、课题选择——彩灯控制器设计;
(2)、设计流程及ASM图,用VHDL硬件语言描述;
(3)、利用EDA开发软件上机模拟仿真;
(4)下载硬件严整和调试分析。
1.3程序设计任务
设计课题:
彩灯控制器的设计
二:
设计流程
彩灯控制器由一个时序控制模块SX和一个显示控制模块XS组成;
时序控制模块上:
输入有端口SPEED,CLK,CLR,K1,K2,K3。
SPEED控制彩灯循环速度;CLK为输入时钟脉冲信号端口;CLR为清零复位键;K1为暂停键;当K1为暂停状态时,通过控制K2和K3的四个给合来实现某种花形的显示;
输出端口有CLK1和STATE;
通过CLK1端口对显示模块输入时钟脉冲,达到循环亮灯的效果;
STATE键就是输入端K1和K2的组合,通过该键对显示模块的单独亮花形的控制;
显示控制模块:
输入端口CLK1,CLR,STATE;
CLK1为上一时序控制模块的输出端,通过该端口对彩灯的循环显示提供脉冲信号;CLR键为清零复位键;
STATE键为控制单个花形的显示;
输出端口LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7,LED8;
LED0至LED8为灯的显示情况。
花形为:
四方形:
OOO十字形:
XOXZ形:
OOO工字形:
OXO
OXOOOOXOXOXO
OOOXOXOOOOOO
系统开始运行时,把CLR打到高电平,系统清零,全部灯不亮。
把SPEED键打到高电平,把CLR打到低电平,把K1打到低电平,再把CLK键打到高
电平时,彩灯以2秒的速度循环显示,把SPEED键打到低电平时,彩灯以1秒的速度
循环显示。
把K1打到高电平,彩灯没有显示
(1)把K2打到低电平,K3打到低电平,彩色显示四方形;
(2)把K2打到低电平,K3打到高电平,彩色显示十字形;
(3)把K2打到高电平,K3打到低电平,彩色显示Z形;
(4)把K2打到高电平,K3打到高电平,彩色显示U字形;
三:
ASM图及框架
Process(CLK,CLR,K1,K2,K3,K4)
speed=’1’?
K2=’1’?
CK<=’0’
K3=’1’?
TEMP=’111’?
?
State=’11’
K3=’1’?
State=’10’
TEMP:
=TEMP+’1’
State=’00’
TEMP=TEMP+’1’
TEMP=’000’
CK<=NOTCK
TEMP=’000’
CK<=NOTCK
State=’01’
TEMP=’011’?
系统的结构图如下:
四:
编译的调试,处理和仿真
经过调试,处理和仿真,本系统成功运行,具体的图如下:
时序模块的仿真图:
显示仿真模块仿真图:
总芯片仿真图如下:
五:
下载验证
经下载验证,本系统成功运行:
引脚图如下:
芯片下载图如下:
六:
调试分析和结果
系统开始运行时,把CLR打到高电平,系统清零,全部灯不亮。
把SPEED键打到高电平,把CLR打到低电平,把K1打到低电平,再把CLK键打到高
电平时,彩灯以2秒的速度循环显示,把SPEED键打到低电平时,彩灯以1秒的速度
循环显示。
把K1打到高电平,彩灯没有显示
(1)把K2打到低电平,K3打到低电平,彩色显示四方形
OOO
OXO
OOO
(2)把K2打到低电平,K3打到高电平,彩色显示十字形;
XOX
OOO
XOX
(3)把K2打到高电平,K3打到低电平,彩色显示Z形;
OOO
XOX
OOO
(4)把K2打到高电平,K3打到高电平,彩色显示U字形;
OXO
OXO
OOO
七:
附录I
彩灯控制器的源程序
时序控制模块SX的源程序如下:
----------------------------------------------------------------------------------
--Company:
--Engineer:
--
--CreateDate:
15:
09:
0401/09/2008
--DesignName:
--ModuleName:
sx
--ProjectName:
--TargetDevices:
--Toolversions:
--Description:
--
--Dependencies:
--
--Revision:
--Revision0.01-FileCreated
--AdditionalComments:
--
----------------------------------------------------------------------------------
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
----Uncommentthefollowinglibrarydeclarationifinstantiating
----anyXilinxprimitivesinthiscode.
--libraryUNISIM;
--useUNISIM.VComponents.all;
entitysxis----实体说明,SX为实体名
Port----端口说明
(speed:
inSTD_LOGIC;----speed为端口名,IN表示方向为输入,STD_LOGIC表示数据类型为位
clk:
inSTD_LOGIC;----clk为端口名,IN表示方向为输入,STD_LOGIC表示数据类型为位
clr:
inSTD_LOGIC;----clr为端口名,IN表示方向为输入,STD_LOGIC表示数据类型为位
k1:
inSTD_LOGIC;----k1为端口名,IN表示方向为输入,STD_LOGIC表示数据类型为位
k2:
inSTD_LOGIC;----k2为端口名,IN表示方向为输入,STD_LOGIC表示数据类型为位
k3:
inSTD_LOGIC;----k3为端口名,IN表示方向为输入,STD_LOGIC表示数据类型为位
clk1:
outSTD_LOGIC;----clk1为端口名,out表示方向为输出,STD_LOGIC表示数据类型为位
state:
outSTD_LOGIC_VECTOR(1downto0));----state1为端口名,out表示方向为输出,STD_LOGIC_vector表示数据类型为字
endsx;
architectureartofsxis----构造体,构造体名为art,实体名为sx
signalck:
std_logic;----信号,信号名为ck,数据类型为位
signalstate1:
std_logic_vector(1downto0);----信号,信号名为state,数据类型为字
begin----程序开始执行
process(clk,clr,speed,k1,k2,k3)is----进程语句
variabletemp:
std_logic_vector(2downto0);----变量定义,temp为变量名,数据类型为字
begin
if(clr='1')then----如果clr=1,执行下一步
ck<='0';----ck=’0’
temp:
="000";---temp:
=”000”
elsif(clk'eventandclk='1')then----如果clr不等于0,clk有上升源,执行下一步
if(k1='1')then----当K1=‘1’时,执行下一步
if(k2='0'andk3='0')then----当k2=’0’和k3=’0’时,执行下一步
state1<="00";----将‘00’赋给state1
elsif(k2='0'andk3='1')then----当k2=’0’和k3=’1’时,执行下一步
state1<="01";----将‘01’赋给state1
elsif(k2='1'andk3='0')then----当k2=’1’和k3=’0’时,执行下一步
state1<="10";----将‘10’赋给state1
else----当k2=’1’和k3=’1’时,执行下一步
state1<="11";----将‘11’赋给state1
endif;----结束子条件语句
else----如果K1不等于‘1’时,执行下一步
if(speed='1')then----当speed=’1’时,执行下一步
iftemp="011"then----当temp=”011”时,执行下一步
temp:
="000";----将值“000”赋给temp
ck<=notck;----ck取反
else----temp不等于”011”时,执行下一步
temp:
=temp+'1';----将值(temp+’1’)赋给temp
endif;----结束子条件语句
else----当speed不为0时,执行下一步
iftemp="111"then----当temp=”111”时,执行下一步
temp:
="000";----将值“000”赋给temp
ck<=notck;----ck取反
else
temp:
=temp+'1';----将值(temp+’1’)赋给temp
endif;
endif;
endif;
endif;
endprocess;
clk1<=ck;----将ck的值赋给clk1
state<=state1;----将state1的值赋给state
endart;
显示控制模块XS的源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYxsIS
PORT(clk1:
INSTD_LOGIC;
clr:
INSTD_LOGIC;
k1:
INSTD_LOGIC;
state:
INSTD_LOGIC_VECTOR(1DOWNTO0);
led:
OUTSTD_LOGIC_VECTOR(8DOWNTO0));
ENDENTITYxs;
ARCHITECTUREARTOFxsIS
TYPESTATE2IS(S0,S1,S2,S3);
SIGNALCURRENT_STATE2:
STATE2;
SIGNALLIGHT:
STD_LOGIC_VECTOR(8DOWNTO0);
BEGIN
PROCESS(clr,clk1,k1,state)IS
CONSTANTL1:
STD_LOGIC_VECTOR(8DOWNTO0):
="111010111";
CONSTANTL2:
STD_LOGIC_VECTOR(8DOWNTO0):
="111101111";
CONSTANTL3:
STD_LOGIC_VECTOR(8DOWNTO0):
="101010010";
BEGIN
IFclr='1'then
current_state2<=S0;
ELSE
IF(k1='1')THEN
CASESTATEIS
WHEN"01"=>LIGHT<=L1;
WHEN"10"=>LIGHT<=L2;
WHEN"11"=>LIGHT<=L3;
WHENOTHERS=>LIGHT<="000000000";
ENDCASE;
ELSIF(clk1'EVENTANDclk1='1')THEN
CASECURRENT_STATE2IS
WHENS0=>LIGHT<="000000000";
CURRENT_STATE2<=S1;
WHENS1=>LIGHT<=L1;
CURRENT_STATE2<=S2;
WHENS2=>LIGHT<=L2;
CURRENT_STATE2<=S3;
WHENS3=>LIGHT<=L3;
CURRENT_STATE2<=S1;
ENDCASE;
ENDIF;
ENDIF;
ENDPROCESS;
led<=LIGHT;
ENDARCHITECTUREART;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 彩灯 控制器 设计