1、篮球比赛电子记分牌设计课题名称篮球比赛电子记分牌设计设计内容及要求设计一个篮球比赛记分牌,使用4位数码管显示倒计时的分钟、秒钟值;2位数码管显示A方得分;2位数码管显示B方得分;使用LED灯作为上、下半场的标志;单次加分值包括1分、2分和3分。系统提供50MHZ频率的时钟源。完成该系统的硬件和软件的设计,并制作出实物装置,调试好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提交一篇课程设计说明书。设计工作量1、VHDL语言程序设计;2、波形仿真;3、在实验装置上进行硬件测试,并进行演示;4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、硬件测试、调
2、试过程,参考文献、设计总结等。进度安排起止日期(或时间量)设计内容(或预期目标)备注第1天课题介绍,答疑,收集材料第2天设计方案论证第3天进一步讨论方案, 对设计方案进行必要的修正,方案确定后开始进行VHDL语言程序设计第4天设计VHDL语言程序第5天在实验装置上进行硬件测试,编写设计说明书编写设计说明书教研室意见年 月 日系(部)主管领导意见年 月 日目 录一、概述 - 5 -1、EDA的介绍 - 5 -2、篮球比赛电子记分牌的介绍 - 5 -二、设计目的 - 6 -三、设计内容及要求 - 6 -四、设计思路 - 6 -五、单元模块设计 - 7 -1、分频模块 - 7 -2、计时模块 - 8
3、 -3、计分模块 - 9 -4、显示模块 - 10 -5、 消抖模块 - 12 -六、仿真结果及分析 - 16 -1、引脚分配图 - 16 -2、设计仿真图 - 17 -3、 硬件测试 - 17 -4、仿真结果分析 - 17 -七、设计总结与心得 - 18 -八、参考文献 - 18 -一、概述1、EDA的介绍EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,
4、用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。2、篮球比赛电子记分牌的介绍体育比赛计时计分系统是对体育比赛过程中所产生的时间、比分等数据进行快速采集记录,加工处理,传递数据的信息系统。根据不同运动项目的不同比赛规则要求,体育比赛的计时计分系统包括测量类、评分类、命中类、制胜类得分类等多种类型。篮球比赛是根据参赛队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的
5、系统是一个负责篮球比赛的数据采集和分配的专用系统,它负责对比赛结果、成绩信息的采集处理、传输分配。篮球比赛的计时计分系统由计时器、计分器等多种电子设备组成,由于比赛的不可重复性,决定了篮球计时计分系统是一个实时性很强、可靠性要求极高的电子服务系统,所以计时计分设备是篮球比赛中不可缺少的电子设备,计时计分系统设计是否合理,关系到比赛系统运行的稳定和可靠,并直接影响到比赛的顺利进行。同时,根据目前高水平篮球比赛要求,完善的篮球比赛计时计分系统设备应能够与现场成绩处理、现场大屏幕、电视转播车等多种设备相联,以便实现高比赛现场感、表演娱乐观众等功能目标。随着比赛规则的进一步完善,相应的计时计分系统也必
6、须随之改进。二、设计目的(1)熟悉FPGA开发的环境和FPGA的结构,了解FPGA开发的流程,熟悉VHDL语言 设计电路的方法。(2)能更熟练的使用VHDL设计FPGA。(3)提高动手能力与实践能力,将软硬件结合起来。三、设计内容及要求设计一个篮球比赛记分牌,使用4位数码管显示倒计时的分钟、秒钟值;2位数码管显示A方得分;2位数码管显示B方得分;使用LED灯作为上、下半场的标志;单次加分值包括1分、2分和3分。系统提供50MHZ频率的时钟源。完成该系统的硬件和软件的设计,并制作出实物装置,调试好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提交一篇课程设计说明书。四、设计思路
7、此次设计是采用QUARTUS II软件,以VHDL为主要编程语言来设计在篮球比赛时所用到的计时系统,记分系统。篮球比赛计时记分系统程序多而且复杂,所以用图形设计方法来设计。先把每一模块的程序写好,然后生成图形文件,最后新建一个顶层图形文件,把各模块联结起来。包括的模块有分频模块、计时模块、记分模块、脉冲产生模块、滤波模块、选择模块、声光显示模块,显示模块及消抖模块等。设计框图如下:计时模块计分模块. 分频模块消抖模块模式控制模块(脉冲产生、滤波、选择、显示) 五、单元模块设计1、分频模块分频模块功能是将50MHz晶振电路高频率时钟信号变成需要的低频率时钟信号。分频模块代码如下:BEGINPRO
8、CESS(CLK) -1hzVARIABLE NUM:INTEGER RANGE 100000000 DOWNTO 0;BEGIN IF CLKEVENT AND CLK = 1 THEN IF NUM 25000000 THEN NUM := NUM + 1; ELSE NUM := 0; CLK1 = NOT CLK1; END IF; END IF;END PROCESS; PROCESS(CLK) - 100HZVARIABLE NUM:INTEGER RANGE 100000000 DOWNTO 0;BEGIN IF CLKEVENT AND CLK = 1 THEN IF NUM
9、50000 THEN NUM := NUM + 1; ELSE NUM := 0; CLK2 = NOT CLK2; END IF; END IF;END PROCESS;2、计时模块12进制减法计数器这个计数器用来表示每一节比赛的分钟位,它的时钟脉冲应由前一个60进制计数器的CO提供。具备复位功能。可以将12进制改为任意进制的减法计数器。当计数结束后,计数器不再计数。 当CO有效时进行减法计数,当计数器减到0之,SO输出一个高电平。EN等于1时计数器复位,当C05等于1时实现比赛加时操作。60进制减法计数器 这个计数器用来表示每一节比赛的秒钟位。要求在完成12个60进制的计数后,计数器不再计
10、数。具备清零、暂停以及复位的功能。 当CLK有效时进行减法计数,CLR等于1时整个计数器清零,EN等于1时计数器复位,PAUSE等于1时计数器暂停计数,。当计数器减到0之,CO输出一个高电平。计时模块代码如下:PROCESS(CLK1) -SHIJIANBEGIN IF CLK1EVENT AND CLK1 = 1 THEN MIAO2 = MIAO2 - 1; IF MIAO2 = 1111 THEN MIAO2 = 1001; MIAO1 = MIAO1 - 1; IF MIAO1 = 1111 THEN MIAO1 = 1001; FEN2 = FEN2 - 1; IF FEN2 = 1
11、111 THEN FEN2 = 1001; FEN1 = FEN1 - 1; IF FEN1 = 1111 THEN FEN1 COUNT1_1 = COUNT1_1 + 1; -+1FEN IF COUNT1_1 = 1001 THEN COUNT1_2 = COUNT1_2 + 1; COUNT1_1 = COUNT1_1 - 1010; IF COUNT1_2 = 1001 THEN COUNT1_2 COUNT1_1 = COUNT1_1 + 0010; -+2FEN IF COUNT1_1(3) = 1 THEN IF COUNT1_1(0) = 1 OR COUNT1_1(1) =
12、 1 OR COUNT1_1(2) = 1 THEN COUNT1_2 = COUNT1_2 + 1; COUNT1_1 = COUNT1_1 - 1010; IF COUNT1_2 = 1001 THEN COUNT1_2 COUNT1_1 = COUNT1_1 + 0011; - +3FEN IF COUNT1_1(3) = 1 THEN IF COUNT1_1(0) = 1 OR COUNT1_1(1) = 1 OR COUNT1_1(2) = 1 THEN COUNT1_2 = COUNT1_2 + 1; COUNT1_1 = COUNT1_1 - 1010; IF COUNT1_2
13、= 1001 THEN COUNT1_2 NULL; END CASE; END IF;END PROCESS;PROCESS(KOUT1_2,KEY2) BEGIN IF KOUT1_2EVENT AND KOUT1_2 = 1 THEN CASE KEY2 IS WHEN 00 = COUNT2_1 = COUNT2_1 + 1; -+1FEN IF COUNT2_1 = 1001 THEN COUNT2_2 = COUNT2_2 + 1; COUNT2_1 = COUNT2_1 - 1010; IF COUNT2_2 = 1001 THEN COUNT2_2 COUNT2_1 = COU
14、NT2_1 + 0010; -+2FEN IF COUNT2_1(3) = 1 THEN IF COUNT2_1(0) = 1 OR COUNT2_1(1) = 1 OR COUNT2_1(2) = 1 THEN COUNT2_2 = COUNT2_2 + 1; COUNT2_1 = COUNT2_1 - 1010; IF COUNT2_2 = 1001 THEN COUNT2_2 COUNT2_1 = COUNT2_1 + 0011; - +3FEN IF COUNT2_1(3) = 1 THEN IF COUNT2_1(0) = 1 OR COUNT2_1(1) = 1 OR COUNT2
15、_1(2) = 1 THEN COUNT2_2 = COUNT2_2 + 1; COUNT2_1 = COUNT2_1 - 1010; IF COUNT2_2 = 1001 THEN COUNT2_2 NULL; END CASE; END IF;END PROCESS;4、显示模块译码显示模块将上一个模块输出四个一位数译码成相对应的七位数码管段码,完成倒计时的译码和显示。由于试验箱采用动态显示,所以需要将BCD码转换成段码和位码。 D0到D7分别表示8个LED管。显示模块代码如下:BEGIN IF CLK2EVENT AND CLK2 = 1 THEN WEI_SEL WEI = 00000
16、001; DISP WEI = 00000010; DISP WEI = 00000100; DISP WEI = 00001000; DISP WEI = 00010000; DISP WEI = 00100000; DISP WEI = 01000000; DISP WEI = 10000000; DISP NULL; END CASE;END PROCESS; PROCESS(DISP)BEGIN CASE DISP IS WHEN 0000 = LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL; END C
17、ASE;END PROCESS;5、消抖模块消抖模块的原理就是把一个按键周期内所输入的所有有效信号,包括那些毛刺,处理成一个脉冲输入。能达到这点,就可以实现消抖功能了。这个设计中存在很多的毛刺,会影响设计的效果及结果,所以需要采用几个消抖的模块来使设计更加的准确。其中,该设计中主要是对按键的消抖。消抖模块代码如下:PROCESS(BUTTON1_1,CLK) -BUTTON1_1 XIAO DOUVARIABLE NUM :INTEGER RANGE 0 TO 1000000;VARIABLE NUM2 :INTEGER RANGE 0 TO 1000000;BEGIN IF CLKEVENT
18、 AND CLK = 1 THEN IF BUTTON1_1 = 1 THEN NUM := NUM + 1; ELSE NUM := 0; END IF; IF BUTTON1_1 = 0 THEN NUM2 := NUM2 + 1; ELSE NUM2 := 0; END IF; IF NUM 50000 THEN KOUT1_1 50000 THEN KOUT1_1 50000 THEN KOUT1_2 50000 THEN KOUT1_2 50 THEN KOUT1_3 50 THEN KOUT1_3 50000 THEN KOUT2_1 50000 THEN KOUT2_1 50 THEN KOUT2_2 50 THEN KOUT2_2 50 THEN KOUT2_3
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1