當前位置:首頁 » 課程大全 » 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