FPGA实现篮球计数器的设计.doc_第1页
FPGA实现篮球计数器的设计.doc_第2页
FPGA实现篮球计数器的设计.doc_第3页
FPGA实现篮球计数器的设计.doc_第4页
FPGA实现篮球计数器的设计.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

马嘉程:EDA技术课程设计报告课程设计(论文)任务书 电气与电子工程 学院 电子信息工程 专业 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。还有,考虑到比分计数按键会有一些抖动干扰,我在百度后加入一个去抖的代码,也定义了一些中间变量。 整个程序有四个进程组成,由于进程语句本身就是并行语句,虽然会有一些毛刺现象,但整体上不会干扰很大,最后的时事也证明了这一点。 当然,整个程序还可以用状态机来实现,我在网上发现,绝大多数的篮球计时器都是用状态机来实现的。状态机也有状态机的好处,至少在逻辑上实现比较清楚,但是我个人认为状态机的编程比较麻烦,所以我没有选择网上的大多数编程方式三、模块设计1. 倒计时的设计 if(qh=0000 and ql=0000) then-当计数为00时,报警 bq =1; elsif(ql=0000 and qh/=0000)then-如果高位不为0,低位为0,那么低位变9,高位减一 ql=1001; qh=qh-1; bq=0; else -否则低位减一,不报警 ql=ql-1; bq=0; end if; end if;2. 暂停和启动的实现 在这里我使用了一个使能按键EN,当EN为0时开始倒计时,于此同时,我的这条语句是一条不完整的if语句,故当EN为1时,计时暂停,且生成锁存器,显示当前所计的那个时间。 具体实现:if EN=0 then .(这句语句应加在计数分频之后,不然数码管将只显示一个数字)end if;3. 解除报警的实现 我在设计程序时,让倒计时为“00”的时候有报警信号产生,那么我又设计了一个control按键,当control键按下以后,无论什么情况下都使报警信号为0,这样报警就解除了。 具体实现: if control =0 then bq=0;4. 显示两队的比分:在这里我独立出了两个数码管显示两队比分,通过两个按键分别对各自数码管进行加一的计数,由于一开始没有加入消抖的电路,导致一开始的加法计数太快,肉眼不能分辨,故后来加入了消抖语句: 具体实现:if jishu1=0 then if count1=50 then count1:=count1;-如果按键时间超过50ms,那么记为有效按键,即消抖 else count1:=count1+1; end if; if count1=49 then key1=0; else key1=1; end if; else count1:=0; end if; if key1=0 then -当按键有效时,计分做加法,满九归零 if b1=1001 then b10); else b1=b1+1; end if; end if;end if;end process; process(rst_n,jishu2,clk1k)-设置两队比分的进程 variable count2:integer; begin if (rst_n=0) then b2=0000; elsif (clk1kevent and clk1k=1) then -上升沿来临 if jishu2=0 then if count2=50 then count2:=count2;-如果按键时间超过50ms,那么记为有效按键,即消抖 else count2:=count2+1; end if; if count2=49 then key2=0; else key2=1; end if; else count2:=0; end if; if key2=0 then -当按键有效时,计分做加法,满九归零 if b2=1001 then b20); else b2=b2+1; end if; end if;end if;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”,在跟换绑定按键后发现是按键的问题,按键坏了导致复位时的比分出现混乱。 接着,当我按下两个计分按键时,他们可以分别开始计数。此功能无误。 在给定1K Hz的时钟信号,当我按下EN键,开始倒计时,当时间为“00”时,报警的led灯亮起,而我又按下了control键,报警灯灭,数码管显示回到“30”。此功能无误。 第 9 页 6、 设计体会与小结 我的EDA课设结束了,这段时间来感觉自己还是挺累的,从紧张的期末复习到之后的DSP课设再到现在的EDA课设,几乎没有休息过。由于驾校教练早早安排了科目二的训练与考试,加上临近春运火车票的紧俏,我不得不把两周的EDA课设压缩到一周完成,望付老师体谅! 虽然时间上压缩了,但是我对待课设的态度丝毫没有打折扣。之前的DSP课设让我感觉到自己是可以独立完成一个课设的任务,而这次的EDA课设我更是早早开始了准备的工作。虽然网上关于我这个课设的资料不少,但是我还是尝试着自己编程,我在之前实验课上那个60进制计数的程序上一点点的改进,前后经历了16次的大的修改,才最终完成课设人物,至于,小的修改,已经记不清了。我要感谢付老师在课设期间对我问题的解答已经程序上的点拨提醒,让我学到了很多,我知道了自己如何去解决按键消抖的问题,自己如何去尝试四个数码管扫描的问题,自己如何去

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论