基于VHDL的四路抢答器.docx

上传人:b****5 文档编号:3438340 上传时间:2022-11-23 格式:DOCX 页数:12 大小:67.09KB
下载 相关 举报
基于VHDL的四路抢答器.docx_第1页
第1页 / 共12页
基于VHDL的四路抢答器.docx_第2页
第2页 / 共12页
基于VHDL的四路抢答器.docx_第3页
第3页 / 共12页
基于VHDL的四路抢答器.docx_第4页
第4页 / 共12页
基于VHDL的四路抢答器.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于VHDL的四路抢答器.docx

《基于VHDL的四路抢答器.docx》由会员分享,可在线阅读,更多相关《基于VHDL的四路抢答器.docx(12页珍藏版)》请在冰豆网上搜索。

基于VHDL的四路抢答器.docx

基于VHDL的四路抢答器

内容摘要

抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。

当第一个人按下按键后,则在显示器上显示该组的号码,同时电路将其他各组按键封锁,使其不起作用。

若抢答时间内无人抢答,警报器发出警报。

回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。

因此要完成抢答器的逻辑功能,该电路至少应包括抢答鉴别模块、控制模块、计时模块、选择控制和报警器组成。

关键词:

抢答鉴别封锁计时报警

 

目录

一概述…………………………………………………………………1

二方案设计与论证………………………………………………………………1

三单元电路设计…………………………………………………………………2

3.1.抢答鉴别模块的设计…………………………………………………2

3.2计时模块的设计………………………………………………………3

3.3数据选择模块的设计…………………………………………………5

3.4报警模块的设计……………………………………………………6

3.5译码器模块的设计……………………………………………………7

3.6控制模块………………………………………………………………8

3.7主电路连线图…………………………………………………………8

3.8芯片引脚图……………………………………………………………9

四器件编程与下载………………………………………………………………10

五性能测试与分析………………………………………………………………10

六实验设备………………………………………………………………………10

七心得体会………………………………………………………………………10

八参考文献………………………………………………………………………10

 

课程设计任务书(任务书的格式调整一下

课题

名称

基于VHDL的四路枪答器

完成

时间

2010.

12.03

指导

教师

崔瑞雪

职称

副教授

学生

姓名

张宏昌

班级

B08221

总体设计要求和技术要点

设计要求:

1.抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0~S3表示。

2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。

3.抢答器具有锁存与显示功能。

即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。

选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

技术要点:

1、实现封锁功能;3、总程序的编译、仿真、打包并下载到实验箱。

工作内容及时间进度安排

(1)做出概括的总框架,作出具体的课设安排。

11月17号

(2)根据要求分成几个模块,分别用VHDL语言进行程序的编写,然后编译,仿真,实现功能并进行修改。

11月20号

(3)将设计出来的模块进行组合,编译仿真,实现功能并进行修改。

11月25号

(4)对硬件进行学习,并进行软硬件的结合。

11月29号

(5)实验成果验收。

11月30号

课程设计成果

1.与设计内容对应的软件程序2.课程设计报告书

 

一、概述

抢答器的逻辑结构较简单,它主要由抢答鉴别模块、计时模块、选择控制和报警器组成。

在整个抢答器中最关键的是如何实现抢答封锁,在控制键按下的同时计数器倒计时显示有效剩余时间。

除此之外,整个抢答器还需有一个使能信号和一个归零信号,以便抢答器能实现公平抢答和停止。

抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。

当主持人按下控制键、选手按下抢答键或倒计时到时蜂鸣器按时钟脉冲周期响起。

二、方案设计与论证

将该任务分成五个模块进行设计,分别为:

抢答器鉴别模块、抢答器计时模块、译码模块、数选模块、报警模块,最后是手工连接电路制作顶层文件。

1、抢答器鉴别模块:

在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是超前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余各路抢答封锁的功能。

其中有四个抢答信号s0、s1、s2、s3;抢答使能信号s;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号tmp。

2、抢答器计时模块:

在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。

其中有抢答时钟信号clk2;系统复位信号rst;抢答使能信号s;抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。

3、数据选择模块:

在这个模块中主要实现抢答过程中的数据输入功能,输入信号a[3..0]、b[3..0]、c[3..0];计数输出信号s;数据输出信号y;计数脉冲clk2,实现a、b、c按脉冲轮流选通,在数码管上显示。

4、报警模块:

在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内人抢答或是计数到时蜂鸣器开始报警,有效电平输入信号i;状态输出信号q;计数脉冲clk2。

5、译码模块:

在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。

6、顶层文件:

在这个模块中是对前五个模块的综合编写的顶层文件。

三、单元电路设计

(一)抢答鉴别模块

VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityqdjb1is

port(rst,clk2:

instd_logic;

s0,s1,s2,s3:

instd_logic;

states:

bufferstd_logic_vector(3downto0);

tmp:

outstd_logic);

endqdjb1;

architectureoneofqdjb1is

signalst:

std_logic_vector(3downto0);

begin

p1:

process(s0,rst,s1,s2,s3,clk2)

begin

ifrst='0'then

tmp<='0';st<="0000";

elsifclk2'eventandclk2='1'then

if(s0='1'orst(0)='1')andnot(st

(1)='1'orst

(2)='1'orst(3)='1')thenst(0)<='1';

endif;

if(s1='1'orst

(1)='1')andnot(st(0)='1'orst

(2)='1'orst(3)='1')thenst

(1)<='1';

endif;

if(s2='1'orst

(2)='1')andnot(st(0)='1'orst

(1)='1'orst(3)='1')thenst

(2)<='1';

endif;

if(s3='1'orst(3)='1')andnot(st(0)='1'orst

(1)='1'orst

(2)='1')thenst(3)<='1';

endif;

tmp<=st(0)orst

(1)orst

(2)orst(3);

endif;

endprocessp1;

p2:

process(states(0),states

(1),states

(2),states(3))

begin

if(st="0000")thenstates<="0000";

elsif(st<="0001")thenstates<="0001";

elsif(st<="0010")thenstates<="0010";

elsif(st<="0100")thenstates<="0011";

elsif(st<="1000")thenstates<="0100";

endif;

endprocessp2;

endone;

(二)计时模块

VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityjs1is

port(clk,rst,s:

instd_logic;

ta,tb:

bufferstd_logic_vector(3downto0);

warn:

outstd_logic);

endjs1;

architectureoneofjs1is

signalco:

std_logic;

begin

p1:

process(clk,rst,s,ta)

begin

ifrst='0'then

ta<="0000";

elsifclk'eventandclk='1'then

co<='0';

ifs='1'then

ifta="0000"then

ta<="1001";co<='1';

elseta<=ta-1;

endif;

endif;

endif;

endprocessp1;

p2:

process(co,rst,s,tb)

begin

ifrst='0'then

tb<="0010";

elsifco'eventandco='1'then

ifs='1'then

iftb="0000"thentb<="0010";

elsetb<=tb-1;

endif;

endif;

endif;

if(ta="0000"andtb="0000")then

warn<='1';

elsewarn<='0';

endif;

endprocessp2;

ENDONE;

(三)数据选择模块

VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

entitysjxzis

port(a,b,c:

instd_logic_vector(3downto0);

clk2,rst:

instd_logic;

s:

outstd_logic_vector(1downto0);

y:

outstd_logic_vector(3downto0));

endsjxz;

architecturechooserofsjxzis

signalcount:

std_logic_vector(1downto0);

begin

s<=count;

process(clk2,rst)

begin

if(rst='0')thencount<="00";

elsif(clk2'eventandclk2='1')then

if(count>="10")then

count<="00";

elsecount<=count+1;

endif;

endif;

casecountis

when"00"=>y<=a;

when"01"=>y<=b;

when"10"=>y<=c;

whenothers=>null;

endcase;

endPROCESS;

endchooser;

(四)报警模块

VHDL源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYALARMIS

PORT(CLK,I:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC);

ENDALARM;

ARCHITECTUREBEHAVEOFALARMIS

BEGIN

PROCESS(I,CLK)

BEGIN

IFI='0'THEN

q<='0';

ELSIFI='1'THEN

q<=clk;

ENDIF;

ENDPROCESS;

ENDBEHAVE;

(五)译码模块

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;

(六)控制模块

VHDL源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYkongzhiIS

PORT(c,p:

instd_logic;

o:

outstd_logic

);

endkongzhi;

architectures_1ofkongzhiis

begin

process(p,c)

begin

ifp='1'theno<='0';

elsifp='0'theno<=c;

endif;

endprocess;

ends_1;

说明:

本模块类似三态门的性质,作用是控制时间停止,当有选手抢答时,抢答鉴别模块输出一高电平,用它来封锁时钟信号,进而让时钟停止

(七)主电路连线图

(1)电路图

(2)功能仿真图

(八)将程序下载到芯片FLEX—EPF10LC84-4上,引脚图如下

 

四、器件编程与下载

将编译好的模块程序下载到CPLD中(注:

device选取要与硬件对应,否则会导致实验失败),连线做硬件实验。

五、性能测试与分析

按下rst键清零,按下s键,观察数码管是否开始倒计时,扬声器是否发出报警声,按下s0,观察数码管是否显示1和抢答的时间,再按s1,s2.s3均不改变显示,按下rst键,观察是否清零,再按s键,不按别的,直到计时时间到,观察是否显示00,扬声器是否发出报警。

六、实验设备

计算机,EL教学实验箱

七、心得体会

经历这次实验,我体会颇多:

首先,对知识的理解上有了很大的提高,知道了自己所学跟应用是怎么回事,并且综合自己所有所学过的知识来做这次课设,让我切实感受到了“书到用时方恨少”,知识需要的是积累的过程。

然后,团队能动性,我们三人在实验过程中各有分工,都能保证完成自己的任务,进而保证了课设题目我们能最早的完成。

其次,教训也是有的,这次课设我们也走了弯路,最初设计的电路没有考虑到数码管的显示问题,等到真正上机试验的时候才知道,当时只好重新制作程序,可谓是真吃了会不懂得亏,给我以后做设计的时候提了个醒,一定要知道要做的完整设计。

最后,感谢老师的指导,没有老师悉心的指导我们不可能有如此的进步,短短两个月的时间,老师让我们从零变到了自己搞小设计,而且在这么短的时间内。

八、参考文献

李国洪,沈明山:

《可编程逻辑器件EDA技术与实践》,机械工业出版社

 

指导教师评语及设计成绩

评语

 

 

课程设计成绩:

指导教师:

日期:

年月日

忽略此处..

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1