FPGA实现篮球计数器的设计.docx
- 文档编号:24524523
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:13
- 大小:129.16KB
FPGA实现篮球计数器的设计.docx
《FPGA实现篮球计数器的设计.docx》由会员分享,可在线阅读,更多相关《FPGA实现篮球计数器的设计.docx(13页珍藏版)》请在冰豆网上搜索。
FPGA实现篮球计数器的设计
课程设计(论文)任务书
电气与电子工程学 院 电子信息工程专 业2011- 班
一、课程设计(论文)题目 篮球计分器
二、课程设计(论文)工作自2014年1月6日起至2014年1月17日止。
三、课程设计(论文)地点:
电子测控实验室
四、课程设计(论文)容要求:
1)课程设计任务:
设计一个篮球计分器并要求:
1)具有30秒计时、显示
2)可对计时器清零、置数、启动和暂停
3)30秒倒计时
4)两个数码管显示两队比分
5)超时报警并可解除报警
2)课程设计论文编写要求
(1)课程设计任务及要求
(2)总体电路设计
(3)模块设计---给出各个模块的详细设计思路
(4)管脚绑定---列表或截图给出管脚绑定情况
(5)仿真及FPGA开发板调试---给出运行仿真波形截图,分析运行结果。
(6)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,
巩固了哪些知识,有哪些提高。
(7)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)
(8)报告按规定排版打印,要求装订平整,否则要求返工;
(9)课设报告的装订顺序如下:
封面---任务书---中文摘要---目录----正文---附录
(代码及相关图片)
(10)严禁抄袭,如有发现,按不及格处理。
3)课程设计评分标准:
(1)学习态度:
10分;
(2)系统设计:
20分;
(3)代码调试:
20分;
(4)回答问题:
20分;
(5)论文撰写:
30分。
4)课程设计进度安排
进度安排:
本设计持续10天,其中最后一天为答辩时间。
第1-2天:
讲解题目,准备参考资料,检查、调试实验软硬件,进入设计环境,开始
设计方案和验证方案的准备;
第3-4天:
完成设计与验证方案,经指导老师验收后进入模块电路设计;
第5-7天:
完成模块电路设计,进行代码输入,并完成代码的初步仿真;
第8-9天:
代码功能仿真正确,约束设计,综合、下载,实现设计目标,并指导老师
验收设计;整理设计资料,撰写报告、准备答辩;
第10天:
验收合格后进行答辩。
学生签名:
2014年1月6日
课程设计(论文)评审意见
(1)学习态度(10分):
优( )、良( )、中( )、一般( )、差( );
(2)系统设计(20分):
优()、良( )、中( )、一般( )、差( );
(3)代码调试(20分):
优( )、良( )、中( )、一般( )、差( );
(4)回答问题(20分):
优( )、良( )、中( )、一般( )、差( );
(5)论文撰写(30分):
优( )、良( )、中( )、一般( )、差( );
评阅人:
职称:
讲师
2014年1月17日
中文摘要
随着电子技术的高速发展和计算机技术的普遍应用,电子设计也越来越普遍地应用于整个电子行业中。
电子设计是人们进行电子产品设计、开发和制造过程中十分关键的一步,其核心就是电子电路的设计。
电子设计自动化(EDA)是在电子产品向更复杂、更高级,向数字化、集成化、微型化和低耗能方向发展过程中逐渐产生并日趋完善的电子设计方法,在这种方法中,设计过程的大部分工作(特别是底层工作)均由计算机自动完成,是电子技术发展历程中产生的一种先进的设计方法,是当今电子设计的主流。
在篮球比赛中,规定了球员的持球时间不能超过30秒,否则就犯规了。
本课程设计的“篮球竞赛30秒计时器”,可用于篮球比赛中,用于对球员持球时间30秒限制。
一旦球员的持球时间超过了30秒,它自动的报警从而判定此球员的犯规。
本课程设计是篮球竞赛30秒计时计分器。
此计时器功能齐全,显示30秒倒计时功能,系统设置外部操作开关可以直接清零、启动、暂停,同时可以同过计数显示比分,应用了七段数码管来显示数值,可以方便地实现断点计时功能,当计时器递减到零时,还会发出报警信号,也可以通过按键解除报警。
本设计完成的中途计时功能,实现了在许多的特定场合进行时间追踪的功能,在社会生活中也具有广泛的应用价值.
目 录
一、课程设计任务及要求1
二、需求分析2
三、设计思路4
四、详细设计7
五、运行调试与分析讨论8
六、设计体会与小结11
七、参考文献12
一、课程设计任务及要求
设计任务:
为检验本学期学习成果,根据本学期所学的VHDL代码容设计一个篮球计时计分器
设计要求:
1、具有30s计时功能,并且能够实时显示计数结果。
2、设有外部操作开关,控制计数器实现直接清零、启动以及暂停/连续工作等操作。
3、计时器为30s递减计时,计时间隔为1s。
4、计时器递减计时到零时,数码显示器不能灭灯,同时发出报警信号。
5、能进行比分置数,能在报警信号发出时解除报警
二、总体电路设计
1、设计的总体原理
本设计由30秒计时器以及比分计分器组成,前者包括了时间置数、数码管暂停和启动以及报警及其控制的功能模块,后者由比分计数,数码管显示等功能模块。
其中计时器各部分相互联系,共同协作,实现电路功能。
各部分关系框图如下:
整体框图
2、设计容
本设计为30秒计数器,它主要分为四个部分:
计数部分,显示部分控制部分和计分部分。
其中计数器和控制电路是系统的主要部分。
计数器完成30s计时功能,而控制电路具有直接控制计数器的启动计数、暂停/连续计数、译码显示电路的显示功能。
为了满足系统的设计要求,在设计控制电路时,应正确处理各个信号之间的时序关系。
在操作直接清零开关rst_n时,要求计数器回到初始状态(设为30秒),数码显示器不灭灯。
初始状态可以通过zsH与zsL拨码开关置数,译码显示电路显示“30”字样;当启动开关EN为0时,计数器开始计数;为了简单起见,我们将暂停与连续的控制与开始用一个键控制。
当计数器减到0时,启动报警系统,报警指示灯亮进行报警。
报警时如果控制报警键control为0时,报警解除。
计分部分,当时钟信号来临,通过按键jishu1与jishu2控制两队比分,然后数码管显示出来。
3、整体设计思路
我在关于整体程序规划的时候,想到用一个进程控制倒计时,一个进程控制数码管显示,两个进程控制两个按键的比分计数,然后把计数分频加到时序电路中,主要是倒计时进程中,另外,在该进程中,实现暂停/启动的功能以及报警的输出与控制。
在实体部分定义一个时钟信号clk1k,一个复位键rst_n,一个使能按键EN,两个置数zsH,zsL以及一些报警输出,数码管片选和位选输出。
由于报警的输出根据情况的不同会变化,所以我最后决定定义一个中间变量bq。
还有,考虑到比分计数按键会有一些抖动干扰,我在XX后加入一个去抖的代码,也定义了一些中间变量。
整个程序有四个进程组成,由于进程语句本身就是并行语句,虽然会有一些毛刺现象,但整体上不会干扰很大,最后的时事也证明了这一点。
当然,整个程序还可以用状态机来实现,我在网上发现,绝大多数的篮球计时器都是用状态机来实现的。
状态机也有状态机的好处,至少在逻辑上实现比较清楚,但是我个人认为状态机的编程比较麻烦,所以我没有选择网上的大多数编程方式
三、模块设计
1.倒计时的设计
if(qh="0000"andql="0000")then--当计数为00时,报警
bq<='1';
elsif(ql="0000"andqh/="0000")then--如果高位不为0,低位为0,那么低位变9,高位减一
ql<="1001";
qh<=qh-1;
bq<='0';
else--否则低位减一,不报警
ql<=ql-1;
bq<='0';
endif;
endif;
2.暂停和启动的实现
在这里我使用了一个使能按键EN,当EN为0时开始倒计时,于此同时,我的这条语句是一条不完整的if语句,故当EN为1时,计时暂停,且生成锁存器,显示当前所计的那个时间。
具体实现:
ifEN<='0'then...(这句语句应加在计数分频之后,不然数码管将只显示一个数字)
endif;
3.解除报警的实现
我在设计程序时,让倒计时为“00”的时候有报警信号产生,那么我又设计了一个control按键,当control键按下以后,无论什么情况下都使报警信号为‘0’,这样报警就解除了。
具体实现:
ifcontrol='0'thenbq<='0';
4.显示两队的比分:
在这里我独立出了两个数码管显示两队比分,通过两个按键分别对各自数码管进行加一的计数,由于一开始没有加入消抖的电路,导致一开始的加法计数太快,肉眼不能分辨,故后来加入了消抖语句:
具体实现:
ifjishu1='0'then
ifcount1=50thencount1:
=count1;--如果按键时间超过50ms,那么记为有效按键,即消抖
elsecount1:
=count1+1;
endif;
ifcount1=49thenkey1<='0';
elsekey1<='1';
endif;
elsecount1:
=0;
endif;
ifkey1='0'then--当按键有效时,计分做加法,满九归零
ifb1="1001"then
b1<=(others=>'0');
elseb1<=b1+1;
endif;
endif;
endif;
endprocess;
process(rst_n,jishu2,clk1k)--设置两队比分的进程
variablecount2:
integer;
begin
if(rst_n='0')then
b2<="0000";
elsif(clk1k'eventandclk1k='1')then--上升沿来临
ifjishu2='0'then
ifcount2=50thencount2:
=count2;--如果按键时间超过50ms,那么记为有效按键,即消抖
elsecount2:
=count2+1;
endif;
ifcount2=49thenkey2<='0';
elsekey2<='1';
endif;
elsecount2:
=0;
endif;
ifkey2='0'then--当按键有效时,计分做加法,满九归零
ifb2="1001"then
b2<=(others=>'0');
elseb2<=b2+1;
endif;
endif;
endif;
1.
四、管脚绑定
五、仿真及FPGA开发板调试
1.仿真
图一.倒计时
当使能EN为0时,且复位ret_n为1时,所置数为30,于是从30开始倒计时,qh从3到2,于此同时ql从0到9
图二、按键比分计数
当一个按键按下时比分开始做加法,满九归零
图三、二进制表示的倒计时与比分计数
这是二进制数表示的倒计时与比分计数的过程,同样,按键按下时,比分加一,时钟上升沿来临时,倒计时一次
图四、control键控制baojing信号
当倒计时到“00”时,报警信号为1,但是当我按下control键时,报警信号为0,即报警被解除了
图五、EN键控制暂停与启动
当复位结束后,并未立即进行倒计时,而是等到EN为‘0’时,才开始倒计时,这就说明EN有暂停作用
2、仿真图分析
由图一、图二可知,当上升沿时钟信号来临时,使能键EN为0,那么倒计时开始,图五可知当EN为0时,无论有无时钟信号,数码管显示暂停状态,不倒计时。
而通过图三可知,计时到00时,产生的报警信号可以通过control键来解除,但是,如果仔细观察,control键按下到报警解除有一个时间上的小的延时,这可能是从解除报警信号产生到实施过程中运行程序上的一个延时。
由图四可知,当我分别按下两个计数按键的时候,数码管进行加法计数。
由以上五仿真图可知,程序基本无误。
3、开发板调试
当我编译完程序,绑定完引脚后,将程序烧入开发板上,进行调试,先将拨码开关调制“00110000”,接着发现当我按下复位开关的时候,计时的两个数码管显示为“30”,没问题,但是两个比分的数码没有归“00”,在跟换绑定按键后发现是按键的问题,按键坏了导致复位时的比分出现混乱。
接着,当我按下两个计分按键时,他们可以分别开始计数。
此功能无误。
在给定1KHz的时钟信号,当我按下EN键,开始倒计时,当时间为“00”
时,报警的led灯亮起,而我又按下了control键,报警灯灭,数码管显示回到“30”。
此功能无误。
6、设计体会与小结
我的EDA课设结束了,这段时间来感觉自己还是挺累的,从紧的期末复习到之后的DSP课设再到现在的EDA课设,几乎没有休息过。
由于驾校教练早早安排了科目二的训练与考试,加上临近春运火车票的紧俏,我不得不把两周的EDA课设压缩到一周完成,望付老师体谅!
虽然时间上压缩了,但是我对待课设的态度丝毫没有打折扣。
之前的DSP课设让我感觉到自己是可以独立完成一个课设的任务,而这次的EDA课设我更是早早开始了准备的工作。
虽然网上关于我这个课设的资料不少,但是我还是尝试着自己编程,我在之前实验课上那个60进制计数的程序上一点点的改进,前后经历了16次的大的修改,才最终完成课设人物,至于,小的修改,已经记不清了。
我要感付老师在课设期间对我问题的解答已经程序上的点拨提醒,让我学到了很多,我知道了自己如何去解决按键消抖的问题,自己如何去尝试四个数码管扫描的问题,自己如何去查找程序那么多warning的原因,感觉这次的课设,收获很多。
本次的课设我运用了课本上学过的VHDL语言,结合数电以及模电的相关知识来完成篮球计分器的设计,这是我第一次独立设计的算是比较大的一个程序,当然,这其中还会有一些不足的地方以及还可以完善的功能,我会在今后的学习中多加研究,毕竟,我们学的理论的知识必须经过实践,才能更好地吸收与运用。
七、参考文献
【1】松,黄继业.《EDA技术实用教程》[M].:
科学,2002.
【2】乔庐峰王志功《VHDL数字电路设计教程》电子工业2005
【3】网络资源篮球30秒计时器XX文库
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 实现 篮球 计数器 设计