用VHDL实现的电子抢答器jsp.docx
- 文档编号:3737789
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:10
- 大小:91.64KB
用VHDL实现的电子抢答器jsp.docx
《用VHDL实现的电子抢答器jsp.docx》由会员分享,可在线阅读,更多相关《用VHDL实现的电子抢答器jsp.docx(10页珍藏版)》请在冰豆网上搜索。
用VHDL实现的电子抢答器jsp
用VHDL实现的电子抢答器
物理系08级电子信息科学与技术专业曾凡宗
合作者:
赵玉龙,张鹏
摘要:
以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以QuartusⅡ开发软件和EDA试验箱为设计工具,阐述了电子抢答器的工作原理和软硬件实现方法。
并对所设计的电子抢答器进行了时序仿真和硬件验证。
关键词:
QuartusⅡ开发软件;时序仿真;EDA
WiththerealizationofVHDLelectronicviestoimplement
Abstract:
basedonfieldprogrammablelogicdevices(FPGA)forthedesignofthecarrier,withVHDLformainlyexpresswaytoQuartusⅡdevelopmentsoftwareandEDAtestcasesfordesigntools,thispaperexpoundstheworkingprincipleofelectronicscare-answeringdeviceanditshardwareandsoftwareimplementation.AndthedesignofelectronictiKeywords:
QuartusⅡdevelopmentsoftware,timing,EDAsimulationmingresponderusedtocarryoutsimulationandhardwarevalidation
0引言
数字抢答器控制系统在现今许多工厂、学校和电视台等单位所举办的各种知识竞赛中起着不可替代的作用。
基于EDA技术设计的电子抢答器,以其价格便宜、安全可靠、使用方便而受到了人们的普遍欢迎。
本文以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言VHDL为主要表达方式,以OuartusⅡ开发软件为设计工具设计的电子抢答器,具有抢答鉴别与锁存功能以及答题限时功能、对抢答犯规的小组进行警告和对各抢答小组进行相应的成绩操作等功能。
1电子抢答器的工作原理分析
1.1流程图
如图1所示。
、
图1电子抢答器功能流程图
1.2电子抢答器的功能设计
该电子抢答器实现的功能主要包括四项操作:
(1)第一抢答信号的鉴别和锁存
该电子抢答器共设4个组别,每组控制一个抢答开关,分别为keyin[0],keyin[1],keyin[2],keyin[3]。
在主持人发出抢答指令后,若有参赛者按抢答器按钮,则该组指示灯亮,同时显示器显示出抢答者的组别。
同时,电路处于自锁状态,以使其他组的抢答器按钮不起作用。
(2)计时功能
在初始状态时。
主持人可以设置答题时间的初时值。
在主持人对抢答组别进行确认,并给出倒计时计数开始信号以后,抢答者便可开始回答问题。
此时,显示器从初始值开始倒计时,计至0时停止计数,同时扬声器发出超时报警信号。
若参赛者在规定的时间内回答完问题,主持人即可给出计时停止信号,以免扬声器鸣叫。
(3)计分功能
在初始状态时,各组分数均为零。
每组抢答完后,由主持人打分,答对一次加1分,答错不加分
2抢答器VHDL设计
2.1抢答器模块的设计
当主持人按下start开关后,四个队开始抢答,指示灯keyout[0],keyout[1],keyout[2],keyout[3]中代表该队的亮起。
该模块的源程序
IFstart='1'THEN
CASEkeyinIS
WHEN"0001"=>keyout<="0001";
WHEN"0010"=>keyout<="0010";
WHEN"0100"=>keyout<="0100";
WHEN"1000"=>keyout<="1000";
WHENOTHERS=>keyout<="0000";
ENDCASE;
时序仿真图如图2
图2抢答器模块时序图
通过图1可看到在start=1时当第一组按下开关keyin[0]后,该组的指示灯keyout[0]被点亮,可见抢答器模块的功能设计正确。
2.2计时器模块的设计
主要功能是用来对答题限时。
当倒计时时间计为0时,系统将输出报警信号,蜂鸣器响起。
该计时器应具有异步清零的功能,假设设定的初始倒计时时间为9s,在rst=0,start=1的情况下开始倒计时,在时间回到零之前回答完问题,主持人按下复位键即rst=1。
当时间回到零没回答完问题,则beep=1,蜂鸣器响起。
该模块的源程序如下
two:
PROCESS(clk,rst,start)
VARIABLECQ1:
INTEGERRANGE20DOWNTO0;
BEGIN
beep<='0';
IFrst='1'THENCQ2<="1001";CQ1:
=0;
ELSIFclk'eventandclk='1'THEN
IFstart='1'THEN
IFCQ1<10THENCQ1:
=CQ1+1;
ELSE
CQ1:
=0;CQ2<=CQ2-1;
ENDIF;
IFCQ2>"1001"THENCQ2<="1001";
ENDIF;
ENDIF;
ENDIF;
IFCQ2="0000"THENbeep<='1';
ENDIF;
CASECQ2IS
WHEN"0000"=>display<="0111111";
WHEN"0001"=>display<="0000110";
WHEN"0010"=>display<="1011011";
WHEN"0011"=>display<="1001111";
WHEN"0100"=>display<="1100110";
WHEN"0101"=>display<="1101101";
WHEN"0110"=>display<="1111101";
WHEN"0111"=>display<="0000111";
WHEN"1000"=>display<="1111111";
WHEN"1001"=>display<="1101111";
WHENOTHERS=>display<="0111111";
ENDCASE;
ENDPROCESStwo;
时序仿真图如图3.
图3计时器模块的时序仿真图
通过图2可看出,在start=1时,共阴极代码从9~0变化,当变化到0的代码3F时,beep=1,蜂鸣器响起。
当rst=1时,数码管上一直显示9的共阴极代码6F,可见计时器功能设计正确。
2.3计分模块
若某队在规定的时间内正确回答完问题,则有主持人按下计分键出现一个上升沿该队分数加一分。
该模块的源程序如下
IF(count'eventandcount='1')THEN
CASEkeyinIS
WHEN"0001"=>jifen1<=jifen1+1;
WHEN"0010"=>jifen2<=jifen2+1;
WHEN"0100"=>jifen3<=jifen3+1;
WHEN"1000"=>jifen4<=jifen4+1;
WHENOTHERS=>NULL;
ENDCASE;
ENDIF;
时序仿真图如图4
图4计分器的时序仿真图
通过图4可以看出,在第一组(keyin=0001)回答完问题后检测到count的上升沿,jifen1加一即有0000~0001,可见计分模块设计成功。
2.5全局时序仿真图
如图5所示。
图5全局时序仿真图
4结束语
本文以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以QuartusⅡ开发软件为设计工具设计了一种具有第一抢答信号鉴别和锁存、计时和计分,并可对超时抢答进行蜂鸣警示等功能的电子抢答器。
阐述了电子抢答器的工作原理和软硬件实现方法。
并对电子抢答器的各部分模块进行了时序仿真和硬件验证,结果表明,该电路能够实现其所要求的功能。
另外,由于FPGA芯片体积小,功耗低,价格便宜,安全可靠,稍加修改就可以改变抢答器的抢答组别数,而且抢答时间设定和成绩组成方式以及维护和升级都比较方便,同时也很容易做成ASIC芯片,因而具有较好的应用前景。
参考文献
【1】EDA技术使用教程(第三版)潘松黄继业著科技出版社
【2】CPLD系统设计技术入门与应用黄正谨徐坚著电子工业出版社
【3】可编程ASIC集成数字系统孟宪元电子工业出版社
【4】电子设计自动化(EDA)教程王锁萍成都电子科技大学出版社
附:
源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYanswerIS
PORT(keyin:
INSTD_LOGIC_VECTOR(3DOWNTO0);
clk:
INSTD_LOGIC;
start:
INSTD_LOGIC;
rst:
INSTD_LOGIC;
count:
INSTD_LOGIC;
keyout:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
beep:
OUTSTD_LOGIC;
jifen1:
BUFFERINTEGERRANGE10DOWNTO0;
jifen2:
BUFFERINTEGERRANGE10DOWNTO0;
jifen3:
BUFFERINTEGERRANGE10DOWNTO0;
jifen4:
BUFFERINTEGERRANGE10DOWNTO0;
display:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDanswer;
ARCHITECTUREcoutOFanswerIS
SIGNALCQ2:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
one:
PROCESS(clk,count)
BEGIN
IFstart='1'THEN
CASEkeyinIS
WHEN"0001"=>keyout<="0001";
WHEN"0010"=>keyout<="0010";
WHEN"0100"=>keyout<="0100";
WHEN"1000"=>keyout<="1000";
WHENOTHERS=>keyout<="0000";
ENDCASE;
IF(count'eventandcount='1')THEN
CASEkeyinIS
WHEN"0001"=>jifen1<=jifen1+1;
WHEN"0010"=>jifen2<=jifen2+1;
WHEN"0100"=>jifen3<=jifen3+1;
WHEN"1000"=>jifen4<=jifen4+1;
WHENOTHERS=>NULL;
ENDCASE;
ENDIF;
ENDIF;
ENDPROCESSone;
two:
PROCESS(clk,rst,start)
VARIABLECQ1:
INTEGERRANGE20DOWNTO0;
BEGIN
beep<='0';
IFrst='1'THENCQ2<="1001";CQ1:
=0;
ELSIFclk'eventandclk='1'THEN
IFstart='1'THEN
IFCQ1<10THENCQ1:
=CQ1+1;
ELSE
CQ1:
=0;CQ2<=CQ2-1;
ENDIF;
IFCQ2>"1001"THENCQ2<="1001";
ENDIF;
ENDIF;
ENDIF;
IFCQ2="0000"THENbeep<='1';
ENDIF;
CASECQ2IS
WHEN"0000"=>display<="0111111";
WHEN"0001"=>display<="0000110";
WHEN"0010"=>display<="1011011";
WHEN"0011"=>display<="1001111";
WHEN"0100"=>display<="1100110";
WHEN"0101"=>display<="1101101";
WHEN"0110"=>display<="1111101";
WHEN"0111"=>display<="0000111";
WHEN"1000"=>display<="1111111";
WHEN"1001"=>display<="1101111";
WHENOTHERS=>display<="0111111";
ENDCASE;
ENDPROCESStwo;
ENDcout;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 实现 电子 抢答 jsp