EDA 抢答器.docx
- 文档编号:27914875
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:18
- 大小:104.98KB
EDA 抢答器.docx
《EDA 抢答器.docx》由会员分享,可在线阅读,更多相关《EDA 抢答器.docx(18页珍藏版)》请在冰豆网上搜索。
EDA抢答器
信息工程学院
EDA课程设计报告书
题目:
六人抢答器
专业:
电子信息
班级:
学号:
学生姓名:
指导教师:
2012年5月8日
信息工程学院课程设计任务书
学生姓名
学号
成绩
设计题目
六人抢答器
设
计
内
容
抢答器在各类竞赛性质的场合得到了广泛的应用,它的出现,消除了原来
由于人眼的误差而未能正确判断最先抢答的人的情况。
抢答器的原理比较简单,首先必须设置一个抢答允许标志位,目的就是为了允许或者禁止抢答者按按钮;如果抢答允许位有效,那么第一个抢答者按下的按钮就将其清楚,同时记录按钮的序号,也就是对应的按按钮的人,这样做的目的是为了禁止后面再有人按下按钮的情况。
总的说来,抢答器的实现就是在抢答允许位有效后,第一个按下按钮的人将其清除以禁止再有按钮按下,同时记录清楚抢答允许位的按钮的序号并显示出来,这就是抢答器的实现原理。
同时,在选手没有按下任何的按键时,要在led数码管上显示出倒计时来提醒选手。
一旦有选手按下按键或者是主持人认为有必要停止倒计时时,数码管就会立即停止计数,在没有任何操作的情况下,倒计时在小于5秒时就会闪烁led灯,提醒选手时间快到了。
设
计
要
求
1.实现60秒倒计时。
主持人按下按键后,选手的六个按键没有封闭,选手们的灯都是灭的。
2.当有一位选手按下相应的按键后抢答后,要在第一二位的数码管上的倒计时停止,第四位数码管上显示出该选手的号码,并亮相应的led。
3.一旦有选手按下按键后,其他选手的按键处于高阻状态,不能被检测出来。
主持人的按键具有复位的功能。
参
考
资
料
1.李国丽,朱维勇。
电子技术试验指导书。
合肥:
中国科技大学出版社,2000
2.张昌凡,龙永红,彭涛。
可编程逻辑器件及VHDL设计技术,广州:
华南工学院出版社,2001
3.张明,verilogHDL实用教程。
成都:
电子科技大学出版社,1999
4.彭介华,电子技术课程设计指导。
北京,高等教育出版社,1997
摘要
抢答器作为一种工具,已经广泛运用于机关学校、电视台等单位,是开展智力竞赛活动必不可少的设备,通过抢答者的按键,数码显示等能准确公正直观的判断出优先抢答者,本设计采用了数字显示器直接指示,以六路智能抢答器为基本概念,从实际运用出发,利用电子设计自动化技术,在eda实验平台上得到了很好的实现。
本实验除了能显示出优先抢答者的号码外,还能进行60秒倒计时。
当主持人按下开始按键后,数码管能正确的显示时间,选手按键是利用软按键作为输入信号,检测到选手按键后,倒计时停止,封闭其他的选手按键,显示出优先抢答选手的号码。
若倒计时正确显示,60秒倒计时到了后,计时就不会自动复位,显示为00,等待主持人按复位键。
关键字:
led数码管倒计时抢答器eda
Abstract
Viestoanswerfirstdeviceasatool,havebeenwidelyusedintheagency/school,televisionstation,isessentialforintelligencecontestofequipment,throughtheviestoanswerfirstthekey,digitaldisplaycanaccuratelyjusticeintuitivetofigureoutthefirstviestoanswerfirst,thisdesignUSESthedigitaldisplaydirectinstructionstoallthebasicconceptforintelligentviestoanswerfirst,fromapracticaluse,basedonelectronicdesignautomationtechnology,intheedaexperimentalplatformareverywellrealize。
Thisexperimentinadditiontoshowthefirstviestoanswerfirstthenumberoutside,alsocan60secondscountdown.Whenhostpressthestartbutton,digitaltubecancorrectdisplaythetime,keyplayersistousesoftkeysasinputsignal,detectplayerafterbuttons,stopthecountdown,closedtheotherrunnersbuttons,showfirstviestoanswerfirstcontestantnumber.Ifthecountdowndisplaycorrect,60secondsafterthecountdown,timingisnotautomaticreset,andshowto00,waitingforthehostpresstheresetbutton.
Keywords:
ledcountdownViestoanswerfirstdeviceeda
目录
摘要3
一、实验目的4
二、实验原理4
数码管显示的原理4
抢答器的原理5
倒计时显示原理7
三、实验内容与步骤7
四、实验结果8
波形10
五、实验心得与体会10
六、附录12
1、实验目的
1、了解抢答器的工作原理。
2、进一步熟悉用VHDL语言编写驱动七段码管显示的代码。
3、掌握VHDL编写倒计时的能力。
4、掌握VHDL编写中的一些小技巧。
5、掌握EDA开发的基本流程。
2、实验原理
数码管显示的原理:
七段数码管是电子开发过程中常用的输出显示设备。
在实验系统中使用的是两个四位一体、共阴极型七段数码管。
其单个静态数码管如下图4-1所示。
图4-1静态七段数码管
由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。
反之则不亮。
四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。
八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。
本实验只是用到了前四位的数码管,由硬件的电路模块可以知道,数码管的位选是和一个38译码器连接,所以在选择前四位数码管时,要设定weixuan的值不能大于4,当为000、001、010、011时就分别选中第一、二、三、四数码管,在此基础上,分别在每一位上送出要显示的值。
数码管显示模块的电路原理如图4-2所示,表4-1是其数码管的输入与FPGA的管脚连接表。
图4-2数字时钟信号模块电路原理
信号名称
FPGAI/O名称
核心板接口管脚号
功能说明
Seg[0]
Pin_G16
JP2_46
7-Segdisplay“a”
Seg[1]
Pin_G17
JP2_47
7-Segdisplay“b”
Seg[2]
Pin_F18
JP2_48
7-Segdisplay“c”
Seg[3]
Pin_G18
JP2_49
7-Segdisplay“d”
Seg[4]
Pin_G15
JP2_50
7-Segdisplay“e”
Seg[5]
Pin_G14
JP2_51
7-Segdisplay“f”
Seg[6]
Pin_G12
JP2_53
7-Segdisplay“g”
Seg[7]
Pin_M21
JP2_54
7-Segdisplay“dp”
SEL[0]
Pin_C22
JP2_30
7-SegCOMportsetcle
SEL[1]
Pin_D22
JP2_31
SEL[2]
Pin_G9
JP2_33
表4-1数码管与FPGA的管脚连接表
抢答器的原理:
抢答器在各类竞赛性质的场合得到了广泛的应用,它的出现,消除了原来由于人眼的误差而未能正确判断最先抢答的人的情况。
抢答器的原理比较简单,首先必须设置一个抢答允许标志位,目的就是为了允许或者禁止抢答者按按钮;如果抢答允许位有效,那么第一个抢答者按下的按钮就将其清楚,同时记录按钮的序号,也就是对应的按按钮的人,这样做的目的是为了禁止后面再有人按下按钮的情况。
总的说来,抢答器的实现就是在抢答允许位有效后,第一个按下按钮的人将其清除以禁止再有按钮按下,同时记录清楚抢答允许位的按钮的序号并显示出来,这就是抢答器的实现原理。
本实验是设计的六人抢答器,选用的是前六个按键s1-s6,设置他们的键值分别是1.2.3.4.5.6。
当系统初始化过后,显示00-0,芯片就一直检测是否有选手的按键被按下。
一旦检测到有一个按键按下,就去停止倒计时,在数码管的第四位上现实该选手的号码。
同时还要封锁其他后来选手的按键,此时只有主持人的start按键可以被检测到。
主持人的start按键是s11按键,它的功能是复位,倒计时的初值是60。
按键开关模块的电路原理如图3-3所示,表3-2是按键开关的输出与FPGA的管脚连接表。
图3-3按键开关模块电路原理
管脚图
信号名称
FPGAI/O名称
核心板接口管脚号
功能说明
S[0]
Pin_AF5
JP1_91
‘S1’Switch
S[1]
Pin_AH6
JP1_93
‘S2’Switch
S[2]
Pin_AH7
JP1_95
‘S3’Switch
S[3]
Pin_AH8
JP1_97
‘S4’Switch
S[4]
Pin_AG10
JP1_99
‘S5’Switch
S[5]
Pin_AG11
JP1_101
‘S6’Switch
S[6]
Pin_AH14
JP1_90
‘S7’Switch
S[7]
Pin_AG7
JP1_92
‘S8’Switch
S[8]
Pin_AG8
JP1_94
‘S9’Switch
S[9]
Pin_AF9
JP1_96
‘S10’Switch
S[10]
Pin_AH10
JP1_98
‘S11’Switch
S[11]
Pin_AH11
JP1_100
‘S12’Switch
表3-2按键开关与FPGA的管脚连接表
倒计时显示原理:
倒计时是60秒,时钟脉冲为10khz,用vhdl语言进行分频。
当主持人按下开始按键后,程序的标志位置位为1,程序检测每来一个时钟脉冲就开始从60减一,再进行分位显示出来。
当选手按下按键后,立即清除开始标志位,此时不满足计数条件,倒计时停止计数,显示不变。
整个系统的结构框图如下:
3、实验内容与步骤
本实验的任务是设计一个六人抢答器,用按键模块的S11来作抢答允许按钮,用S1~S6来表示1号抢答者~6号抢答者,同时用LED模块的LED1~LED6分别表示于抢答者对应的位子。
具体要求为:
只要主持人按下按键一次,led数码管立即显示倒计时,这时S1~S6中第一个按下的按键将抢答允许位清除,同时将对应的LED点亮,用来表示对应的按键抢答成功。
数码管的第四位就显示对应抢答成功者的号码,前两位的倒计时时间就会停止。
步骤:
1、打开QUARTUSII软件,新建一个工程。
2、建完工程之后,再新建一个VHDLFile,打开VHDL编辑器对话框。
3、在VHDL编辑器对话框中输入实验的程序,见附录,然后保存文件,注意保存的名字应该与所建的实体一致,否则QUARTUSII软件会报错。
4、对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。
5、编译仿真无误后,依照按键开关、LED、数码管与FPGA的管脚连接表进行管脚分配。
表19-1是示例程序的管脚分配表。
分配完成后,再进行全编译一次,以使管脚分配生效。
实验中要用的部分引脚分别在上面给出过,还有剩下的一部分在这里给出:
端口名
使用模块信号
对应FPGA管脚
说明
CLK
数字信号源
Pin_A14
时钟为12MHZ
SEG_SEL0
JP2_30
位选数码管
SEG_SEL1
JP2_31
SEG_SEL2
JP2_33
Deng5
Pin_L23
Deng6
Pin_H23
表19-1端口管脚分配表
6、用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。
7、观察实验结果是否与自己的编程思想一致。
4、实验结果
把程序下载到eda试验箱后。
数码管的前四位显示00-0,表示还没有开始计时,此时也没有选手号码。
数码管的后四位没有点亮。
当按下s11按键(主持人的start按键),数码管显示为60-0,前两位数码管显示60秒倒计时,由于没有选手按下抢答键,所以第四位的显示为0。
当按下s1-s6的任何一个按键时,倒计时显示停止,第四位数码管显示该选手的号码,如25-5,表示在还有25秒倒计时时,第五位选手按下了按键进行抢答了。
此时,其他选手的按键已经被封闭了,不能再被检测到。
只有当按下s11按键(主持人的start按键)时,上述过程重新出现。
各个部分的仿真波形如下图所示:
选手们的灯(即六个led的波形):
七位数码管的段选波形如下:
四位数码管的位选波形如下:
5、实验心得与体会
通过这次的实验,我自己掌握EDA开发的基本流程,我现在已经能够完全独立的完成从新建工程到下载程序的全部过程。
我这次设计的是一个六人抢答器,其中涉及到倒计时的实现、数码管的点亮、led的闪烁、使能信号的掌握和时钟信号的运用。
使得我明白了VHDL语言编写驱动七段码管显示的代码的原理,虽然与单片机显示的原理是一样的,但选择的方法确实并不一样的。
在试验箱上,连接八位数码管的是三八译码器,所以要通过控制三八译码器的输入就可以任意的选定想要的数码管。
再就是数码管是由abcdefg和dp八段发光二极管连接而成,所以要显示出你想显示的字,就得分别控制每一位的高低电平。
倒计时主要是通过时钟来实现的,让系统随时监测时钟的脉冲个数,通过分频之后,每每到来一次上电平,就把计时初值进行自减运算,再把运算过后的值分为十位和个位在数码管上显示即可。
通过了做这次试验,也让我掌握了软硬按键的区别,之前一直以为都是按键不会有大的差别,知道现在才认识到这个想法的错误性,软键盘按下一次后就得马上释放,所以它的高电平只有一段时间,而硬键盘拨上去后就一直是一个电平状态。
当然,这次的设计芯片让我获益最多的还是程序的编写,vhdl语言是一门很重要的语言,它能直接实现对硬件的编程,这次的设计,倒计时的实现、数码管的点亮以及led灯的随意点亮使得我对它的掌握更加的牢固。
六、附录
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
--------------------------------------------------------------------
entityedais
port(S1,S2,S3,S4,S5,S6:
instd_logic;--输入:
表示6个人
start:
instd_logic;--主持人按键
Dout:
outstd_logic_vector(5downto0);--抢答结果显示
Clk:
instd_logic;--时钟输入
Rst:
instd_logic;--复位输入
Display:
outstd_logic_vector(7downto0);--七段码管显示输出
SEG_SEL:
bufferstd_logic_vector(2downto0)--七段码管扫描驱动
);
endeda;
--------------------------------------------------------------------
architecturebehaveofedais
signalEnable_Flag:
std_logic;--允许抢答控制变量
signalS:
std_logic_vector(5downto0);
signalSEC,SEC1,SEC10:
integerrange0to60;--xinashidaojishi
signalDisp_Decode:
std_logic_vector(7downto0);--duanma
signalClk_Count1:
std_logic_vector(13downto0);--产生1Hz时钟的分频计数器
signalClk1Hz:
std_logic;--1hzmaichong
signalDisp_Temp:
integerrange0to15;--yaoxianshideshu
signalhh:
integerrange0to15;
signalD:
std_logic_vector(5downto0);
begin
process(S1,S2,S3,S4,S5,S6,start)--允许抢答控制
begin
S<=S1&S2&S3&S4&S5&S6;
if(start='0')then
Enable_Flag<='1';
elsif(S/="111111")then
Enable_Flag<='0';
endif;
endprocess;
process(Clk)--chansheng1hzxinhao
begin
if(Clk'eventandClk='1')then
if(Clk_Count1<10000)then
Clk_Count1<=Clk_Count1+1;
else
Clk_Count1<="00000000000001";
endif;
endif;
endprocess;
Clk1Hz<=Clk_Count1(13);
process(Clk)--
begin
if(Clk'eventandClk='1')then--扫描累加
if(SEG_SEL<3)then
SEG_SEL<=SEG_SEL+1;
else
SEG_SEL<="000";
endif;
Display<=Disp_Decode;
endif;
endprocess;
process(Clk1Hz,start,Enable_Flag)--jishikaishi
begin
if(start='0')then--系统复位
SEC<=60;
elsif(Clk1Hz'eventandClk1Hz='1')then--正常运行
if(Enable_Flag='1')then
if(SEC>0)then
SEC<=SEC-1;
SEC1<=SECREM10;
SEC10<=SEC/10;
else
SEC<=0;
SEC1<=SECREM10;
SEC10<=SEC/10;
endif;
endif;
endif;
endprocess;
process(SEG_SEL)--daojishixianshiweixuan
begin
case(SEG_SEL+1)is
when"000"=>Disp_Temp<=sec10;
when"001"=>Disp_Temp<=sec1;
when"010"=>Disp_Temp<=10;
when"011"=>Disp_Temp<=hh;
whenothers=>Disp_Temp<=NULL;
endcase;
endprocess;
process(Disp_Temp)--daojishixianshiduanxuan
begin
caseDisp_Tempis
when0=>Disp_Decode<="00111111";--0
when1=>Disp_Decode<="00000110";--1
when2=>Disp_Decode<="01011011";--2
when3=>Disp_Decode<="01001111";--3
when4=>Disp_Decode<="01100110";--4
when5=>Disp_Decode<="01101101";--5
when6=>Disp_Decode<="01111101";--6
when7=>Disp_Decode<="00000111";--7
when8=>Disp_Decode<="01111111";--8
when9=>Disp_Decode<="01101111";--9
when10=>Disp_Decode<="01000000";---
whenothers=>Disp_Decode<="00111111";--0
endcase;
endprocess;
process(S1,S2,S3,S4,S5,S6,start,Enable_Flag)--抢答结果显示
begin
if(start='0')then
D<="000000";
elsif(Enable_Flag='1')then
if(S1='0')then
D(0)<='1';
elsif(S2='0')then
D
(1)<='1';
elsif(S3='0')then
D
(2)<='1';
elsif(S4='0')then
D(3)<='1';
elsif(S5='0')then
D(4)<='1';
elsif(S6='0')then
D(5)<='1';
endif;
dout<=d;
endif;
--endif;
endprocess;
process(D)--显示抢答成功者号码
begin
caseDis
when"000000"=>hh<=11;
when"000001"=>hh<=1;
when"00
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 抢答器 抢答