您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > EDA课程设计篮球倒计时VHDL
-1-题目:篮球竞赛30s计时器设计一、设计目的随着电子技术的高速发展和计算机技术的普遍应用,电子设计也越来越普遍地应用于整个电子行业中。电子设计是人们进行电子产品设计、开发和制造过程中十分关键的一步,其核心就是电子电路的设计。电子设计自动化(EDA)是在电子产品向更复杂、更高级,向数字化、集成化、微型化和低耗能方向发展过程中逐渐产生并日趋完善的电子设计方法,在这种方法中,设计过程的大部分工作(特别是底层工作)均由计算机自动完成,是电子技术发展历程中产生的一种先进的设计方法,是当今电子设计的主流。在篮球比赛中,规定了球员的持球时间不能超过30秒,否则就犯规了。本课程设计的“篮球竞赛30秒计时器”,可用于篮球比赛中,用于对球员持球时间30秒限制。一旦球员的持球时间超过了30秒,它自动的报警从而判定此球员的犯规。本课程设计是篮球竞赛30秒计时器。此计时器功能齐全,显示30秒倒计时功能,系统设置外部操作开关可以直接清零、启动、暂停,同时应用了七段数码管来显示数值,可以方便地实现断点计时功能,当计时器递减到零时,还会发出光电报警信号。本设计完成的中途计时功能,实现了在许多的特定场合进行时间追踪的功能,在社会生活中也具有广泛的应用价值.二、设计要求用EDA技术设计一个30s计时器,具体技术要求如下:1、具有30s计时功能,并且能够实时显示计数结果。2、设有外部操作开关,控制计数器实现直接清零、启动以及暂停/连续工作等操作。3、计时器为30s递减计时,计时间隔为1s。4、计时器递减计时到零时,数码显示器不能灭灯,同时发出光电报警信号。三、总体设计原理与内容1、设计的总体原理本设计为30秒计数器,它主要由外部开关,控制电路,秒脉冲发生器,计数器,译码器和报警电路组成。各部分相互联系,共同协作,实现电路功能。各部分关系框图如图3-1所示:-2-图3-1总体框图2、设计内容本设计为30秒计数器,它主要分为三个部分:计数部分,显示部分和控制部分。其中计数器和控制电路是系统的主要部分。计数器完成30s计时功能,而控制电路具有直接控制计数器的启动计数、暂停/连续计数、译码显示电路的显示功能。为了满足系统的设计要求,在设计控制电路时,应正确处理各个信号之间的时序关系。在操作直接清零开关CLR时,要求计数器清零,数码显示器不灭灯。清零开关不工作时置数键才有效,置数键PLD为1时,同时计数器完成置数功能,译码显示电路显示“30”字样;当启动开关为高电平时,计数器开始计数;为了简单起见,我们将暂停与连续的控制与开始用一个键控制。当计数器减到0时,启动报警系统,报警指示灯亮进行报警。通过控制脉冲信号的传送来达到相应的目的。3、设计方案本设计主要能完成:显示30秒倒计时功能;系统设置外部操作开关,控制计时器的直接清零、启动和暂停/连续功能;在直接清零时,数码管显示器灭灯;计时器为30秒递减计时其计时间隔为1秒;计时器递减计时到零时,数码显示器不灭灯,同时发出光电报警信号等。经分析我们可以用两种方案进行实现:方案一:用VHDL编码进行实现。VHDL是一门硬件描述语言,可以实现各种组合电路及逻辑电路。使用VHDL编码实现,可读性强,易于理解,可以在软仿,硬仿时,依次进行查看其正确性,还能提高自己的编码水平,利于EDA课程的学习与应用。采用静态编码,先设计计数器进行计数,数值通过数码管显示电路进行显示。设置CLOCK为1HZ,数值变化周期为1秒。方案二:也是采用VHDL编码进行实现,但采用的是动态扫描法,设置一个片选信号,-3-分时复用扫描两个数码管。这时就要设置两个时钟,因为1HZ的时钟频率太小了,会使得看到的效果不连续,十位与个位产生分离,效果不好。可以另选一个频率1000HZ左右的时钟信号作为扫描时钟。这种设计节约了能量,延长了数码管的寿命,但引入了片选信号,又增加了一个时钟,所以较第一种方案复杂。方案三:用原理图输入法进行实现。用原理图书输入法也能实现,电路的仿真。但原理图输入法只适合中小型电路,而且需要良好的数字电路基础与电路功底。另外,原理图输入法,比较繁琐,不易于操作。综合比较,选择第一种方案。四、EDA设计及仿真1、30S倒计时器源程序1.计数模块计数模块,采用和三十秒减计数。计数间隔为1秒。其程序如下所示:------------------------------------------------------------------------------------------------------LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;-----------------------------------------------------------------------------------------------------ENTITYCNT30ISPORT(CLK,EN:INSTD_LOGIC;C0,C10:OUTSTD_LOGIC_VECTOR(5DOWNTO0);------C0,C10表示十位和个位ENDCNT30;------------------------------------------------------------------------------------------------------ARCHITECTUREbehavOFCNT30ISBEGINPROCESS(CLK,EN)VARIABLETMPA:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLETMPB:STD_LOGIC_VECTOR(3DOWNTO0);BEGIN-4-IFCLK'EVENTANDCLK='1'THEN-------------检测时钟上升沿TMPB:=0011;TMPA:=0000;IFEN='1'THEN-------检测是否允许计数(同步使能)IFTMPA=0000THENIFTMPB/=0000THENTMPA:=1001;TMPB:=TMPB-1;ENDPROCESS;C0=TMPA;C10=TMPB;ENDbehav;-----------------------------------------------------------------------------------------------------------------2、显示模块源程序显示部分采用七段数码管进行实现。LED数码管及引脚图资料:7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛。这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp;共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp,图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。我们采用共阴极接法,其图如下:图4-1共阴极数码管连接图输入相应的数值,对应驱动相关二极管点亮,显示相应的数值。显示部分功能表如表4-1所示:-5-表4-1功能表用数码管进行显示,需把各个数值译码后传输到数码管,分十位与个位分别进行显示,其程序如下:PRO2:PROCESS(DD)BEGINCASEDDIS-----------------------------------------DD表示十位WHEN0000=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;--显示9-6-WHENOTHERS=S1=0000000;ENDCASE;ENDPROCESS;PROCESS(SS)BEGINCASESSIS-------------------------------------------SS表示个位WHEN0000=S0=0111111;--显示0WHEN0001=S0=0000110;--显示1WHEN0010=S0=1011011;--显示2WHEN0011=S0=1001111;--显示3WHEN0100=S0=1100110;--显示4WHEN0101=S0=1101101;--显示5WHEN0110=S0=1111101;--显示6WHEN0111=S0=0000111;--显示7WHEN1000=S0=1111111;--显示8WHEN1001=S0=1101111;--显示9WHENOTHERS=S0=0000000;ENDCASE;ENDPROCESS;ENDA;2、总源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--------------------------------------------------------------------------------------------ENTITYCNT30ISPORT(CLK,CLR:INSTD_LOGIC;PLD,ENB:INSTD_LOGIC;-------PLD表示复位信号WARN:OUTSTD_LOGIC;-7-S1,S0:OUTSTD_LOGIC_VECTOR(6DOWNTO0));------------译码输出,S1为十位S0为个位ENDCNT30;--------------------------------------------------------------------------------------------ARCHITECTUREAOFCNT30ISSIGNALDD:STD_LOGIC_VECTOR(3DOWNTO0);--------------DD表示十位SIGNALSS:STD_LOGIC_VECTOR(3DOWNTO0);-------------SS表示个位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'THENIFPLD='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;-8-ENDPROCESS;-----------------------------------------PROT2显示部分PRO2:PROCESS(DD)BEGINCASEDDIS------
本文标题:EDA课程设计篮球倒计时VHDL
链接地址:https://www.777doc.com/doc-2030079 .html