数字式竞赛抢答器的VHDL设计

更新时间:2023-03-08 05:41:57 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验报告

实验名称:VHDL实验 实验日期:2012年3月7日 学 院:信息工程学院 班 级:2009级通信工程一班 姓 名:沈晶晶 学 号:2009550607

数字式竞赛抢答器的VHDL设计

1、设计任务及要求: 设计任务:

(1)设计一个可容纳8组参赛的数字式抢答器,每组设一个按钮,供抢答使用。

(2)抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。

(3)设置一个主持人“复位”按钮。

(4)主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,由指示灯显示抢答组的编号,同时扬声器发出2~3秒的音响。

扩展功能:

(5)设置一个计分电路,每组开始预制100分,由主持人计分,答对一次加10分,答错一次减10分。

设计要求:

(1) 采用VHDL语言编写程序,并在QUARTUS II平台中进行仿

真,下载到EDA实验箱进行验证。

(2) 编写设计报告,要求包括方案选择、程序清单、调试过程、

测试结果及心得体会。

(3) 设计时间和地点:两个星期,信息楼4楼EDA实验室。

定时抢答器的总体框图如图1所示,它由主体电路和扩展电路两部分构成,主体电路完成基本的抢答功能,即开始抢答后,当选手按动抢答键时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答。扩展电路完成各选手的得分显示功能。

定时抢答器的工作过程是:接通电源时,主持人将开关置于“清除”位置,抢答器处于禁止工作状态,编号显示器灭灯;抢答开始时,主持人将控制开关拨到“开始”位置,扬声器给出声响提示,抢答器处于工作状态,这时,抢答器完成以下工作:(1)优先编码器电路立即分辨出抢答者编号,并由锁存器进行锁存,然后由译码显示电路显示编号;(2)扬声器发出短暂声响,提醒主持人注意;(3)控制电路要对输入编码电路进行封锁,避免其他选手再次进行抢答;(4)当选手将问题回答完毕,主持人操作计分开关,计分电路采用十进制加/减计数器、数码管显示。本轮抢答完毕,主持人操作控制开关,使系

统回复到禁止工作状态,以便进行下一轮抢答。

抢答器的VHDL代码: LIBRARY IEEE;

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

PORT(TEAM:IN STD_LOGIC_VECTOR(4 DOWNTO 0); RST,CLK:IN STD_LOGIC; JIFEN,S:IN STD_LOGIC;

LED:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CQ,CQ_H:OUT STD_LOGIC_VECTOR(3 downto 0); LIGHT:OUT STD_LOGIC_VECTOR(4 downto 0); BELL:OUT STD_LOGIC ); END;

ARCHITECTURE one OF SJJ IS

SIGNAL output:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL d:STD_LOGIC_VECTOR(4 downto 0); SIGNAL lock:STD_LOGIC:='0'; SIGNAL ring:STD_LOGIC;

BEGIN

QD:PROCESS(RST,CLK,TEAM) Begin

IF RST='1' THEN OUTPUT<=\d<=(OTHERS=>'0'); lock<='0';

ElSIF CLK'EVENT AND CLK='1' THEN IF

TEAM=\

output<=\

ELSIF

TEAM=\

output<=\

ELSIF

TEAM=\

output<=\

ELSIF

TEAM=\

output<=\

ELSIF

TEAM=\

output<=\

END IF; END IF; END PROCESS;

XSZ:PROCESS(lock,RST) BEGIN

THEN

THEN

THEN

THEN

THEN

IF (RST='1') THEN LED<=output; LIGHT<=d;

ELSIF (RST='0') AND (lock'EVENT AND lock='1') THEN LED<=output;LIGHT<=d;

END IF; END PROCESS;

JF:PROCESS(JIFEN,S) VARIABLE cqi:

STD_LOGIC_VECTOR(3

0):=\

VARIABLE cqih:

STD_LOGIC_VECTOR(3

0):=\

BEGIN

IF JIFEN'EVENT AND JIFEN='1' THEN IF S='1' THEN

IF cqi<9 THEN cqi:=cqi+1; ELSE cqi:=(OTHERS=>'0'); END IF;

ELSIF S ='0' THEN IF cqi>0 THEN cqi:=cqi-1; ELSE cqi:=\ END IF; END IF;

DOWNTO

DOWNTO

IF cqi=9 AND S='1' THEN cqih:=cqih+1; ELSIF cqi=0 AND S='0' THEN

--IF cqih=\ ELSE cqih:=cqih-1; --END IF; END IF; END IF;

CQ_H<=cqih; CQ<=cqi; END PROCESS;

BR:process(CLK,lock)

VARIABLE num:INTEGER RANGE 0 TO 10; BEGIN

IF lock = '0' THEN num :=0; BELL<='0';

ELSIF lock ='1' AND (CLK'EVENT AND CLK = '1') THEN IF num < 2 THEN

num := num+1; BELL<='1'; ELSE BELL <='0'; END IF; END IF; END PROCESS;

时序图:

引脚检测:CQ[1]的引脚是PIN_52 ,CQ[2]

的引脚是

PIN_67,CQ[3] 的引脚是PIN_68 ,CQ_H[0] 的引脚是PIN_47 ,CQ_H[1] 的引脚是PIN_48 ,CQ_H[2] 的引脚是PIN_49,CQ_H[3] 的引脚是PIN_50,JIFEN的引脚是PIN_7,LED[0] 的引脚是PIN_99,LED[1] 的引脚是PIN_103 ,LED[2] 的引脚是PIN_105 ,LED[3] 的引脚是PIN_106,LIGHT[0] 的引脚是PIN_11,LIGHT[1] 的引脚是PIN_32 ,LIGHT[2] 的引脚是PIN_33,LIGHT[3] 的引脚是PIN_34 ,LIGHT[4] 的引脚是PIN_35,RST的引脚是PIN_10 ,S的引脚是PIN_6,TEAM[0] 的引脚是PIN_1 ,TEAM[1] 的引脚是PIN_2,TEAM[2] 的引脚是PIN_3,TEAM[3] 的引脚是PIN_4,TEAM[4] 的引脚是PIN_5。

实验结果:

根据实验,我们可以看出,按实验箱上先按键1,则显示管上会

显示“1”,按键8可清零,这样就可依次抢答1~5,即5路抢答器。 由THEN[0]~THEN[4]为抢答键,而主持人控制抢答,并清零。

实验体会:

我们认为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教同学,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。我们进一步熟知了VHDL程序的书写与设计,还更加熟练度应用QUARTUS II的平台进行仿真实验,并学会用VHDL语言自行设计抢答器电路的程序,并了解到VHDL语言设计的出现从根本上改变了以往数字电路的设计模式,使电路由硬件设计转变为软件设计,使电子设计的核心转化为VHDL语言的编程设计,这样提高了设计的灵活性,使电路的设计复杂程度大大降低。

虽然结束了,也留下了很多遗憾,因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。我们的激情永远不会结束,相反,我们会更加努力,努力的去弥补自己的缺点,发展自己的优点,去充实自己,只有在了解了自己的长短之后,我们会更加珍惜拥有的,更加努力的去完善它,增进它。只有不断的测试自己,挑战自己,才能拥有更多的成功和快乐!

本文来源:https://www.bwwdw.com/article/v8v.html

Top