数字竞赛抢答器.docx
- 文档编号:6289610
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:24
- 大小:121.28KB
数字竞赛抢答器.docx
《数字竞赛抢答器.docx》由会员分享,可在线阅读,更多相关《数字竞赛抢答器.docx(24页珍藏版)》请在冰豆网上搜索。
数字竞赛抢答器
长沙学院
课程设计说明书
题目数字竞赛抢答器的设计
系(部)电子与通信工程系
专业电气工程及其自动化
班级一班
姓名卢玉芳
学号2009042124
指导教师瞿瞾谢明华
起止日期2011-12-19至1-1
EDA技术课程设计任务书
系(部):
电子与通信工程系专业:
电气工程及其自动化指导教师:
谢明华
课题名称
数字竞赛抢答器的设计
设计内容及要求
(1)课题内容:
1、设计一个可容纳3组参赛的数字式抢答器,每组设一个按钮,供抢答使用。
2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
3、设置一个主持人“复位”按钮。
4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出1秒的音响。
5、设置一个计分电路,每组开始预置10分,由主持人记分,答对一次加1分,答错一次减1分。
要求进行按键防抖动设计。
(2)主要任务:
完成该系统的硬件和软件的设计,并制作出实物装置,调试好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提交一篇课程设计说明书。
设计工作量
1、VHDL语言程序设计;
2、波形仿真;
3、在实验装置上进行硬件测试,并进行演示;
4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、硬件测试、调试过程,参考文献、设计总结等。
进度安排
起止日期(或时间量)
设计内容(或预期目标)
备注
第1天
课题介绍,答疑,收集材料
第2天
设计方案论证
第3天
进一步讨论方案,对设计方案进行必要的修正,方案确定后开始进行VHDL语言程序设计
第4天
设计VHDL语言程序
第5~9天
在实验装置上进行硬件测试,对VHDL语言程序进行必要的修正,并进行演示
教研室
意见
年月日
系(部)主管领导意见
年月日
长沙学院课程设计鉴定表
姓名
卢玉芳
学号
2009042124
专业
电气工程及其自动化
班级
一班
设计题目
数字竞赛抢答器
指导教师
谢明华
指导教师意见:
评定等级:
教师签名:
日期:
答辩小组意见:
评定等级:
答辩小组长签名:
日期:
教研室意见:
教研室主任签名:
日期:
系(部)意见:
系主任签名:
日期:
说明
课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;
一.总体设计思想………………………………5
二.设计步骤和调试过程……………………………5
1.抢答器鉴别锁存模块…………………………5
2.抢答器计分模块………………………………6
3.蜂鸣模块………………………………………9
4.译码模块………………………………………9
5.动态扫描模块…………………………………10
6.总体模块………………………………………11
7.各引脚分配………………………………16
三.仿真及仿真结果分析……………………17
四、结论及心得体会…………………………18
五、参考文献…………………………………19
一、总体设计思想
1.基本要求:
1)、设计一个可容纳3组参赛的数字式抢答器,每组设一个按钮,供抢答使用。
2)、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
3)、设置一个主持人“复位”按钮。
4)、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出1秒的音响。
5)、设置一个计分电路,每组开始预置10分,由主持人记分,答对一次加1分,答错一次减1分。
要求进行按键防抖动设计。
2.基本原理
本设计为三路智能抢答器,所以这种抢答器要求有三路不同组别的抢答输入信号,并能识别最先抢答的信号,直观地通过数显和蜂鸣等方式显示出组别;同时该系统还应有复位、分数置位功能。
抢答过程:
主持人按下系统复位键(RST),系统进入抢答状态,计分模块输出初始信号给数码显示模块并显示出初始值10。
当某参赛组抢先将抢答键按下时,系统将其余两路路抢答信号封锁,同时蜂鸣器发出声音提示,该组对应的指示灯显示信号,从而显示出该抢答成功组,并一直保持到下一轮主持人将系统清零为止。
主持人对抢答结果进行确认,随后,开始回答问题。
根据答题的正误来确定加分或减分,并通过数码显示模块将成绩显示出来。
主持人按下复位键,即RST为高电平有效状态,清除前一次的抢答组别,又可开始新的一轮的抢答。
此抢答器的设计中采用自顶向下的设计思路,运用VHDL硬件描述语言对各个模块进行层次化、系统化的描述,并用多个进程联系起来。
二、设计步骤和调试过程
模块设计和相应模块程序
将该任务分成几个模块进行设计,分别为:
抢答器鉴别锁存模块、抢答器计分模块、蜂鸣模块、译码模块、动态扫描模块,最后是撰写顶层文件。
抢答器鉴别锁存模块:
抢答器鉴别模块在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余过滤抢答封锁的功能。
其中有三个抢答信号A1,B1,C1;抢答状态显示信号states;系统复位信号en。
VHDL源程序
1.抢答器鉴别锁存模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYQDJBIS
PORT(en:
INSTD_LOGIC;
A,B,C:
INSTD_LOGIC;--3个组
A1,B1,C1:
OUTSTD_LOGIC;
STATES:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDENTITYQDJB;
ARCHITECTUREARTOFQDJBIS
signala_1,b_1,c_1:
std_logic;
BEGIN
PROCESS(CLR,A,B,C)IS
BEGIN
IFen='1'THENSTATES<="0000";a_1<='0';b_1<='0';c_1<='0';--清零
elsifa_1='1'orb_1='1'orc_1='1'thennull;--锁存
elsifa='1'thena_1<='1';states<="001";
elsifb='1'thenb_1<='1';states<="010";
elsifc='1'thenc_1<='1';states<="100";
endif;
a1<=a_1;b1<=b_1;c1<=c_1;
ENDPROCESS;
ENDARCHITECTUREART;
2.抢答器计分模块:
在这个模块中主要实现抢答过程中的加减情况,首先将分数显示复位,即均为10,主持人根据选手答题情况,若选手回答正确则进行加分,即按定加分按钮为ADD;若选手回答错误则进行减分,即按定减分按钮为SUB,选择端为CHOS,用来判定系统是进行加分还是进行减分;输出到计分显示模块的信号为AA,BB,CC。
由于存在按键抖动情况,程序设置了一个JIFEN键,在JIFEN为高电平时,在进行加减分的按键,按键抖动基本平稳,但仍然还存在少许;
VHDL源程序
P_A:
PROCESS(ADD,CHOS)IS
VARIABLEPOINTS_A2:
STD_LOGIC_VECTOR(3DOWNTO0):
="0001";
VARIABLEPOINTS_A1:
STD_LOGIC_VECTOR(3DOWNTO0):
="0000";
VARIABLEPOINTS_B2:
STD_LOGIC_VECTOR(3DOWNTO0):
="0001";
VARIABLEPOINTS_B1:
STD_LOGIC_VECTOR(3DOWNTO0):
="0000";
VARIABLEPOINTS_C2:
STD_LOGIC_VECTOR(3DOWNTO0):
="0001";
VARIABLEPOINTS_C1:
STD_LOGIC_VECTOR(3DOWNTO0):
="0000";
BEGIN
IF(ADD'EVENTANDADD='1')THEN
IFJIFEN=’1’THEN
IFCHOS="001"THEN
IFPOINTS_A1="1001"THEN
POINTS_A1:
="0000";
IFPOINTS_A2="1001"THEN
POINTS_A2:
="0000";
ELSE
POINTS_A2:
=POINTS_A2+1;
ENDIF;
ELSE
POINTS_A1:
=POINTS_A1+1;
ENDIF;
ENDIF;
IFJIFEN=’1’THEN
IFCHOS="010"THEN
IFPOINTS_B1="1001"THEN
POINTS_B1:
="0000";
IFPOINTS_B2="1001"THEN
POINTS_B2:
="0000";
ELSE
POINTS_B2:
=POINTS_B2+1;
ENDIF;
ELSE
POINTS_B1:
=POINTS_B1+1;
ENDIF;
ENDIF;
IFJIFEN=’1’THEN
IFCHOS="100"THEN
IFPOINTS_C1="1001"THEN
POINTS_C1:
="0000";
IFPOINTS_C2="1001"THEN
POINTS_C2:
="0000";
ELSE
POINTS_C2:
=POINTS_C2+1;
ENDIF;
ELSE
POINTS_C1:
=POINTS_C1+1;
ENDIF;
ENDIF;
endif;
AA2<=POINTS_A2;AA1<=POINTS_A1;
BB2<=POINTS_B2;BB1<=POINTS_B1;
CC2<=POINTS_C2;CC1<=POINTS_C1;
ENDPROCESSP_A;
P_B:
PROCESS(SUB,CHOS)IS
VARIABLEPOINTS_D2:
STD_LOGIC_VECTOR(3DOWNTO0):
="0001";
VARIABLEPOINTS_D1:
STD_LOGIC_VECTOR(3DOWNTO0):
="0000";
VARIABLEPOINTS_E2:
STD_LOGIC_VECTOR(3DOWNTO0):
="0001";
VARIABLEPOINTS_E1:
STD_LOGIC_VECTOR(3DOWNTO0):
="0000";
VARIABLEPOINTS_F2:
STD_LOGIC_VECTOR(3DOWNTO0):
="0001";
VARIABLEPOINTS_F1:
STD_LOGIC_VECTOR(3DOWNTO0):
="0000";
BEGIN
IF(SUB'EVENTANDSUB='1')THEN
IFJIFEN=’1’THEN
IFCHOS="001"THEN
IFPOINTS_D1="0000"THEN
POINTS_D1:
="1001";
IFPOINTS_D2="0000"THEN
POINTS_D2:
="1001";
ELSE
POINTS_D2:
=POINTS_D2-1;
ENDIF;
ELSE
POINTS_D1:
=POINTS_D1-1;
ENDIF;
ENDIF;
IFJIFEN=’1’THEN
IFCHOS="010"THEN
IFPOINTS_E1="0000"THEN
POINTS_E1:
="1001";
IFPOINTS_E2="0000"THEN
POINTS_E2:
="1001";
ELSE
POINTS_E2:
=POINTS_E2-1;
ENDIF;
ELSE
POINTS_E1:
=POINTS_E1-1;
ENDIF;
ENDIF;
IFJIFEN=’1’THEN
IFCHOS="100"THEN
IFPOINTS_F1="0000"THEN
POINTS_F1:
="1001";
IFPOINTS_F2="0000"THEN
POINTS_F2:
="1001";
ELSE
POINTS_F2:
=POINTS_F2-1;
ENDIF;
ELSE
POINTS_F1:
=POINTS_F1-1;
ENDIF;
ENDIF;
ENDIF;
DD2<=POINTS_D2;DD1<=POINTS_D1;
EE2<=POINTS_E2;EE1<=POINTS_E1;
FF2<=POINTS_F2;FF1<=POINTS_F1;
ENDPROCESSP_B;
ENDARCHITECTUREART;
3.蜂鸣模块:
在这个模块中主要实现抢答过程中的蜂鸣功能,当抢答者按下抢答键时,除了指示灯显示意外,同时蜂鸣器蜂鸣1秒。
此模块就是运用分频信号来控制蜂鸣器,已达到蜂鸣一秒的实验效果。
当抢答结束时,蜂鸣器停止发声。
process(clk,op)--fengming
begin
ifclk'eventandclk='1'then
ifop=25000000then
op<=0;
clk2<=notclk2;
elseop<=op+1;
endif;
endif;
endprocess;
process(clk0)
begin
ifclk0'eventandclk0='1'then
ifp=5then
p<=0;
elsep<=p+1;
endif;
endif;
endprocess;
4.译码模块:
在这个模块中主要实现抢答过程中将BCD码转换成7段现实数码管的功能。
VHDL源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYYMQIS
PORT(AIN4:
INSTD_LOGIC_VECTOR(3DOWNTO0);
DOUT7:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDYMQ;
ARCHITECTUREARTOFYMQIS
BEGIN
PROCESS(AIN4)
BEGIN
CASEAIN4IS
WHEN"0000"=>DOUT7<="1111110";--0
WHEN"0001"=>DOUT7<="0110000";--1
WHEN"0010"=>DOUT7<="1101101";--2
WHEN"0011"=>DOUT7<="1111001";--3
WHEN"0100"=>DOUT7<="0110011";--4
WHEN"0101"=>DOUT7<="1011011";--5
WHEN"0110"=>DOUT7<="1011111";--6
WHEN"0111"=>DOUT7<="1110000";--7
WHEN"1000"=>DOUT7<="1111111";--8
WHEN"1001"=>DOUT7<="1111011";--9
WHENOTHERS=>DOUT7<="0000000";
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREART;
波形显示如下:
5.动态扫描模块:
动态显示是将所有显示数据的BCD码按照一定的顺序和变化频率送到公用数据总线上,在通过一个公用的显示译码器译码后,接到数码管的驱动端。
这里是将A,B,C三位选手的回答成绩,即分数显示在数码管上。
硬件测试时,第一二个数码管显示的是A组抢答所得的分数;第三四个数码管显示的是B组抢答所得的分数;第五六个数码管显示的是C组抢答所得的分数。
第七八个数码管灭,不运用到试验中。
VHDL源程序
begin---saomiaoxianshi
process(clk)
begin
ifclk'eventandclk='1'then
ifcnter=25000000thencnter<=0;
elsecnter<=cnter+1;
endif;
endif;
endprocess;
process(newclk)
begin
ifcnter=25000000THENnewclk<='1';
elsenewclk<='0';
endif;
ifnewclk'eventandnewclk='1'then
IFcdi<7thencdi<=cdi+'1';
elsecdi<=(others=>'0');
endif;
endif;
endprocess;
process(cdi)
begin
casecdiis
when"000"=>led_selout<="00000001";
when"001"=>led_selout<="00000010";
when"010"=>led_selout<="00000100";
when"011"=>led_selout<="00001000";
when"100"=>led_selout<="00010000";
when"101"=>led_selout<="00100000";
when"110"=>led_selout<="01000000";
when"111"=>led_selout<="10000000";
endcase;
endprocess;
process(p)
begin
casepis
When"0000"=>led7s<="1000000";
When"0001"=>led7s<="1111001";
When"0010"=>led7s<="0100100";
When"0011"=>led7s<="0110000";
When"0100"=>led7s<="0011001";
When"0101"=>led7s<="0010010";
When"0110"=>led7s<="0000010";
When"0111"=>led7s<="1111000";
When"1000"=>led7s<="0000000";
When"1001"=>led7s<="0010000";
whenothers=>null;
endcase;
endprocess;
6.采用自顶向下的设计思路,运用VHDL硬件描述语言对各个模块进行层次化、系统化的描述,并用多个进程联系起来。
综合以上模块,数字竞赛抢答器的总程序如下所示:
本程序以一个总的源体文件自顶向下,将上面的模块以进程的方式有顺序的插入,得到以下结果。
libraryieee;
useieee.std_logic_1164.all;
entityqiangdaqiis
port(clk:
instd_logic;
rst,en:
instd_logic;
JIFEN:
instd_logic;
A,B,C:
instd_logic;
SUB,ADD:
instd_logic;
CHOS:
instd_logic_vector(2downto0);
ring:
outstd_logic;
led_selout:
outstd_logic_vector(7downto0);
led7s:
outstd_logic_vector(6downto0));
endentityqiangdaqi;
architectureartofqiangdaqiis
signalnum:
integerrange0to50000000;
signala_1,b_1,c_1:
std_logic;
signalqq:
integerrange25000000to0;
signalCdi:
std_logic_vector(2downto0);
signalcnter:
integerrange0to25000000;
signalnewclk:
std_logic;
signalop:
integerrange25000000downto0;
signalp:
integerrange5downto0;
signalclk0,clk1,clk2:
std_logic;
signalen:
std_logic;
signalA1,B1,C1:
std_logic_vector(2downto0);
process(clk,ft)----fenpin;
begin
ifclk'eventandclk='1'then
ifft<25000000then
ft<='0';
else
ft<='1';
endif;
endif;
endprocess;
end;
process(rst,states)----jianbiesuocun;
begin
ifrst='1'thenstates<="0000";a_1<='0';b_1<='0';c_1<='0';--清零
elsifa_1='1'orb_1='1'orc_1='1'thennull;--锁存
elsifa='1'thena_1<='1';states<="001";
elsifb='1'thenb_1<='1';states<="010";
elsifc='1'thenc_1<='1';states<="100";
endif;
a1<=a_1;b1<=b_1;c1<=c_1;
endprocess;
endarchitectureart;
PROCESS(CHOS,ADD,SUB)----jifen;
BEGIN
P_A:
PROCESS(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 竞赛 抢答
![提示](https://static.bdocx.com/images/bang_tan.gif)