四人抢答器课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
引言 (2)
一、计内容、技术条件和要求 (2)
二、设计方案及思路 (2)
三、单元模块分析 (3)
四、参考程序及仿真 (5)
五、程序下载及测试 (7)
六、结论与心得 (8)
七、主要参考文献: (8)
四人抢答器设计报告
引言现代生活中,数字电路产品与我们接触的是越来越平凡了,包括计算机、电子表、智能仪器表及其它很多领域中,它给我们带来的不仅是工作上的方便,而且也给我们的生活娱乐添滋加彩。这次EDA课程设计中,我做的是四人抢答器,抢答器在现实中有着广泛的应用,在各种比赛中我们总是能够找到他的身影,比如:智力竞赛、各种娱乐节目中的活动计时等等都有着他的身影,本次设计基于课程任务它要最终能够实现:(1) 四人进行抢答;(2) 具有抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警;(3) 能显示超前抢答台号并显示犯规警报;(4) 能显示各路得分,并具有加、减分功能;(5)系统复位后进入抢答状态,当有一路抢答键按下时,该路抢答信号将其余各路抢答封锁,同时铃声响,直至该路按键松开,显示牌显示该路抢答台号。基于上面要实现的功能本次设计软件部分采用VHDL语言进行相关功能的实现,硬件部分主要有数码管,锁存器、报警器等相关器件进行实现,使用QuartusII对编写的VHDL语言进行功能的调试和功能的仿真,最终在FPGA硬件上进行功能的验证和完善。
一、计内容、技术条件和要求:
l、设计用于竞赛的四人抢答器,功能如下:
(1) 有多路抢答器,台数为四;
(2) 具有抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警;
(3) 能显示超前抢答台号并显示犯规警报;
(4) 能显示各路得分,并具有加、减分功能;
2、系统复位后进入抢答状态,当有一路抢答键按下时,该路抢答信号将其余各路抢答封锁,同时铃声响,直至该路按键松开,显示牌显示该路抢答台号。
二、设计方案及思路
对于一个四人抢答器,四个选手在电路中的起始控制作用是一样的,当裁判员宣布开始抢答时,谁先按下他前面的控制开关,他的灯就会亮,而且这时其他人再怎么按,也就不会亮了,说明每个人对其他人都有一个先发制人的作用,及每个人都在时间控制下,能锁存住其他选手的功能。当有一个指示灯亮了,计数器就开始从20开始倒计时,到0时还要警告声,这样计数器开始工作就是在指示灯的指示下工作。
可以设四个人分别为输入端A,B,C,D;因为四个输入端在VHDL中,要求四个输入端应该是相等优先级别,但只要有一个输入端接入高电平时,就给其他信号一个反馈,使得他们的输入无效,及他们对应的指示灯不亮;所以我们可以也并行语句,让它们分为四个进程(process),同时也要求每个进程中都有反馈信号传给其他进程语句中,这样就可以完成抢答器基础部分了,设计的逻辑电路图部分见附录图一。其次就是计数器部分,当有人开始进入回答部分,指示灯亮,同时计数器开始工作,并要求是倒计时方式并七段显示出,通过这些消息我们可知,指示灯即是计数器开始倒
计时的信号,本设计中采用了元件例化(component)语句,在抢答器中给个选手已经开始回答了的信号插口,给计数器中的置零输入端,这样就基本上完成了设计,计数器采用倒计时方式,实现方式也很简单,只要给他们最初赋值为20,而后在每个上升沿来到减一
抢答器设计初步电路图如图一所示
整个系统的输入信号有:各组的抢答按钮A、B、C、D,复位端:reset,:,时钟信号:CLK;抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。当按下CLR后对系统清零,主持人按下reset后系统复位进入抢答状态,计时显示初始值20,倒计时开始,当某组首先按下抢答键时,该路抢答信号,抢答器能够设别最先抢答的信号,锁定该信号,同时扬声器响起,参赛小组的序号在数码管上显示;期间无人抢答计数至0时,停止计数,扬声器发出超时报警信号,以中止继续回答问题;当主持人给出倒计时计数禁止信号时,扬声器停止鸣叫;参赛者在规定时间内回答完问题,主持人给出倒计时计数禁止信号,以免扬声器鸣叫,按下复位键,又可开始新一轮的抢答。在整个抢答器中最关键的是如何实现抢答封锁,在控制键按下的同时计数器倒计时显示有效剩余时间。除此之外,整个抢答器还需有一个使能信号和一个归零信号,以便抢答器能实现公平抢答和停止。
三、单元模块分析
这次设计的四人抢答器,将该任务分成五个模块进行设计,分别为:抢答器鉴别模块、抢答器计时模块、译码模块、数选模块、报警模块:
1、抢答鉴别模块
在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。其中有四个抢答信号A、B、C、C;;抢答状态显示信号count1、count2;抢答与警报时钟信号clk;系统复位信号rst;警报信号music。
2、抢答器计时模块:
在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。其中有抢答时钟信号clk;系统复位信号rst;s;
抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号count1,count2。
3、数据选择模块:
在这个模块中主要实现抢答过程中的数据输入功能,,在数码管上显示。
4、报警模块:
在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内人抢答或是计数到时蜂鸣器开始报警,。
5、译码模块:
在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。
四、参考程序及仿真
根据上面的分析可知,我们只要用四个进程语句,就可以处理好四位选手的相互限制的问题,再将四个指示灯用相与来控制计数器的置零端set,再用一个元件话语句component连接计数器,下面是具体的抢答器的VHDL语言代码:
代码中A、B、C、D分别代表四位参赛选手,RESET是主裁判员的控制开关,CLK是计数器的时钟信号,MUSIC是警告的控制开关,COUNT1和CONT2代表的是20倒计时的七段显示二进制码直接与LED显示器连接,ALIGHT,BLIGHT,CLIGHT,DLIGHT分别代表四位选手的显示灯。
参考程序:
library ieee;
use ieee.std_logic_1164.all;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Qiang_DA is
port(A,B,C,D,RESET:in std_logic;
CLK:in std_logic;
MUSIC:out std_logic;
COUT1:out std_logic_vector(6 downto 0);
COUT2:out std_logic_vector(6 downto 0);
ALIGHT,BLIGHT,CLIGHT,DLIGHT:out std_logic);
end;
architecture one of Qiang_DA is
component COUNTER20
port(SET,CLK:in std_logic;
MUSIC:out std_logic;
COUT1:out std_logic_vector(6 downto 0);
COUT2:out std_logic_vector(6 downto 0));