当前位置:首页 » 课程大全 » eda课程设计抢答器

eda课程设计抢答器

发布时间: 2020-11-28 17:10:48

『壹』 EDA中用VHDL语言设计五人抢答器

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_ARITH.all;
use ieee.std_logic_UNSIGNED.all;
ENTITY BIAOJUE IS
PORT(
FF:IN STD_LOGIC_VECTOR(1 TO 5);

QQ:OUT BIT;

QALL:OUT STD_LOGIC_VECTOR(3 DOWNTO 1);

SHIJIAN:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);

FUWEI,KAISHI,CLK:IN STD_LOGIC);
END BIAOJUE;
ARCHITECTURE FUNG OF BIAOJUE IS
BEGIN

PROCESS(FF,CLK,KAISHI,FUWEI)

VARIABLE SUO:BOOLEAN;

VARIABLE SUM:STD_LOGIC_VECTOR(1 TO 3);

BEGIN

IF (FUWEI='0') THEN

QQ<='0';

SHIJIAN<="1010";

SUO:=FALSE;

SUM:="000";

QALL<="000";

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

IF (KAISHI='1') THEN

IF (NOT SUO) THEN

IF SHIJIAN="0000" THEN

SUO:=TRUE;

FOR N IN 1 TO 5 LOOP

SUM:=FF(N)+SUM;

END LOOP;

ELSE

SHIJIAN<=SHIJIAN-1;

END IF;

END IF;

QALL<=SUM;

IF (SUM >= 3) THEN

QQ<='1';

ELSE

QQ<='0';

END IF;

END IF;

END IF;
END PROCESS;
END FUNG;

『贰』 关于抢答器的EDA课程设计(完整的)

抢答器
通信081 李笑笑 082278
一、简要说明
在进行智力竞赛抢答题比赛时,在一定时间内,各参赛者考虑好答案后都想抢先答题。如果没有合适的设备,有时难以分清他们的先后,使主持人感到为难。为了使比赛能顺利进行,需要有一个能判断抢答先后的设备,我们将它称为智力竞赛抢答器。
二、设计要求
1.最多可容纳15名选手或15个代表队参加比赛,他们的编号分别为1到15,各用一个抢答按钮,其编号与参赛者的号码一一对应。此外,还有一个按钮给主持人用来清零,主持人清零后才可进行下一次抢答。
2.抢答器具有数据锁存功能,并将所锁存的数据用LED数码管显示出来。在主持人将抢答器清零后,若有参赛者按抢答按钮,数码管立即显示出最先动作的选手的编号,抢答器对参赛选手动作的先后有很强的分辨能力,即较他们动作的先后只相差几毫秒,抢答器也能分辨出来。数码管不显示后动作选手的编号,只显示先动作选手的编号,并保持到主持人清零为止。
3.在各抢答按钮为常态时,主持人可用清零按钮将数码管变为零状态,直至有人使用抢答按钮为止。抢答时间设为10秒。在10秒后若没有参赛者按抢答按钮,抢答按钮无效。并保持到主持人清零为止。
三、设计提示
1. 输入输出信号
输出显示的位扫描时钟信号可以作为键盘输入的检测扫描信号。10秒定时计数器的时钟信号可以选2Hz的时钟。复位信号用来使10秒定时器和键盘编码器清零。15个按键输入信号应进行编码。A—G数码管段驱动信号。SEG0,SEGl数码管位驱动信号。
2.系统功能
按下异步复位键,10秒定时器和键盘编码器清零。放开异步复位健后,启动定时器,并允许键盘编码器扫描信号输入端,如在10秒内发现有输入信号,将其编码输出,同时使定时器停止计时;否则,停止扫描编码和定时,直到再次按下异步复位健键。把16进制编码转换为十进制码,经译码后显示。
3.设计框图如图:
四、程序代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;

entity answer is
port(
KEY_IN: in std_logic_vector(15 downto 1);
CLEAR: in std_logic;
SCANCLK: in std_logic;
CLK1S: in std_logic;
LED_OUT: out std_logic_vector(6 downto 0);
SCAN_OUT: out std_logic;
SOUND_OUT: out std_logic
);
end answer;

architecture rtl of answer is
signal KEY_CODE: integer range 0 to 15;
signal KEY_CODE_REG: integer range 0 to 15;
signal KEY_EN: std_logic;
signal NUM1: integer range 0 to 9;
signal NUM2: integer range 0 to 9;
signal KEY_EN1,KEY_EN2: std_logic;
signal KEY_IN1,KEY_IN2,KEY_INS: std_logic_vector(15 downto 1);
signal HEX: integer range 0 to 9;
signal TIME_CNT: std_logic_vector(3 downto 0);
begin

process(KEY_EN,KEY_IN,SCANCLK,CLEAR)
begin
if CLEAR = '0' then
KEY_CODE_REG<=0;
elsif SCANCLK'event and SCANCLK = '1' then
if KEY_CODE_REG = 0 then
KEY_CODE_REG<=KEY_CODE;
end if;
end if;
end process;

process(SCANCLK,CLEAR,KEY_IN)
begin
if SCANCLK'event and SCANCLK = '1' then
KEY_IN2 <= KEY_IN1;
KEY_IN1 <= KEY_IN;
end if;
end process;

KEY_INS<=not KEY_IN2 or KEY_IN1;

KEY_CODE<=0 when KEY_EN = '0' else
1 when KEY_INS(1)='0' else
2 when KEY_INS(2)='0' else
3 when KEY_INS(3)='0' else
4 when KEY_INS(4)='0' else
5 when KEY_INS(5)='0' else
6 when KEY_INS(6)='0' else
7 when KEY_INS(7)='0' else
8 when KEY_INS(8)='0' else
9 when KEY_INS(9)='0' else
10 when KEY_INS(10)='0' else
11 when KEY_INS(11)='0' else
12 when KEY_INS(12)='0' else
13 when KEY_INS(13)='0' else
14 when KEY_INS(14)='0' else
15 when KEY_INS(15)='0' else
0 ;
process(CLK1S,CLEAR,KEY_EN)
begin
if CLEAR = '0' then
TIME_CNT <= "0000";
elsif CLK1S'event and CLK1S = '1' then
if KEY_EN='1' then
TIME_CNT<=TIME_CNT + 1;
end if;
end if;
end process;

KEY_EN<='1' when KEY_CODE_REG = 0 and TIME_CNT<=9 else '0';

process(CLK1S,CLEAR,KEY_EN)
begin
if CLEAR = '0' then
KEY_EN1 <= '1';
KEY_EN2 <= '1';
elsif CLK1S'event and CLK1S = '1' then
KEY_EN2 <= KEY_EN1;
KEY_EN1 <= KEY_EN;
end if;
end process;

SOUND_OUT<=SCANCLK when KEY_EN1='0' and KEY_EN2='1' else '0';

with HEX select
LED_OUT<="0000110" when 1,
"1011011" when 2,
"1001111" when 3,
"1100110" when 4,
"1101101" when 5,
"1111101" when 6,
"0000111" when 7,
"1111111" when 8,
"1101111" when 9,
"0111111" when OTHERS;

HEX<= NUM1 when SCANCLK='0' else NUM2;

NUM2<=1 when KEY_CODE_REG>9 ELSE 0;
NUM1<=KEY_CODE_REG when KEY_CODE_REG<=9 ELSE KEY_CODE_REG-10;
SCAN_OUT <= SCANCLK;
end rtl;

『叁』 EDA课程设计!数字式竞赛抢答器!

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYqdqIS

PORT(a1,a2,a3,a4,rest,clk:INSTD_LOGIC;

s1:OUTSTD_LOGIC;

LED7S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));

end;

ARCHITECTUREoneOFqdqIS

SIGNALd:STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALf:STD_LOGIC;

SIGNALs2:STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN

p1:PROCESS(a1,a2,a3,a4,rest,clk)

BEGIN

if(rest='1')then

f<='0';d<="0000";

elsifrising_edge(clk)then

if((a1='1')or(d(3)='1'))andnot((d(0)='1')or(d(1)='1')or(d(2)='1'))thend(3)<='1';

endif;

if((a2='1')or(d(2)='1'))andnot((d(0)='1')or(d(1)='1')or(d(3)='1'))thend(2)<='1';

endif;

if((a3='1')or(d(1)='1'))andnot((d(0)='1')or(d(2)='1')or(d(3)='1'))thend(1)<='1';

endif;

if((a4='1')or(d(0)='1'))andnot((d(1)='1')or(d(2)='1')or(d(2)='1'))thend(0)<='1';

endif;

f<=a1ora2ora3ora4;

endif;

endprocess;

s1<=fandclk;

p2:PROCESS(d)

BEGIN

Ifd="1000"thenLED7S<="0000110";

elsIfd="0100"thenLED7S<="1011011";

elsIfd="0010"thenLED7S<="1001111";

elsIfd="0001"thenLED7S<="1100110";

ElseLED7S<="0111111";

endprocess;

endone;

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919