数字式竞赛抢答器说明书.docx
- 文档编号:26342472
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:22
- 大小:197.51KB
数字式竞赛抢答器说明书.docx
《数字式竞赛抢答器说明书.docx》由会员分享,可在线阅读,更多相关《数字式竞赛抢答器说明书.docx(22页珍藏版)》请在冰豆网上搜索。
数字式竞赛抢答器说明书
《EDA技术》课程设计说明书
数字式竞赛抢答器
学院:
电气与信息工程学院
学生姓名:
程波
指导教师:
王晓丽职称/学位硕士
专业:
电气工程及其自动化
班级:
电气本1202班
学号:
1230140210
完成时间:
2015年6月28日
摘要
当今的社会竞争日益激烈,选拔人才,评选优胜,知识竞赛之类的活动愈加频繁,那摩就必然离不开抢答器。
抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。
当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。
若抢答时间内无人抢答,则报警灯亮。
回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。
此次课程设计的内容是设计一个可容纳四组参赛者同时抢答的数字抢答器。
主要模块有抢答鉴别模块、计时模块、犯规模块、计分模块以及显示模块,这些模块的组合构成了抢答器系统框图。
通过编写相应的VHDL程序实现即功能仿真,顶层文件及整体仿真。
关键词:
抢答器;VHDL
1绪论1
2抢答器的设计要求2
3抢答器的功能模块3
3.1抢答器的抢答鉴别模块设计3
3.1.1抢答鉴别的功能3
3.1.2抢答鉴别模块的时序仿真图3
3.2抢答器的计时模块设计4
3.2.1计时模块的功能4
3.2.2计时模块的时序仿真图4
3.3抢答器的计分模块设计5
3.3.1计分模块的功能5
3.3.2计分模块的时序仿真图5
3.4抢答器的译码显示模块设计6
3.4.1译码显示模块的功能6
3.4.2译码显示模块的时序仿真图6
3.5抢答器的犯规模块设计7
3.5.1犯规模块的功能7
3.5.2犯规模块的时序仿真图7
4抢答器的顶层原理图设计8
4.1顶层原理图的源文件8
4.2顶层设计的时序仿真图8
结束语10
参考文献11
致谢12
附录13
附录A抢答鉴别模块VHDL源程序13
附录B计时模块VHDL源程序15
附录C计分模块VHDL源程序18
附录D译码显示模块VHDL源程序21
附录E犯规模块VHDL源程序22
1绪论
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
随着电子技术和计算机技术的飞速发展,电子线路的设计工作也日益显得重要。
经过人工设计、制作实验板、调试再修改的多次循环才定型的传统产品设计方法必然被计算机辅助设计所取代,因为这种费时费力又费资源的设计调试方法既增加了产品开发的成本,又受到实验工作场地及仪器设备的限制。
为了克服上述困难,加拿大InteractiveImageTechnologies公司推出的基于Windows95/98/NT操作系统的EDA软件(ElectronicsWorkbench“电子工作台”,EWB)。
他可以将不同类型的电路组合成混合电路进行仿真。
EWB是用在计算机上作为电子线路设计模拟和仿真的新的软件包,是一个具有很高实用价值的计算机辅助设计工具。
目前已在电子工程设计等领域得到了广泛地应用。
与目前流行的电路仿真软件相比较,EWB具有界面直观、操作方便等优点。
他改变了有些电路仿真软件输入电路采用文本方式的不便之处,该软件在创建电路、选用元器件的测试仪器等均可以直接从屏幕图形中选取,而且测试仪器的图形与实物外形基本相似,从而大大提高了电子设计工作的效率。
2抢答器的设计要求
在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等多种手段指示出第一抢答者。
同时,还可以设置计分、犯规及奖惩计录等多种功能。
本设计的具体要求是:
设计一个课容纳四组参赛者同时抢答的数字抢答器,可判断第一抢答者并报警指示抢答成功,其他组再抢答均无效。
若提前抢答则对相应的抢答组发出警报。
同时,要求给出系统总体组成框图,设计思路,完成以上模块的VHDL文件并进行仿真验证。
3抢答器的功能模块
3.1抢答器的抢答鉴别模块设计
3.1.1抢答鉴别模块的功能
该模块主要实现抢答过程中的抢答功能,并能对超前抢答进行警告。
同时,抢答鉴别模块还用来准确直观地判断A、B、C、D四组抢答者谁最先按下按钮,并为显示端送出信号,通过译码显示和报警等途径使观众能够清楚地知道是哪一组抢答成功,能记录无论是正常抢答还是超前抢答者的台号,并且能实现当有一路抢答按键按下时,该路的抢答信号会将其余信号封锁。
它是整个系统的核心部分。
同时组别显示端为下一模块输入信号,以便主持人为该组抢答成功者进行加分的操作。
抢答鉴别模块设计图如图1所示,其VHDL源程序见附录A。
图1抢答鉴别模块设计图
3.1.2抢答鉴别模块的时序仿真图
如图2,为抢答鉴别模块的时序仿真图。
抢答时设置时钟信号CLK,在抢答时需要一个允许开始抢答信号,设置为states,该信号输入后,指示灯亮,信号为LED,提示选手开始抢答,为了鉴别抢答者,设置A、B、C、D为了使系统重新进入抢答状态,还需要一个复位信号,设置为CLR。
从仿真图中可以看出,A的速度最快,但明显有一点抢先,紧随其后的是B,C,D,这三人均没有抢先,而且可以看出,抢答开始后,灯LED[0]亮。
图2抢答鉴别模块的时序仿真图
3.2抢答器的计时模块设计
3.2.1计时模块的功能
该模块主要实现抢答过程中的计时功能,在有抢答开始后进行所设时间的倒计时,并且在倒计时后无人抢答显示超时并报警。
设置抢答时钟信号为clk,
计时预置控制端ldn,系统复位清零信号为clr,抢答使能信号为en,计时预置数据调整按钮个位为ta,十位为tb。
计时输出信号端qa[3..0]和qb[3..0]。
计时模块设计图如图3所示,其VHDL源程序见附录B。
图3计时模块设计图
3.2.2计时模块的时序仿真图
如图4,为抢答器的计时模块的时序仿真图。
当清零信号clr=1时,模块输出信号qa=0000,qb=0000。
当预置控制信号ldn=1可以通过ta来调整qa,ta来一次高电平,则qa的数值就加1;用tb来调整qb,通过这两个调整信号可调整参赛者答题所需要的时间。
在clr=0,ldn=0,en=1时,通过时钟信号clk的上升沿来进行倒计时。
图4计时模块的时序仿真图
3.3抢答器的计分模块设计
3.3.1计分模块的功能
系统的输入信号为:
加分按钮端ADD,选择组别号输入端CHOSE[3..0];系统的输出信号为:
A组分数输出端A2[3..0]、A1[3..0]、A0[3..0]B组分数输出端B2[3..0]、B1[3..0]、B0[3..0],C组分数输出端C2[3..0]、C1[3..0]、C0[3..0]。
计分模块设计图如图5所示,其VHDL源程序见附录C。
图5计分模块设计图
3.3.2计分模块的时序仿真图
如图6,为抢答器的计分模块的时序仿真图。
计分模块的运行方式是按照十进制进行加法,即当时钟出现上升沿时就进行加一的操作。
计分模块为哪组进行计分取决于鉴别模块的输入信号CHOSE,当CHOSE=0001时表示A组最先抢答,则在此模块中为A组计分;当CHOSE=0010时表示B组最先抢答,则在此模块中为B组计分;当CHOSE=0100时表示C组最先抢答,则在此模块中为C组计分;当CHOSE=1000时表示D组最先抢答,则在此模块中为D组计分。
图6计分模块的时序仿真图
3.4抢答器的译码显示模块设计
3.4.1译码显示模块的功能
该模块实际上是一个译码器,译码器是组合逻辑电路的一个重要的器件,该模块中主要实现抢答过程中将BCD码转化成7段数码管的功能。
in4[3..0]为输入信号,out7[6..0]为输出信号。
译码显示模块设计图如图7所示,其VHDL源程序见附录D。
图7译码显示模块设计图
3.4.2译码显示模块的时序仿真图
如图8,为抢答器的译码显示模块的时序仿真图。
当输入0001,输出0000110,即在共阴极数码管上显示1;即显示A组抢答成功。
当输入0010,输出1011011,即在共阴极数码管上显示2;即显示B组抢答成功。
当输入0011,输出1001111,即在共阴极数码管上显示3;即显示C组抢答成功。
当输入0100,输出1100110,即在共阴极数码管上显示4;即显示D组抢答成功。
图8译码显示模块的时序仿真图
3.5抢答器的犯规模块设计
3.5.1犯规模块的功能
该模块主要实现抢答过程中的报警功能,当主持人按下控制键,在有限的时间内,没有人抢答或是主持人未按下控制按钮就抢答时开始报警,计数开始状态start,计数输入信号a、b、c、d以及状态输出信号y。
犯规模块设计图如图9所示,其VHDL源程序见附录E。
图9犯规模块设计图
3.5.2犯规模块的时序仿真图
如图10,为抢答器的犯规模块的时序仿真图。
如图,当B组有人在未允许抢答之前抢答,其输出报警信号y为高电平。
图10犯规模块的时序仿真图
4抢答器的顶层原理图设计
4.1顶层原理图的源文件
单独模块只有彼此联系起来构成一个完整的系统,才能实现其功能,这个过程有两种实现方法:
元件例化和元器件图示连线。
为了能直观的表示各模块之间的连接关系。
我采用元器件图示连线,这种连线方法思路清晰可见,而且用的时候很简单方便,即使出现错误也很好检查。
按照要求,我们可以将整个系统分为五个主要模块:
抢答鉴别模块;抢答计时模块;抢答计分模块;译码显示模块和犯规模块。
对于需显示的信息,需要增加或外接译码器,进行显示译码。
考虑到实验开发平台提供的输出显示资源的限制,我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。
整个系统的总的顶层设计图如图11所示。
图11抢答器总的顶层设计图
4.2顶层设计的时序仿真图
如图12,为抢答器的顶层设计的时序仿真图。
从仿真图中可以看出,当允许答题后,四组(A、B、C、D)任意一组抢答时,在规定的时间抢答成功,即该组就加分。
图中A组,抢答成功加分一次,LED[0]被点亮,其SCOREA加1。
译码显示模块(YMSC)显示对应组号(0000110),即为1。
B组抢答成功两次,LED[1]被点亮,其SCOREA加2。
译码显示模块(YMSC)显示对应组号(1011011),即为2。
D组抢答成功三次,LED[3]被点亮,其SCOREA加3。
译码显示模块(YMSC)显示对应组号(1111111),即为8。
图12顶层设计的时序仿真图
结束语
本次的EDA课程设计虽然只有短暂的一周时间,但是通过实践,使我对EDA技术有了更进一步的了解。
同时,大致懂得了一个课题制作的具体流程和实施方法。
另外,课程设计对QuartusⅡ软件的使用要求较高,从而使我能较为熟练的运用此软件。
在设计时,采用模块化的设计思路使得问题变的简单明了,大大缩短了时间,降低了发生错误的机侓,也便于修改和更新。
课程设计中,需要找很多资料,在当今的信息化环境中,虽然资料很多,但需要仔细斟酌才能找到所要的。
这次的课程设计很好的锻炼了这种能力。
此外,与同学和老师的交流必不可少,我从中也学到了不少东西。
课程设计是一次很好的锻炼机会,我从中学的很多知识对将来的学习和工作都有很大的帮助,十分感谢学校能提供这样一个机会。
参考文献
[1]潘松,黄继业.EDA技术与VHDL[M](第2版).北京:
清华大学出版社,2007
[2]曹昕燕,周凤臣,聂春燕,EDA技术实验与课程设计[M].北京:
清华大学出版社,2006
[3]潘松,黄继业.EDA技术实用教程-VHDL版[M](第四版).北京:
科学出版社,2010
[4]杭州康芯电子有限公司GW48-PK3实验系统说明书.杭州康芯电子有限公司,2006
[5]姜雪松,吴钰淳.VHDL设计实例与仿真[M].机械工业出版社,2007
[6]李伟英,谢完成.基于EDA技术的抢答器的设计与实现[J].科学技术与实现,2008.8(11)
致谢
在这次设计中,我花了不少的时间,其中有苦也有乐。
苦的是我付出了不少的汗水,乐的是在付出的过程中我得到了许多,也学会了许多。
因为一个人的能力毕竟有限,在设计方面难免会出现这样或那样的错误,但正是这些促进了我的进步。
根据对整体结构的分析,我采用层次结构化的设计概念,将此项设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试,这就培养了我对层次化设计的概念。
在此次课程设计中,我真正体会到了知识地重要性。
在设计的过程中,遇到问题我会先独立思考,到自己不能解决的时候我就会和同学讨论,实在解决不了就向老师请教,应该说从功能的实现到流程图的绘制,从程序的编写到程序的检查,从程序的调试到文档的书写,其间每一个过程都凝集着大家对我的支持。
最后,在设计的过程中我进一步养成了软件设计的方法,完成了一个项目的程序编写,进一步了解了设计的步骤,也进一步加深了对课程的理解,增强了对本课程的兴趣,为以后的工作积累了一定的经验,在这次课程设计中,非常感谢王晓丽老师为我疑难解惑,也感谢同学们对我的帮助。
附录
附录A抢答鉴别模块VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityQIANGDAis
port(CLR,CLK:
instd_logic;
A,B,C,D:
instd_logic;
states:
bufferstd_logic_vector(3downto0);
LED:
bufferstd_logic_vector(3downto0);
warm:
outstd_logic);
endentityQIANGDA;
architectureartofQIANGDAis
signalQ:
std_logic_vector(3downto0);
begin
p1:
process(A,B,C,D,CLR,CLK)
begin
ifCLR='1'then
warm<='0';Q<="0000";
elsifCLK'eventandCLK='1'then
if(A='1'orQ(0)='1')andnot(Q
(1)='1'orQ
(2)='1'orQ(3)='1')thenQ(0)<='1';
endif;
if(B='1'orQ
(1)='1')andnot(Q(0)='1'orQ
(2)='1'orQ(3)='1')thenQ
(1)<='1';
endif;
if(C='1'orQ
(2)='1')andnot(Q(0)='1'orQ
(1)='1'orQ(3)='1')thenQ
(2)<='1';
endif;
if(D='1'orQ(3)='1')andnot(Q(0)='1'orQ
(1)='1'orQ
(2)='1')thenQ(3)<='1';
endif;
warm<=Q(0)orQ
(1)orQ
(2)orQ(3);
endif;
endprocessp1;
p2:
process(states(0),states
(1),states
(2),states(3),LED)
begin
if(Q="0000")thenstates<="0000";
elsif(Q="0001")thenstates<="0001";
elsif(Q="0010")thenstates<="0010";
elsif(Q="0100")thenstates<="0100";
elsif(Q="1000")thenstates<="1000";
endif;
LED<=Q;
endprocessp2;
endart;
附录B计时模块VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityJISHIis
port(clr,ldn,en,clk:
instd_logic;
ta,tb:
instd_logic;
qa:
outstd_logic_vector(3downto0);
qb:
outstd_logic_vector(3downto0));
endentityJISHI;
architectureartofJISHIis
signalda:
std_logic_vector(3downto0);
signaldb:
std_logic_vector(3downto0);
begin
process(ta,clr)is
begin
if(clr='1')then
da<="1001";
elsif(ta'eventandta='1')then
if(ldn='1')then
if(da="0000")then
da<="1001";
else
da<=da-1;
endif;
endif;
endif;
endprocess;
process(tb,clr)is
begin
if(clr='1')then
db<="0101";
elsif(tb'eventandtb='1')then
if(ldn='1')then
ifdb="0000"then
db<="1001";
else
db<=db-1;
endif;
endif;
endif;
endprocess;
process(clk)is
variabletmpa:
std_logic_vector(3downto0);
variabletmpb:
std_logic_vector(3downto0);
begin
if(clr='1')then
tmpa:
="0000";
tmpb:
="0000";
elsifclk'eventandclk='1'then
ifen='1'then
tmpa:
=da;
tmpb:
=db;
elsiftmpa="0000"then
iftmpb="0000"then
tmpa:
="0000";
else
tmpa:
="1001";
endif;
iftmpb="0000"then
tmpb:
="0000";
else
tmpb:
=tmpb-1;
endif;
else
tmpa:
=tmpa-1;
endif;
endif;
qa<=tmpa;
qb<=tmpb;
endprocess;
endarchitectureart;
附录C计分模块VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityJIFENis
port(ADD:
instd_logic;
CHOSE:
instd_logic_vector(3downto0);
A2,A1,A0:
OUTstd_logic_vector(3downto0);
B2,B1,B0:
OUTstd_logic_vector(3downto0);
C2,C1,C0:
OUTstd_logic_vector(3downto0);
D2,D1,D0:
OUTstd_logic_vector(3downto0));
ENDJIFEN;
ARCHITECTURErtlOFJIFENIS
BEGIN
PROCESS(ADD,CHOSE)
VARIABLEPOINTS_A2,POINTS_A1:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEPOINTS_B2,POINTS_B1:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEPOINTS_C2,POINTS_C1:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEPOINTS_D2,POINTS_D1:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFADD'EVENTANDADD='1'THEN
IFCHOSE="0001"THEN
IFPOINTS_A1="1001"THENPOINTS_A1:
="0000";
IFPOINTS_A2="1001"THENPOINTS_A2:
="0000";
ELSEPOINTS_A2:
=POINTS_A2+'1';
ENDIF;
ELSE
POINTS_A1:
=POINTS_A1+'1';
ENDIF;
ELSIFCHOSE="0010"THEN
IFPOINTS_B1="1001"THENPOINTS_B1:
="0000";
IFPOINTS_B2="1001"THENPOINTS_B2:
="0000";
ELSE
POINTS_B2:
=POINTS_B2+'1';
ENDIF;
ELSE
POINTS_B1:
=POINTS_B1+'1';
ENDIF;
ELSIFCHOSE="0100"THEN
IFPOINTS_C1="1001"THENPOINTS_C1:
="0000";
IFPOINTS_C2="1001"THENPOINTS_C2:
="0000";
ELSE
POINTS_C2:
=POINTS_C2+'1';
ENDIF;
ELSE
POINTS_C1:
=POINTS_C1+'1';
ENDIF;
ELSIFCHOSE="1000"THEN
IFPOINTS_D1="1001"THENPOINTS_D1:
="0000";
IFPOINTS_D2="1001"THENPOINTS_D2:
="0000";
ELSEPOINTS_D2:
=POINTS_D2+'1';
ENDIF;
ELSE
POINT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字式 竞赛 抢答 说明书