您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于VHDL篮球计时器课程设计
-1-EDA技术课程设计课题:篮球竞赛30秒计时器设计系别:电气与电子工程系专业:电子信息工程姓名:朱亚辉学号:123408155指导教师:梁成武河南城建学院2011年6月24日-2-成绩评定·一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。二、评分(按下表要求评定)评分项目设计报告评分答辩评分平时表现评分合计(100分)任务完成情况(20分)课程设计报告质量(40分)表达情况(10分)回答问题情况(10分)工作态度与纪律(10分)独立工作能力(10分)得分课程设计成绩评定班级姓名学号成绩:分(折合等级)指导教师签字年月日-3-一、设计目的随着生活水平的提高,人们对于生活品质的高要求。对于时间的准确越来越发期盼。比如在田径,足球等体育运动中时间的分秒必争显的更加的不可或缺。在这样的大背景下,计时器也应运而生。特别在于篮球比赛中通常是零点几秒可以决定各方的悲喜。人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。在篮球比赛中,规定了球员的持球时间不能超过30秒,否则就犯规了。本课程设计的“篮球竞赛30秒计时器”,可用于篮球比赛中,用于对球员持球时间30秒限制。二、设计要求1、具有30s计时功能,并且能够实时显示计数结果。2、设有外部操作开关,控制计数器实现直接清零、启动以及暂停/连续工作等操作。3、计时器为30s递减计时,计时间隔为1s。4、计时器递减计时到零时,数码显示器不能灭灯,同时发出光电报警信号。三、总体设计原理与内容1、设计的总体原理30秒计时器的总体参考方案框图如图3—1所示。它包括秒脉冲发生器、计数器、译码显示电路、报警电路和辅助时序控制电路(简称控制电路)等五个模块组成。其中计数器和控制电路是系统的主要模块。计数器完成30秒计时功能,而控制电路完成计数器的直接清零、启动计数、暂停/连续计数、译码显示电路的显示与灭灯、计时时间到进行报警。图3—1总设计框图2、设计内容-4-分析设计任务,计数器和控制电路是系统的主要部分。计数器完成30s计时功能,而控制电路具有直接控制计数器的启动计数、暂停/连续计数、译码显示电路的显示和灭灯功能。为了满足系统的设计要求,在设计控制部分时,应正确处理各个信号之间的时序关系。在操作直接清零开关时,要求计数器清零,数码显示器灭灯。当启动开关闭合时,计数器完成置数,译码显示电路显示“30”字样;当启动开关断开时,计数器开始计数;当暂停/连续开关拨在暂停位置上时,计数器停止计数,处于保持状态;当暂停/连续开关拨在连续时,计数器继续递减计数。3、设计方案方案一:通过对要求的分析,在译码显示时若采用静态显示时,需要对两个七段数码管的引脚进行设置,而不需要动态扫描。此时再进行倒计时时,显示部分的两个数码管同时点亮。注意此种方案所用的时钟信号为1HZ,若大于或小于1HZ,则会使时间间隔大于或小于1秒。方案二:本方案采用动态扫描来进行译码显示,这种方法可以只对一个数码管的引脚进行设置,这样可以节省能源。此种方案需要用两个时钟信号,第一个时钟信号要为1HZ,和方案一相同。但第二个时钟要远远大于时钟一,因为动态扫描利用了人的视觉停留原理,从而造成两个一起亮的假象。通过方案的对比,我选择了方案一进行设计,但方案二在本报告的后面也给出了设计的源代码,这里着重进行方案一的设计实现。四、EDA设计及仿真1、倒计时源程序通过设计,以下给出方案一及方案二的源程序。方案一:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--------------------------------------------------------------------------------------------ENTITYCNT30IS---令设计的实体名为CNT30PORT(CLK,CLR:INSTD_LOGIC;----输入时钟信号、清零信号-5-RST,ENB:INSTD_LOGIC;----复位、开始/暂停输入端WARN:OUTSTD_LOGIC;---报警信号输出端S1,S0:OUTSTD_LOGIC_VECTOR(6DOWNTO0));--译码输出ENDCNT30;--------------------------------------------------------------------------------------------ARCHITECTUREAOFCNT30ISSIGNALDD:STD_LOGIC_VECTOR(3DOWNTO0);---定义两个中间信号SIGNALSS:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPRO1:PROCESS(CLK,CLR,ENB)VARIABLETMPA:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLETMPB:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLETMPWARN:STD_LOGIC;BEGINIFCLR='1'THENTMPA:=0000;TMPB:=0000;TMPWARN:='0';----清零ELSIFCLK'EVENTANDCLK='1'THENIFRST='1'THENTMPB:=0011;TMPA:=0000;TMPWARN:='0';---上升沿且复位键为1时,对变量赋初始值30ELSIFENB='1'THENIFTMPA=0000THENIFTMPB/=0000THENTMPA:=1001;TMPB:=TMPB-1;--开始键按下后,当个位为零且十位不为零时,十位数字减一,个位数字变为九ELSETMPWARN:='1';--若十位、个位都为0时,报警信号为1ENDIF;ELSETMPA:=TMPA-1;--若刚开始个位不为0,则个位数减一ENDIF;-6-ENDIF;ENDIF;SS=TMPA;DD=TMPB;WARN=TMPWARN;---将内部输出传回到外部ENDPROCESS;PRO2:PROCESS(DD)BEGINCASEDDISWHEN0000=S1=0111111;--显示0WHEN0001=S1=0000110;--显示1WHEN0010=S1=1011011;--显示2WHEN0011=S1=1001111;--显示3WHEN0100=S1=1100110;--显示4WHEN0101=S1=1101101;--显示5WHEN0110=S1=1111101;--显示6WHEN0111=S1=0000111;--显示7WHEN1000=S1=1111111;--显示8WHEN1001=S1=1101111;--显示9WHENOTHERS=S1=0000000;--其它不显示ENDCASE;ENDPROCESS;PROCESS(SS)BEGINCASESSISWHEN0000=S0=0111111;--显示0WHEN0001=S0=0000110;--显示1WHEN0010=S0=1011011;--显示2WHEN0011=S0=1001111;--显示3WHEN0100=S0=1100110;--显示4WHEN0101=S0=1101101;--显示5-7-WHEN0110=S0=1111101;--显示6WHEN0111=S0=0000111;--显示7WHEN1000=S0=1111111;--显示8WHEN1001=S0=1101111;--显示9WHENOTHERS=S0=0000000;--其它不显示ENDCASE;ENDPROCESS;ENDA;方案二:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--------------------------------------------------------------------------------------------ENTITYCNT30ISPORT(CLK,CLK1,CLR:INSTD_LOGIC;RST,ENB:INSTD_LOGIC;SEL:OUTSTD_LOGIC_VECTOR(1DOWNTO0);--片选信号WARN:OUTSTD_LOGIC;S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));--译码输出ENDCNT30;--------------------------------------------------------------------------------------------ARCHITECTUREAOFCNT30ISSIGNALDD:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALSS:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPRO1:PROCESS(CLK,CLR,ENB)VARIABLETMPA:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLETMPB:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLETMPWARN:STD_LOGIC;-8-BEGINIFCLR='1'THENTMPA:=0000;TMPB:=0000;TMPWARN:='0';ELSIFCLK'EVENTANDCLK='1'THENIFRST='1'THENTMPB:=0011;TMPA:=0000;TMPWARN:='0';ELSIFENB='1'THENIFTMPA=0000THENIFTMPB/=0000THENTMPA:=1001;TMPB:=TMPB-1;ELSETMPWARN:='1';ENDIF;ELSETMPA:=TMPA-1;ENDIF;ENDIF;ENDIF;SS=TMPA;DD=TMPB;WARN=TMPWARN;ENDPROCESS;POR2:PROCESS(CLK1,SS,DD)VARIABLESG:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLEQ:STD_LOGIC_VECTOR(1DOWNTO0);BEGINIFCLK1='1'THENQ:=01;SG:=SS;--高电平选择第一个数码管显示,否则选择第二个;ELSEQ:=10;SG:=DD;ENDIF;SEL=Q;CASESGIS-9-WHEN0000=S=0111111;--显示0WHEN0001=S=0000110;--显示1WHEN0010=S=1011011;--显示2WHEN0011=S=1001111;--显示3WHEN0100=S=1100110;--显示4WHEN0101=S=1101101;--显示5WHEN0110=S=1111101;--显示6WHEN0111=S=0000111;--显示7WHEN1000=S=1111111;--显示8WHEN1001=S=1101111;--显示9WHENOTHERS=S=0000000;ENDCASE;ENDPROCESS;ENDa;2、时序仿真结果及数据分析打开QuartusII新建立一个文件项目,将程序拷入并仿真,对于波形仿真图形如图4—1所示图4—1波形仿真图有波形仿真图形可知道,当CLR为低电平,ENB为高电平且有RST进行了触发后,显示器由30逐渐减到00并输出WARN为高电平。可知仿真结果与设计要求刚好相吻合,设计成功。五、硬件实现1、硬件实现在波形仿真之后对各个引脚进行如图5—1的配置.根据我们所学习的EDA课程实验-10-与实验室现有的实验条件,本设计选择方式6进行引脚锁定。输出S1锁定为数码管6,S0锁定为数码管5,CLR,ENB,RS
本文标题:基于VHDL篮球计时器课程设计
链接地址:https://www.777doc.com/doc-7270844 .html