一、 設(shè)計(jì)任務(wù)與要求
1. 搶答器同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕S0 ~ S7表示。
2. 設(shè)置一個(gè)系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。
3. 搶答器具有鎖存與顯示功能。即選手按動(dòng)按鈕,鎖存相應(yīng)的編號(hào),并在LED數(shù)碼管上顯示,同時(shí)揚(yáng)聲器發(fā)出報(bào)警聲響提示。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。
4. 搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如30秒)。當(dāng)主持人啟動(dòng)"開始"鍵后,定時(shí)器進(jìn)行減計(jì)時(shí),同時(shí)揚(yáng)聲器發(fā)出短暫的聲響,聲響持續(xù)的時(shí)間0.5秒左右。
5. 參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。
6. 如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。
二、預(yù)習(xí)要求
1.復(fù)習(xí)編碼器、十進(jìn)制加/減計(jì)數(shù)器的工作原理。
2.設(shè)計(jì)可預(yù)置時(shí)間的定時(shí)電路。
3.分析與設(shè)計(jì)時(shí)序控制電路。
4. 畫出定時(shí)搶答器的整機(jī)邏輯電路圖
三、設(shè)計(jì)原理與參考電路
1.?dāng)?shù)字搶答器總體方框圖
如圖所示為總體方框圖。其工作原理為:接通電源后,主持人將開關(guān)撥到"清除"狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號(hào)顯示器滅燈,定時(shí)器顯示設(shè)定時(shí)間;主持人將開關(guān)置?quot;開始"狀態(tài),宣布"開始"搶答器工作。定時(shí)器倒計(jì)時(shí),揚(yáng)聲器給出聲響提示。選手在定時(shí)時(shí)間內(nèi)搶答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必須由主持人再次操作"清除"和"開始"狀態(tài)開關(guān)。
2.單元電路設(shè)計(jì)
(1) 搶答器電路
參考電路如圖所示。該電路完成兩個(gè)功能:一是分辨出選手按鍵的先后,并鎖存優(yōu)先搶答者的編號(hào),同時(shí)譯碼顯示電路顯示編號(hào);二是禁止其他選手按鍵操作無(wú)效。工作過(guò)程:開關(guān)S置于"清除"端時(shí),RS觸發(fā)器的 端均為0,4個(gè)觸發(fā)器輸出置0,使74LS148的 =0,使之處于工作狀態(tài)。當(dāng)開關(guān)S置于"開始"時(shí),搶答器處于等待工作狀態(tài),當(dāng)有選手將鍵按下時(shí)(如按下S5),74LS148的輸出 經(jīng)RS鎖存后,1Q=1, =1,74LS48處于工作狀態(tài),4Q3Q2Q=101,經(jīng)譯碼顯示為"5"。此外,1Q=1,使74LS148 =1,處于禁止?fàn)顟B(tài),封鎖其他按鍵的輸入。當(dāng)按鍵松開即按下時(shí),74LS148的 此時(shí)由于仍為1Q=1,使 =1,所以74LS148仍處于禁止?fàn)顟B(tài),確保不會(huì)出二次按鍵時(shí)輸入信號(hào),保證了搶答者的優(yōu)先性。如有再次搶答需由主持人將S開關(guān)重新置?quot;清除"然后再進(jìn)行下一輪搶答。74LS148為8線-3線優(yōu)先編碼器,表11、1為其功能表。
上面這個(gè)被多家網(wǎng)站和許多電子制作大賽組委會(huì)廣泛使用的搶答器居然有嚴(yán)重的錯(cuò)誤,就是沒(méi)法鎖存,或鎖存后沒(méi)法重啟,造成這一錯(cuò)誤的關(guān)鍵是主持人開關(guān)有個(gè)清零動(dòng)作,這個(gè)清0動(dòng)作要確保鎖存器清0,而這個(gè)電路的缺陷是清零動(dòng)作不能保證存儲(chǔ)器一定清零,因?yàn)榍辶闶抢没綬S觸發(fā)器的置0功能,基本RS觸發(fā)器的置 0功能要求R端一定為0,S端一定為1,這樣才能確保清零,而上述電路主持人按下清0按鈕后,不能確RS的狀態(tài)一定為01,只能保證在主持人按下清零按鍵后R端為零,所以上述電路存在嚴(yán)重缺陷,以至于有些仿真軟件不能仿真出正確的結(jié)果,改正的辦法是將清零信號(hào)“非”以后,再和148的輸出端“或”后接入基本RS觸發(fā)器的S端。上述搶答器電路經(jīng)修改后的VHDL程序如下:
74LS148的功能真值表:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY QDQ111 IS
PORT( START,D1,D2,D3,D4,D5,D6,D7,D8:IN STD_LOGIC;
QO0,QO1,QO2,QO3,W1:OUT STD_LOGIC;
XS:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END QDQ111;
ARCHITECTURE QDQ OF QDQ111 IS
SIGNAL EI,EIO:STD_LOGIC;
SIGNAL Q0,Q1,Y:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL QD3,QD2,QD1,QD0:STD_LOGIC;
COMPONENT RSd is
port(Rd,Sd:in std_logic;
Q:out std_logic);
END COMPONENT;
BEGIN
PROCESS(D1,D2,D3,D4,EI,START)
BEGIN
IF EI='0' then
IF D1='0' THEN Q0<= "1110";EIO<='0';
ELSIF D2='0' THEN Q0<="1101";EIO<='0';
ELSIF D3='0' THEN Q0<="1100";EIO<='0';
ELSIF D4='0' THEN Q0<="1011";EIO<='0';
ELSIF D5='0' THEN Q0<="1010";EIO<='0';
ELSIF D6='0' THEN Q0<="1001";EIO<='0';
ELSIF D7='0' THEN Q0<="1000";EIO<='0';
ELSIF D8='0' THEN Q0<="0111";EIO<='0';
ELSE Q0<="1111";EIO<='1';
END IF;
ELSE Q0<="1111";
END IF;
END PROCESS;
U1:RSd PORT MAP(START,((NOT START)OR Q0(0)),QD0);
U2:RSd PORT MAP(START,((NOT START)OR Q0(1)),QD1);
U3:RSd PORT MAP(START,((NOT START)OR Q0(2)),QD2);
U4:RSd PORT MAP(START,((NOT START)OR EIO),QD3);
EI<=QD3;
QO0<=QD0;QO1<=QD1;QO2<=QD2;QO3<=QD3;
--***********以上鎖存,以下編碼顯示****************--
Y<=QD3&QD2&QD1&QD0;
PROCESS(Y)
BEGIN
CASE Y IS
WHEN "1111"=>XS<="1001111";
WHEN "1110"=>XS<="0010010";
WHEN "1101"=>XS<="0000110";
WHEN "1100"=>XS<="1001100";
WHEN "1011"=>XS<="0100100";
WHEN "1010"=>XS<="0100000";
WHEN "1001"=>XS<="0001111";
WHEN "1000"=>XS<="0000000";
WHEN OTHERS=>XS<="0000001";
END CASE;
W1<='0';
END PROCESS;
END;
*******************************************************************
上面程序還需編寫一個(gè)基本RS觸發(fā)器以便調(diào)用,即component調(diào)用語(yǔ)句
library ieee;
use ieee.std_logic_1164.all;
entity RSd is
port(Rd,Sd:in std_logic;
Q:out std_logic);
end RSd;
architecture ca of RSd is
signal RS:std_logic_vector(1 downto 0);
SIGNAL Q0,A,B:std_logic;
begin
A<=NOT(Sd AND B);B<=NOT(Rd AND A);
Q<=A;
end;
***********************************************************************
定時(shí)電路:
由節(jié)目主持人根據(jù)搶答題的難易程度,設(shè)定一次搶答的時(shí)間,通過(guò)預(yù)置時(shí)間電路對(duì)計(jì)數(shù)器進(jìn)行預(yù)置,計(jì)數(shù)器的時(shí)鐘脈沖由秒脈沖電路提供?深A(yù)置時(shí)間的電路選用十進(jìn)制同步加減計(jì)數(shù)器74LS192進(jìn)行設(shè)計(jì),具體電路如上圖所示。
(3)報(bào)警電路
由555定時(shí)器和三極管構(gòu)成的報(bào)警電路如圖11、4所示。其中555構(gòu)成多諧振蕩器,振蕩頻率fo=1.43/[(RI+2R2)C],其輸出信號(hào)經(jīng)三極管推動(dòng)揚(yáng)聲器。PR為控制信號(hào),當(dāng)PR為高電平時(shí),多諧振蕩器工作,反之,電路停振。
4)時(shí)序控制電路
時(shí)序控制電路是搶答器設(shè)計(jì)的關(guān)鍵,它要完成以下三項(xiàng)功能:
①主持人將控制開關(guān)撥到"開始"位置時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路進(jìn)人正常搶答工作狀態(tài)。
②當(dāng)參賽選手按動(dòng)搶答鍵時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路停止工作。
③當(dāng)設(shè)定的搶答時(shí)間到,無(wú)人搶答時(shí),揚(yáng)聲器發(fā)聲,同時(shí)搶答電路和定時(shí)電路停止工作。
根據(jù)上面的功能要求,設(shè)計(jì)的時(shí)序控制電路如上圖所示。圖中,門G1 的作用是控制時(shí)鐘信號(hào)CP的放行與禁止,門G2的作用是控制74LS148的輸人使能端 。圖11、4的工作原理是:主持人控制開關(guān)從"清除"位置撥到"開始"位置時(shí),來(lái)自于圖11、2中的74LS279的輸出 1Q=0,經(jīng)G3反相, A=1,則時(shí)鐘信號(hào)CP能夠加到74LS192的CPD時(shí)鐘輸入端,定時(shí)電路進(jìn)行遞減計(jì)時(shí)。同時(shí),在定時(shí)時(shí)間未到時(shí),則"定時(shí)到信號(hào)"為 1,門G2的輸出 =0,使 74LS148處于正常工作狀態(tài),從而實(shí)現(xiàn)功能①的要求。當(dāng)選手在定時(shí)時(shí)間內(nèi)按動(dòng)搶答鍵時(shí),1Q=1,經(jīng) G3反相, A=0,封鎖 CP信號(hào),定時(shí)器處于保持工作狀態(tài);同時(shí),門G2的輸出 =1,74LS148處于禁止工作狀態(tài),從而實(shí)現(xiàn)功能②的要求。當(dāng)定時(shí)時(shí)間到時(shí),則"定時(shí)到信號(hào)"為0, =1,74LS148處于禁止工作狀態(tài),禁止選手進(jìn)行搶答。同時(shí), 門G1處于關(guān)門狀態(tài),封鎖 CP信號(hào),使定時(shí)電路保持00狀態(tài)不變,從而實(shí)現(xiàn)功能③的要求。集成單穩(wěn)觸發(fā)器74LS121用于控制報(bào)警電路及發(fā)聲的時(shí)間,其工作原理請(qǐng)讀者自行分析。
四、實(shí)驗(yàn)儀器設(shè)備
1. 數(shù)字實(shí)驗(yàn)箱。
2. 集成電路74LS148 1片,74LS279 1片,74LS48 3片,74LS192 2片,NE555 2片,74LS00 1片,74LS121 1片。
3. 電阻 510Ω 2只,1KΩ 9只,4.7kΩ l只,5.1kΩ l只,100kΩ l只,10kΩ 1只, 15kΩ 1只, 68kΩ l只。
4. 電容 0.1uF 1只,10uf 2只,100uf 1只。
5. 三極管 3DG12 1只。
6. 其它:發(fā)光二極管2只,共陰極顯示器3只!∥濉(shí)驗(yàn)內(nèi)容及方法1.組裝調(diào)試搶答器電路。
2.設(shè)計(jì)可預(yù)置時(shí)間的定時(shí)電路,并進(jìn)行組裝和調(diào)試。當(dāng)輸人1Hz的時(shí)鐘脈沖信號(hào)時(shí),要求電路能進(jìn)行減計(jì)時(shí),當(dāng)減計(jì)時(shí)到零時(shí),能輸出低電平有效的定時(shí)時(shí)間到信號(hào)。
3.組裝調(diào)試報(bào)警電路。
4.完成定時(shí)搶答器的聯(lián)調(diào),注意各部分電路之間的時(shí)序配合關(guān)系。然后檢查電路各部分的功能,使其滿足設(shè)計(jì)要求。
搶答器PLD程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY QDQ IS
PORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CP,CR,Start:IN STD_LOGIC;
A,B,C,DD,E,F,G,BP:OUT STD_LOGIC);
END QDQ;
ARCHITECTURE QDQ OF QDQ IS
SIGNAL CLK,DDD:STD_LOGIC;
SIGNAL Y:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL DO,YS:STD_LOGIC_VECTOR(7 DOWNTO 0);
COMPONENT QDLED7 is
PORT(DATA:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
a,b,c,d,e,f,g:out std_logic);
END COMPONENT;
BEGIN
PROCESS(CP,CLK,CR,DO,start)
BEGIN
IF Start='1' then
IF CLK'EVENT AND CLK='1' THEN
DO<=D;
END IF;
IF CR='0' THEN DO<="11111111";
END IF;
IF DO="11111111" THEN DDD<='1';
ELSE DDD<='0';
END IF;
END if;
END PROCESS;
CLK<=CP AND DDD;
YS<=DO;
PROCESS(YS)
BEGIN
CASE YS IS
WHEN "11111110" =>Y<="0001";
WHEN "11111101" =>Y<="0010";
WHEN "11111011" =>Y<="0011";
WHEN "11110111" =>Y<="0100";
WHEN "11101111" =>Y<="0101";
WHEN "11011111" =>Y<="0110";
WHEN "10111111" =>Y<="0111";
WHEN "01111111" =>Y<="1000";
WHEN OTHERS =>Y<="0000";
END CASE;
END PROCESS;
UU:QDLED7 PORT MAP(Y,A,B,C,DD,E,F,G);--組數(shù)顯示
BP<=NOT DDD; --驅(qū)動(dòng)發(fā)聲裝置工作信號(hào)輸出
END;
八位鎖存器:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SUOCQ IS
PORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CP,CR:IN STD_LOGIC;
Yout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END SUOCQ;
ARCHITECTURE QDQ OF SUOCQ IS
SIGNAL CLK,DDD:STD_LOGIC;
SIGNAL DO:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
PROCESS(CP,CLK,CR,DO)
BEGIN
IF CLK'EVENT AND CLK='1' THEN
DO<=D;
END IF;
IF CR='0' THEN DO<="11111111";
END IF;
IF DO="11111111" THEN DDD<='1';
ELSE DDD<='0';
END IF;
END PROCESS;
CLK<=CP AND DDD;
Yout<=DO;
END;
程序下載: http://www.torrancerestoration.com/f/qdq.rar