VHDL彩灯控制器设计.docx

上传人:b****7 文档编号:9737569 上传时间:2023-02-06 格式:DOCX 页数:16 大小:165.80KB
下载 相关 举报
VHDL彩灯控制器设计.docx_第1页
第1页 / 共16页
VHDL彩灯控制器设计.docx_第2页
第2页 / 共16页
VHDL彩灯控制器设计.docx_第3页
第3页 / 共16页
VHDL彩灯控制器设计.docx_第4页
第4页 / 共16页
VHDL彩灯控制器设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

VHDL彩灯控制器设计.docx

《VHDL彩灯控制器设计.docx》由会员分享,可在线阅读,更多相关《VHDL彩灯控制器设计.docx(16页珍藏版)》请在冰豆网上搜索。

VHDL彩灯控制器设计.docx

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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1