发布网友 发布时间:2022-05-02 03:13
共1个回答
热心网友 时间:2022-06-27 12:20
《数字逻辑与数字系统》 课程设计 设计题目:篮球比赛计时器 一、设计任务和基本要求:1.篮球比赛上下半场各20分钟,要求能随时暂停,启动后继续计时,一场比赛结束后应可清零重新开始比赛。2.计时器由分、秒计数器完成,秒计数器为模60,分计数器应能计至40分钟。3. “分”、“秒”显示用LED数码管。4.人工拨动开关来控制计时器的启动/暂停。5.半场、全场到自动会有相应的提示。 二、实验所需要硬件与软件:�0�1 数字电路实验系统�0�1 可编程器件(PLD)及连接导线�0�1 PC计算机�0�1 ispLEVER编程软件 三、题目分析:本题比较简单,要求中的篮球比赛上下半场各20分钟,可以参考数字时钟,篮球比赛计时器相当于一个可以暂停的,能整点报时的时钟设计。 四、设计思想及说明:采用加法器与计数器的思想,分别设计一个M60(秒)和一个M20(分)计数器,由分频产生1HZ的脉冲信号,上下两场可以是两个完全一样的20分钟的计时器,中场及终场是喇叭发声提醒,并在计数器中加入暂停和复位设置,控制脉冲的输入,随时暂停与复位。 五、设计步骤:此题设计主要是ISP编程设计,我们主要用了分频(产生1hz信号)、暂停(pause)、复位(clear)以及加法器这几个模块的程序组成了整个篮球比赛计时器的设计。 六、使用说明:跟据程序连接好实验电路后,输入10KHZ的信号分频得到1HZ的脉冲,计时器开始运作后,我们用pause和clear控制暂停和复位。当pause为高电平,clear为高电平时,计数器工作。我们把pause改为低电平,则计数暂停,再把pause改为高电平,计数继续。若clear改为低电平,计数清零。当计时器到达20分时,结束半场或整场结束,喇叭鸣叫报警。 七、源程序代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity basketball isPORT(pause:IN std_logic;clear:IN std_logic;clk:IN std_logic;sound:OUT std_logic;s2:OUT std_logic_vector(3 downto 0);s1:OUT std_logic_vector(3 downto 0);m2:OUT std_logic_vector(3 downto 0);m1:OUT std_logic_vector(3 downto 0));END basketball; architecture behave of basketball isSIGNAL clk1:std_logic;beginPROCESS(clk)VARIABLE cnt:integer range 0 to 49999;begin IF(clk'EVENT AND clk = '1') THEN if(cnt=49999) THEN cnt:=0; clk1<=not clk1; else cnt:=cnt+1; end if; end IF;END PROCESS; PROCESS(clk1)VARIABLE tms2,tms1,tmm2,tmm1:std_logic_vector(3 downto 0);VARIABLE ebit,tmsound:std_logic;begin if(tmm1="0010"and tmm2="0000"and tms1="0000" and tms2="0000") THEN tmsound:='1'; elsif(tmm1="0100"and tmm2="0000"and tms1="0000"and tms2="0000") THEN tmsound:='1'; elsif(tmm1="0001"or tmm1="0000")THEN tmsound:='0'; elsif(tmm1="0010"or tmm1="0011")THEN tmsound:='0'; end if;IF(clear='0') THENtms2:="0000";tms1:="0000";tmm2:="0000";tmm1:="0000";ELSIF(clk1='1'AND clk1'EVENT AND tmm1/="0100"AND tmsound='0') THENif(pause='1')THENebit:=tms1(2) and tms1(0) and tms2(3)and tms2(0) and pause;if(ebit='1') then if(tmm2="1001") then tmm2:="0000"; tmm1:=tmm1+1; else tmm2:=tmm2+1; end if;end if; if(tms2="1001") then tms2:="0000"; if(tms1="0101") then tms1:="0000"; else tms1:=tms1+1; end if; else tms2:=tms2+1; end if;end if;end IF; s2<=tms2; s1<=tms1; m2<=tmm2; m1<=tmm1; sound<=tmsound;end PROCESS;end behave;