您的当前位置:首页正文

四路抢答器

2023-07-25 来源:品趣旅游知识分享网


北 华 航 天 工 业 学 院

《EDA技术综合设计》

课程设计报告

报 告 题 目: 基于VHDL的四路抢答器 作者所在系部: 电子工程系 作者所在专业: 通信工程 作者所在班级: B10232 作 者 姓 名 : 高海涛 指导教师姓名: 陈刚 完 成 时 间 : 2012-12-5

内 容 摘 要

抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。当第一个人按下按键后,则在显示器上显示该组的号码,同时电路将其他各组按键封锁,使其不起作用。若抢答时间内无人抢答,警报器发出警报。回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。

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

关键词:抢答锁存 计时 数据选择 译码 报警

目 录

一 概 述 „„„„„„„„„„„„„„„„„„„„„„„„„ 1 二 方案设计与论证„„„„„„„„„„„„„„„„„„„„„„„„1 三 单元电路设计„„„„„„„„„„„„„„„„„„„„„„„„„2 3.1. 抢答鉴别模块的设计 „„„„„„„„„„„„„„„„„„ 2

3.2 计时模块的设计 „„„„„„„„„„„„„„„„„„„„„3 3.3 数据选择模块的设计 „„„„„„„„„„„„„„„„„„„6 3.4 报警模块的设计 „„„„„„„„„„„„„„„„„„„„ 7 3.5 译码器模块的设计 „„„„„„„„„„„„„„„„„„„„8 3.6 主电路连线图 „„„„„„„„„„„„„„„„„„„„„„10 3.7 芯片引脚图 „„„„„„„„„„„„„„„„„„„„„„„11 四 器件编程与下载„„„„„„„„„„„„„„„„„„„„„„„„11 五 性能测试与分析„„„„„„„„„„„„„„„„„„„„„„„„11 六 实验设备„„„„„„„„„„„„„„„„„„„„„„„„„„„11 七 心得体会„„„„„„„„„„„„„„„„„„„„„„„„„„„12 八 参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„12

课程设计任务书

课题 基于VHDL的四路枪答器 名称 指导 陈刚 教师 职称 教授 姓名 总体设计要求和技术要点 设计要求: 1.抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0~ S3表示。 2.设置一个复位开关和抢答控制开关STOP,该开关由主持人控制。 3.抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。 4. 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如20秒)。当主持人启动“STOP”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。 5. 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。 技术要点:1、实现封锁功能; 3、总程序的编译、仿真、打包并下载到实验箱。 完成 时间 学生 高海涛 班级 2012 11.30 B10232 工作内容及时间进度安排 工作内容:1、编程、仿真、打包、编辑总程序,编译。2、下载到实验箱,验证结果。 进度安排:13周周一到周五上机调试程序。 14周周一下载验证,做硬件实验。 周二课设验收并总结报告。 课程设计成果 1.与设计内容对应的软件程序 2.课程设计报告书

一、概述

抢答器主要由抢答锁存模块、计时模块、数据选择控制模块,报警器和译码模块组成。在整个抢答器中最关键的是如何实现抢答锁存,在控制键按下的同时计数器倒计时显示有效剩余时间。除此之外,整个抢答器还需有一个使能信号和一个归零信号,以便抢答器能实现公平抢答和停止。抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。当主持人按下控制键、选手按下抢答键或倒计时到时蜂鸣器短暂响起。

二、方案设计与论证

将该任务分成七个模块进行设计,分别为:抢答器锁存模块、抢答器计时模块、译码模块、数选模块、报警模块。

1、抢答锁存模块;

在这个模块中主要实现抢答过程中的抢答功能,当抢答开始后,当有一路抢答按键首先按下时,将其余个路抢答封锁的功能。其中有四个抢答信号S[3..0];时钟信号CLK;复位RST;警报信号T;输出信号XUANSHOU。 2、抢答器计时模块:

在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。其中有抢答时钟信号CLK;系统复位信号RST;抢答使能信号STOP;无人抢答警报信号WARN;有人抢答计时中止信号S;计时十位和个位信号SW,GW。 3、数据选择模块:

在这个模块中主要实现抢答过程中的数据输入功能,输入信号A[3..0]、B[3..0]、C[3..0];计数输出信号S[1..0];数据输出信号Y;计数脉冲CLK,实现A、B、C按脉冲轮流选通,在数码管上显示。 4、报警模块:

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

1

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

三、单元电路设计

(一)抢答锁存模块 1、VHDL源程序 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY SUOCUN IS PORT(

CLK,RST:IN STD_LOGIC;

S: IN STD_LOGIC_VECTOR(3 DOWNTO 0); T:OUT STD_LOGIC;

XUANSHOU: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END SUOCUN;

ARCHITECTURE ONE OF SUOCUN IS

SIGNAL SO,XUAN:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS(CLK,S) BEGIN

IF RST='0' THEN

SO<=\"0000\";

ELSIF CLK'EVENT AND CLK='1' THEN IF SO=\"0000\" THEN

IF S/=\"1111\" THEN

SO<=S;

END IF;

END IF; END IF;

IF SO=\"0000\" THEN

XUAN<=\"0000\";

2

ELSE

XUAN<=NOT(SO);

END IF;

T<=SO(0)OR SO(1) OR SO(2) OR SO(3);

CASE XUAN IS

WHEN \"0001\"=>XUANSHOU<=\"0001\"; WHEN \"0010\"=>XUANSHOU<=\"0010\"; WHEN \"0100\"=>XUANSHOU<=\"0011\"; WHEN \"1000\"=>XUANSHOU<=\"0100\"; WHEN OTHERS=>XUANSHOU<=\"0000\";

END CASE; END PROCESS; END ONE; 2、仿真图

(二)计时模块

1、VHDL源程序 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JS IS

3

PORT(CLK,RST,STOP,S:IN STD_LOGIC; WARN:BUFFER STD_LOGIC;

SW,GW:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END JS;

ARCHITECTURE ONE OF JS IS SIGNAL CO,TT:STD_LOGIC; BEGIN

P1:PROCESS(CO,RST,STOP,SW,S) BEGIN

IF STOP='1' OR RST='0' THEN SW<=\"0010\";

ELSIF CO'EVENT AND CO='1' THEN

IF S='0' THEN

IF SW=\"0000\" THEN SW<=\"0000\"; ELSE SW<=SW-1; END IF; END IF; END IF; END PROCESS P1;

P2:PROCESS(CLK,RST,STOP,CO,GW,SW,S) BEGIN

IF STOP='1' OR RST='0' THEN GW<=\"0000\";

TT<='0';

ELSIF CLK'EVENT AND CLK='1' THEN

IF S='0' THEN

4

CO<='0';

IF GW=\"0000\"AND SW=\"0000\" THEN GW<=\"0000\";

ELSIF GW=\"0000\"AND NOT(SW=\"0000\") THEN GW<=\"1001\";CO<='1';TT<='1'; ELSE GW<=GW-1; END IF; END IF; END IF;

END PROCESS P2; P3:PROCESS(RST,GW,SW) BEGIN

IF RST='0' THEN WARN<='0';

ELSIF GW=\"0000\" AND SW=\"0000\" AND TT='1' THEN WARN<='1'; ELSE

WARN<='0';

END IF; END PROCESS P3; END ONE; 2、仿真图

5

(三)数据选择模块

1、VHDL源程序 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY SHUJUFENPEI IS

PORT(X,SWEI,GWEI:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK:IN STD_LOGIC;

Y: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SHU: OUT STD_LOGIC_VECTOR(1 DOWNTO 0)); END SHUJUFENPEI;

ARCHITECTURE ONE OF SHUJUFENPEI IS

SIGNAL COUNT : STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN

PROCESS(CLK) BEGIN

IF(CLK'EVENT AND CLK='1')THEN

IF (COUNT=\"10\") THEN COUNT<=\"00\"; ELSE COUNT<=COUNT+1; END IF;

END IF;

SHU<=COUNT; CASE COUNT IS

WHEN \"00\"=>Y<=X; WHEN \"01\"=>Y<=GWEI; WHEN \"10\"=>Y<=SWEI; WHEN OTHERS=>NULL;

6

END CASE; END PROCESS; END ONE; 2、仿真图

(四)报警模块

1、VHDL源程序 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALARM IS

PORT(CLK,I:IN STD_LOGIC; Q:OUT STD_LOGIC); END ALARM;

ARCHITECTURE BEHAVE OF ALARM IS SIGNAL WARN:STD_LOGIC; SIGNAL N:INTEGER RANGE 0 TO 20; BEGIN

Q<= WARN; PROCESS(CLK) BEGIN

IF CLK'EVENT AND CLK='1' THEN IF I='0' THEN

7

WARN <='0';

ELSIF(I='1'AND N<=19)THEN WARN <=NOT WARN; N<=N+1; ELSE

WARN <='0'; END IF; END IF; END PROCESS; END BEHAVE;

2、仿真图

(五)译码模块

1、VHDL源程序 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY YMQ IS

PORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT7: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END YMQ;

ARCHITECTURE ART OF YMQ IS BEGIN

8

PROCESS(AIN4) BEGIN CASE AIN4 IS

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 WHEN OTHERS=>DOUT7<=\"0000000\"; END CASE; END PROCESS;

END ARCHITECTURE ART; 2、仿真图

(六)主电路连线图

9

1、主图

2、仿真图

10

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

四、器件编程与下载

将编译好的模块程序下载到CPLD中(注:DEVICE选取要与硬件对应,否则会导致实验失败),连线做硬件实验。

五、性能测试与分析

按下RST键清零,按下STOP察数码管是否开始倒计时,按下S0,观察数码管是否显示1和抢答的时间,再按S1,S2.S3均不改变显示,按下RST键,观察是否清零,再按STOP,不做抢答,直到计时时间到,观察是否显示00,扬声器是否发出报警。

六、实验设备

计算机,EL教学实验箱

11

七、心得体会

本次课设再次熟悉了使用vhdl语言编写程序,在与同伴合作过程中学到了很多自己没有注意到的问题,老师在课程中讲到的细节才开始注意了。同时,本次的课设是软件联系硬件的一次很好的体验机会。

八、参考文献

[1] 、李国洪,沈明山:《可编程逻辑器件EDA技术与实践》,机械工业出版社 [2]、江国强:《EDA技术习题与实验》,电子工业出版社

[3]、曹昕燕,周风臣,聂春燕:《EDA技术试验与课程设计》,清华大学出版社 [4]、黄仁欣:《EDA技术实用教程》,清华大学出版社

[5]、王振红:《数字电路设计与应用实践教程》,机械工业出版社

12

程序设计流程图

层次化设计 图形输入 文本输入 设计输入 建立项目文件 设计器件 设计生成 增益? NO 逻辑正确 YES 仿真分析 引脚分配 重新调整 设计实现 NO 设计正确 YES 生成下载文件 下载并验证 13

硬件下载

评 语 指 导 教 师评语及设计成绩 指导教师: 日期: 年 月 日 课程设计成绩: 14

因篇幅问题不能全部显示,请点此查看更多更全内容