广西科技大学(筹)课程设计说明书课题名称篮球比赛数字记分牌系别职业技术教育学院专业电子信息工程班级电子Z102班学号孙思(201002203092)池亮(201002203090)李友军(201002203079)学生姓名孙思池亮李友军指导教师廖贵成摘要:随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的电子产品开始进入人们的生活。
数字记分牌就是这样的一款电子产品,它的出现代替了记分员手动翻动记分牌积分的繁琐劳动,使各种比赛进入了智能、高效、精准的人机互动时代,在体育比赛中具有重要意义。
我们本次设计的项目是篮球比赛数字记分牌,用于对篮球比赛的比赛双方实时积分。
基于篮球比赛的特点,我们选取了专门的设计方案,用vhdl设计数字电路,用三个LED数码管显示比赛一方的得分,记分员可根据现场比赛得分情况实时记录各队的得分,并及时反馈到LED数码管上。
关键词:篮球比赛数字记分牌vhdl LED数码管目录一、前言 (4)二、设计要求 (4)三、设计内容 (4)1、基本原理 (4)2、功能描述 (5)3.程序设计 (5)3.1 vhdl源代码...................................................................................................... 5-8 3.2 vhdl源代码分析 .......................................................................................................... 8-94、仿真结果 ................................................................................................................................. 9-10四、总结............................................................................................................................. 11-12五、参考文献 (12)一、前言数字记分牌在许多领域中得到普遍应用,在体育比赛、各种现场抢答比赛、各种互动游戏中均能见其身影。
在篮球比赛中,若采用人工计分的方法势必非常繁琐且错误率高,而采用数字记分牌就能高效的解决这一问题,由此可见计分牌在现代社会的各个领域的重要作用。
这次设计是一个难得的机会,也将成们为大学四年中十分宝贵的经历,它既是对我们所学理论知识的一次有效检验,也是对我们的实践认识和能力的一次提高,通过这次数字逻辑实训设计,我们相信对本专业的兴趣会更加浓厚,对本专业知识有更深的了解。
二、设计要求(1)分别记录两队得分情况;(2)进球得分加2分,罚球进球得分加1分;(3)纠正错判得分减2分或1分;(4)分别用三个数码管显示器记录两队的得分情况。
三、设计内容1、基本原理题目中要分别用三个数码管来记录两队的得分情况,需要用到的模块有:可逆加法器、译码器、数码管。
现用vhdl编写可逆加法器和译码器的源代码,将其整合为一个模块,其符号图见下图:图1-12、功能描述输入端:clk:控制时钟clr:实现数码管异步清零,clr为高电平时,三个数码管数据自动归零,clr 为低电平是,三个数码管进行正常的加减计数;a2:实现进球加2分功能;a1:实现罚球进球加1分功能;d2:实现纠正错判减2分功能;d1:实现纠正错判减1分功能;输出端:ym4_1:作为个位数数码管译码输入信号;ym4_2:作为十位数数码管译码输入信号;ym4_3:作为百位数数码管译码输入信号;3、程序设计3.1 vhdl源代码LIBRARY ieee;use ieee.std_logic_1164.all; (1)use ieee.std_logic_arith.all; (2)use ieee.std_logic_unsigned.all; (3)ENTITY s IS (4)PORT(clk : in std_logic; (5)clr : in std_logic; (6)a1 : in std_logic; (8)d2 : in std_logic; (9)d1: in std_logic; (10)ym4_1 : out std_logic_vector(3 downto 0); (11)ym4_2 : out std_logic_vector(3 downto 0); (12)ym4_3 : out std_logic_vector(3 downto 0)); (13)End s ; (14)ARCHITECTURE arch OF s IS (15)signal Q1 : std_logic_vector(3 downto 0); (16)signal Q2 : std_logic_vector(3 downto 0); (17)signal Q3 : std_logic_vector(3 downto 0); (18)signal temp: std_logic; (19)signal en: std_logic; (20)begin (21)process(clk,clr) (22)begin (23)if clr='0' then (24)Q1 <= "0000"; (25)Q2 <= "0000"; (26)Q3 <= "0000"; (27)elsif clk'event and clk='1' then (28)if a2 ='1' and a2=not(temp) then (29)en<='1'; (30)Q1 <= Q1+"0010"; (31)if Q1="1000" then (32)Q1 <= "0000"; (33)Q2 <= Q2+1; (34)if Q2="1001" then (35)Q2 <= "0000"; (36)Q3 <= Q3+1; (37)end if; (38)elsif Q1="1001" then (39)Q1 <= "0001"; (40)Q2 <= Q2+1; (41)if Q2="1001" then (42)Q2 <= "0000"; (43)end if; (45)end if; (46)elsif a1='1' and a1=not(temp) then (47)en<='1'; (48)Q1 <= Q1 + "0001"; (49)if Q1="1001" then (50)Q1 <= "0000"; (51)Q2 <= Q2+1; (52)if Q2="1001" then (53)Q2 <= "0000"; (54)Q3 <= Q3+1; (55)end if; (56)end if; (57)elsif d2='1' and d2=not(temp) then (58)en<='1'; (59)Q1 <= Q1 - "0010"; (60)if Q1="0001" then (61)Q1 <= "1001"; (62)Q2 <= Q2-1; (63)elsif Q1="0000" then (64)Q1 <="1000"; (65)Q2 <= Q2-1; (66)end if; (67)elsif d1='1' and d1=not(temp) then (68)en<='1'; (69)Q1 <= Q1 - "0001"; (70)if Q1="0000" then (71)Q1 <= "1001"; (72)Q2 <= Q2-1; (73)end if; (74)else en<='0'; (75)end if; (76)end if; (77)ym4_1<=Q1; (78)ym4_2<=Q2; (79)ym4_3<=Q3; (80)if clk'event and clk='0' then (81)if (a1 or a2 or d1 or d2)='0' then (82)temp<=(a1 or a2 or d1 or d2); (83)end if; (84)if (a1 or a2 or d1 or d2)='1'then (85)if en='1' then (86)temp<=(a1 or a2 or d1 or d2); (87)end if; (88)end if; ………………………………………………………………89.end if; (90)end process ; (91)end arch; (92)3.2 vhdl源代码分析程序端口有六个输入变量,分别为clk、clr、a2、a1、d2、d1,另有四个三个输出变量,分别为ym4_1、ym4_2、ym4_3,其功能见功能描述。
结构体中声明了5个内部变量,分别为Q1、Q2、Q3、temp和en,Q1、Q2、Q3储存数码管的译码输入信号,并将其值传递给输出变量ym4_1、ym4_2、ym4_3,temp和en 起到控制使能的作用。
时钟频率设定好后,当clr为高电平时,Q1、Q2、Q3自动清零,clr为低电平时,可以进行加法、减法操作。
下面就“加2”的情况对程序的运行进行说明。