VHDL摘要智力竞赛抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。当第一个选手按下按键后,则在数码管上显示该组的号码,同时电路将其他各组按键封锁,使其不起作用。若抢答时间内无人抢答,蜂鸣器产生振动。回答完问题后,由主持人进行评分,重新开始下一轮抢答。本文为完成抢答器的逻辑功能,主要分为抢答鉴别模块、计分模块、10S及60S计时模块、分频模块、蜂鸣器振动模块和数码管显示模块进行设计。本设计采用了VHDL语言在QuartusII9.0环境进行仿真编译,通过分析仿真结果,可以很好的完成预定功能和要求。关键词:智力竞赛抢答器VHDLQuartusII仿真目录1设计功能与要求........................................................42设计框架及设计思路说明........................................43设计难度及创新........................................................74仿真结果及说明........................................................75源代码设计..............................................................146设计心得体会..........................................................237参考文献..................................................................23智能竞赛抢答器设计1设计功能与要求一般来说,设计一台智能竞赛抢答器必须能够准确判断出第一位抢答者,并且通过数显途径能让人们很容易得知谁是抢答成功者。回答时设置一定的时间限制,让抢答者在规定时间内答题,主持人根据答题结果实行增减分的操作,并将答题者分数显示在屏幕上。所以我们在设计智能抢答器的模块需要满足鉴别、计时、计分、数显等功能,具体设计要求如下:(1)抢答器可容纳四组选手,并为每组选手设置一个按钮使用;为主持人设置四个控制按钮,分别实现控制系统复位、抢答开始、加分和减分功能;(2)比赛开始前,由主持人按reset键复位系统,使得每个选手的初始成绩都是5分,成绩通过相应的数码管显示;(3)主持人按start键开始每一题的抢答,选手抢答允许(开始抢答)指示灯亮,蜂鸣器响表示抢答开始;同时启动10秒抢答倒计时,剩余时间通过数码管进行显示;(4)在倒计时内若蜂鸣器响,则表示有人抢答,选手对应的抢答允许(开始抢答)指示灯灭,且不允许其他选手抢答,同时通过数码管显示抢答选手号并且启动60秒答题倒计时;(5)若在抢答倒计时内无人抢答,则蜂鸣器响表示抢答时间过,选手抢答允许(开始抢答)指示灯灭,不允许选手抢答;(6)选手若在规定时间内答题结束,则由选手自己按键停止倒计时,同时蜂鸣器响表示答题结束,若在规定时间内不能答完,则倒计时结束显示00,同时蜂鸣器响表示答题结束;(7)答题结束后,主持人通过加减按键来给选手设定成绩,并等待下一题开始。2设计框架及设计思路说明智能竞赛抢答器的设计原理主要是四组选手通过按键获得抢答权,并在规定的时间内完成答题,主持人根据答题的正确性给予加分或减分来实现的。该智能竞赛抢答器是通过模块化设计来实现的,主要分为抢答鉴别模块,分频模块,计分模块,计时模块,蜂鸣器振动模块和数码管显示模块。具体的抢答器系统设计框架图如图1所示:抢答鉴别模块数码管显示模块(答题选手号,选手分数,时间)ABCD10S计时模块计分模块分频模块蜂鸣器振动模块resetstartupdown60S计时模块clken图1智能抢答器系统设计框架图现对各个模块进行详细的介绍:(1)抢答鉴别模块该模块的功能是在主持人按下开始抢答之后,根据4位选手的按键快慢,鉴别出谁应该获得抢答权。若在主持人说开始前选手按下按键,不能获得抢答权;若开始后有人已经优先获得抢答权,其他3位选手按下按键没有作用。输入信号:四位选手的按键情况,表示为一个数组“XXXX”;主持人的start信号输出信号:选手编号,表示哪一位选手获得抢答权若输出为“0”,表示没有人抢答;输出为“1”,表示1号选手获得抢答权;输出为“2”,表示2号选手获得抢答权;输出为“3”,表示3号选手获得抢答权;输出为“4”,表示4号选手获得抢答权。(2)分频模块该模块的主要功能是将系统时钟通过分频,可以提供周期为1S的脉冲,为10S和60S计时模块提供时钟。输入信号:100Hz的时钟信号clk输出信号:1Hz的分频后时钟信号clkout(3)计分模块该模块的主要功能是在进行答题之前由主持人按下reset键,对每位选手的分数进行初始化,默认分数为3分,各个选手的分数上限为9分。若有人优先达到9分,比赛结束。根据获得抢答权的选手说出答案的正确性,若正确,主持人通过up对该选手进行加1分;若错误,主持人通过down对该选手进行减1分。选手的分数达到0分后,再减依旧是0分。输入信号:获得抢答权的选手编号,reset复位键,加分up和减分down键输出信号:四位选手的分数(4)10S计时模块该模块的主要功能是在主持人按下start键后开始进行计时,同时让蜂鸣器振动,计时从9开始下降。若有选手抢答,计时停止,蜂鸣器振动,若没有选手抢答,计时结束后蜂鸣器振动,表示计时结束。输入信号:时钟信号clkout,start信号,选手编号“X”输出信号:计时时间,控制蜂鸣器振动的信号(5)60S计时模块该模块的主要功能是若有选手获得抢答权后就开始计时,显示答题剩余时间。若答题完毕,就停止计时,同时蜂鸣器振动表示答题结束;若未答完题,直到计数显示00时,蜂鸣器振动表示答题时间结束。输入信号:时钟信号clkout,选手编号“X”,选手答题结束按键en输出信号:计时时间,控制蜂鸣器振动的信号(6)蜂鸣器振动模块该模块的主要功能是当输入需要蜂鸣器振动的信号时,就会让蜂鸣器振动。振动的信号一般来自主持人按下start时,10S计数模块产生和60S计数模块产生,振动频率受clkout控制。输入信号:时钟信号clkout,start,10S和60S产生的信号输出信号:蜂鸣器是否产生振动的信号(7)数码管显示模块数码管需要八个,分别用来显示:4位选手的成绩,10S计时的剩余时间,60S计时的剩余时间和获得抢答权的选手编号。可以实时的显示选手分数,剩余时间的显示。输入信号:4位选手的成绩,10S计时的剩余时间,60S计时的剩余时间和获得抢答权的选手编号输出信号:每个对应的ledout3设计难度及创新该智能抢答器系统的设计难度主要集中在以下几点:(1)是否能够正确判断哪位选手获得抢答权,有效地防止有些选手在主持人在开始前进行抢答;(2)主持人能否通过相应的按钮实时的控制选手们的分数;(3)是否能够准确的开启10S和60S倒计时;(4)是否可以准确的控制蜂鸣器的振动情况。本文介绍的智能抢答器系统设计的创新点有:(1)可以准确无误的确定选手的抢答情况,避免抢答混乱和提前抢答造成的误差;(2)实时控制选手的分数,并且通过相应的数码管进行显示;(3)准确开启10S和60S倒计时模块,保证比赛的公平性。4仿真结果及说明4.1分频模块仿真图2分频模块仿真结果图2显示的是分频模块的仿真结果。如图所示,输入时钟信号clk的频率为100Hz,经过分频后输出的时钟信号clkout频率为1Hz,可以满足为计时模块提供的周期为1S的脉冲。4.2抢答鉴别模块仿真图3显示的是抢答鉴别模块的仿真结果。如图所示,xuan[3]、xuan[2]、xuan[1]和xuan[0]分别代表4号选手,3号选手,2号选手和1号选手。xuanout为输入到显示模块的选手编号。若没有选手抢答,则会输出0;若有选手抢答,则会显示相应的选手编号。图3抢答鉴别模块仿真结果当主持人没有按下start键时,表明没有开始抢答,而此时若有选手按下抢答键(如图所示的3号选手),被视为无效,且输出的选手编号仍然为0。当主持人按下start键时,表明可以开始抢答,选手们通过按键抢答,根据抢答时间的先后确定谁获得抢答权。一旦有人获得抢答权,后来的选手再按抢答键就失去原来的作用,即有人获得抢答权,其他人在按相应的按键已经无法获得抢答权,且获得抢答权的选手编号会输出。如图所示,主持人按下start键后,选手4,3,2,1依次按下抢答键,但最终获得抢答权的是4号选手,它的编号也随之输出。当主持人按下start键时,没有抢答的话会一直等待,直到有人按下抢答键为止。如图所示,主持人按下start键后一直再等待,直到1号选手按下抢答键才会改变输出,输出变为1。4.3计分模块仿真图4显示的是计分模块的仿真结果。主持人在比赛开始前对各位的选手分数进行初始化,均为3分。然后获得抢答权的选手答对加1分,答错减1分,分数为0后答错依旧为0,分数为9后就胜出,比赛结束。如图4(a)所示,获得抢答权的为1号选手,该题答对后,主持人控制up键,对1号选手的分数进行加1;如图4(b)所示,获得抢答权的为1号选手,该题答错后,主持人控制down键,对1号选手的分数进行减1,可以实现对相应的选手进行加分减分操作。(a)(b)图4(a)答对加分仿真(b)打错减分仿真4.410S计时模块仿真图5显示的是10S计时模块的仿真结果。图中的shijian指的是10S倒计时的剩余时间,zhen1是主持人按下start键后,控制蜂鸣器振动的信号,zhen2是抢答倒计时的时候有选手抢答,控制蜂鸣器振动的信号,zhen3是10S抢答倒计时结束后控制蜂鸣器振动的信号。图5(a)显示的是10S计时内没人抢答仿真结果。如图所示,当主持人按下start键后,控制蜂鸣器的信号zhen1拉高,使蜂鸣器振动,说明抢答开始,同时开始10S倒计时。因为无人抢答,所以一直处于倒计时的状态。当10S倒计时结束后,控制蜂鸣器的信号zhen3拉高,使蜂鸣器振动,说明倒计时结束,此题作废。图5(b)显示的是10S计时内有人抢答仿真结果。如图所示,当主持人按下start键后,控制蜂鸣器的信号zhen1拉高,使蜂鸣器振动,说明抢答开始,同时开始10S倒计时。当倒计时为2S的时候,1号选手获得抢答权开始作答,控制蜂鸣器的信号zhen2拉高,使蜂鸣器振动,说明有人获得抢答权,同时10S倒计时停止,直到下次start按键按下,才重新开始计时。(a)(b)图5(a)10S计时内没人抢答仿真(b)10S计时内有人抢答仿真4.560S计时模块仿真图6显示的是60S计时模块的仿真结果。图中的shi和ge分别表示60S计时的十位和各位上的数字,zhen1是抢答者在规定的60S内没有完成答题,倒计时结束时控制蜂鸣器振动的信号,zhen2是抢答者在规定的60S内完成答题,按下en键后表示答题结束的控制蜂鸣器振动的信号。图6(a)显示的是没人抢答时的计时显示仿真结果。由于没有人抢答,就没有激活答题倒计时,所以显示的依旧是59。图6(b)显示的是60S计时选手没有完成答题的仿真结果。因为有选手抢答,所以进行60S答题倒计时。选手答题未结束,但60S倒计时结束,则控制蜂鸣器的信号zhen1拉高,使蜂鸣器振动,说明倒计时结束,停止答题。图6(c)显示的是60S计时内选手完成答题的仿真结果。因为有选手抢答,所以进行60S答题倒计时。选手答题结束后,按下en键则控制蜂鸣器的信号zhen2拉高,使蜂鸣器振动,说明选手答题结束,让主持人判断正误。(a)(b)(c)图6(a)没有选手抢答(b)有选手抢答,但未在60S内答完(c)有选手抢答,且在60S内答完4.6蜂鸣器振动模块仿真图7蜂鸣器振动模块仿真结果图7显示的是蜂鸣器振动模块的仿真结果。如图所示,若输入有一