【正文】
于等待接 收觸發(fā)輸入狀態(tài);當任一開關(guān)按下時,輸出信號中必有一路為低電平,則反饋信號變?yōu)榈碗娖?,鎖存器剛剛接收到的開關(guān)被鎖存,這時其它開關(guān)信息的輸入將被封鎖。由此可見,觸發(fā)鎖存電路具有時序電路的特征,是實現(xiàn)搶答器功能的關(guān)鍵。 鑒別鎖存電路可以由 VHDL 程序來實現(xiàn),以下是一斷鑒別鎖存的 VHDL 程序: BEGIN PROCESS(CLK) IS BEGIN IF CLR=39。039。 THEN STATES=0000。 A1=39。039。B1=39。039。C1=39。039。D1=39。039。 ELSIF CLK39。EVENT AND CLK=39。139。 THEN IF (A=39。039。AND B=39。139。AND C=39。139。AND D=39。139。) THEN A1=39。139。 B1=39。039。 C1=39。039。 D1=39。039。 STATES=W1。 ELSIF (A=39。139。AND B=39。039。AND C=39。139。AND D=39。139。) THEN A1=39。039。 B1=39。139。 C1=39。039。 D1=39。039。 STATES=W2。 ELSIF (A=39。139。AND B=39。139。AND C=39。039。AND D=39。139。) THEN A1=39。039。 B1=39。039。 C1=39。139。 D1=39。039。 STATES=W3。 ELSIF (A=39。139。AND B=39。139。AND C=39。139。AND D=39。039。) THEN A1=39。039。 B1=39。039。 C1=39。039。 D1=39。139。 STATES=W4。 ELSE A1=39。039。 B1=39。039。 C1=39。039。 D1=39。039。 STATES=0000。 END IF。 END IF。 END PROCESS。 END ARCHITECTURE ART。 答題計時模塊 的設(shè)計 答題計時模塊的任務(wù)是當主持人啟動這個計時開關(guān)時開始計時,如果在規(guī)定的時間 《基于 VHDL 的智力競賽搶答器的設(shè)計與實現(xiàn) 》 第 6 頁 共 25 頁 內(nèi)答完題則答題有效,如果在規(guī)定的時間內(nèi)沒有完成,則答題無效。計時器從規(guī)定的時間倒計時,計時為零時計時結(jié)束。答題有無效作憑主持人來判斷。本模塊由比較器 C1和 C2,基本 RS 觸發(fā)器和三極管 T1 組成。兩個比較器的翻轉(zhuǎn)分別由高電平觸發(fā) THR 和低電平觸發(fā) TRI的輸入電壓與比較基準電壓比較決定,其輸出控制 RS觸發(fā)器和放電 BJT晶體客 T 的狀態(tài)。 計時電路可以由 VHDL 程序來實現(xiàn),以下是一斷計時的 VHDL 程序: BEGIN IF CLR=39。039。 THEN DA=0000。 DB=0000。 ELSIF clock39。event and clock=39。139。 then IF TA=39。039。 THEN IF DA=1001 THEN DA=0000。 ELSE DA=DA+39。139。 。 END IF。 END IF。 IF TB=39。039。 THEN IF DB=1001 THEN DB=0000。 ELSE DB=DB+39。139。 END IF。 END IF。 END IF。 END PROCESS。 PROCESS(clock) IS VARIABLE TMPA: STD_LOGIC_VECTOR(3 DOWNTO 0)。 VARIABLE TMPB: STD_LOGIC_VECTOR(3 DOWNTO 0)。 《基于 VHDL 的智力競賽搶答器的設(shè)計與實現(xiàn) 》 第 7 頁 共 25 頁 BEGIN IF CLR=39。039。 THEN TMPA:=0000。 TMPB:=0000。 ELSIF clock39。EVENT AND clock=39。139。 THEN IF LDN=39。039。 THEN TMPA:=DA。 TMPB:=DB。 ELSIF EN=39。139。 THEN IF TMPA=0000 THEN TMPA:=1001。 IF TMPB=0000 THEN TMPB:=1001。 ELSE TMPB:=TMPB1。 END IF。 ELSE TMPA:=TMPA1。 END IF。 END IF。 END IF。 QA=TMPA。 QB=TMPB。 END PROCESS。 END ARCHITECTURE ART。 計分電路模塊 的設(shè)計 計分電路模塊是給答題人計分用的,按照規(guī)定如果主持人判定答題有效則加分,如無效則按照設(shè)定不加分或者扣分。并將分數(shù)顯示在計分屏幕上。本模塊采用 74LS112 芯片,設(shè)置成兩個電路一個加法器和一個減法器。個位電路始終顯示為 0 所以將它直接接顯示器的個位,再把十位的看成個位加減,依此類推。電路中設(shè)加分,減分和復位按鈕。加法器和減法器電路中的單脈沖分別為加分和減分按鈕,而兩個電路中的清零電平開關(guān)就是復位按鈕。 計分電路可以由 VHDL 程序來實現(xiàn),以下是一斷計分的 VHDL 程序: BEGIN IF (clk39。EVENT AND clk=39。139。) THEN IF RST=39。039。 THEN POINTS_A1:=0000。 《基于 VHDL 的智力競賽搶答器的設(shè)計與實現(xiàn) 》 第 8 頁 共 25 頁 POINTS_B1:=0000。 POINTS_C1:=0000。 POINTS_D1:=0000。 ELSIF ADD=39。039。 then t:=t+1。 IF t=2500000 then t:=0。 IF CHOS=0001 THEN IF POINTS_A1=1001 THEN POINTS_A1:=0000。 ELSE POINTS_A1:=POINTS_A1+39。139。 END IF。 ELSIF CHOS=0010 THEN IF POINTS_B1=1001 THEN POINTS_B1:=0000。 ELSE POINTS_B1:=POINTS_B1+39。139。 END IF。 ELSIF CHOS=0011 THEN IF POINTS_C1=1001 THEN POINTS_C1:=0000。 ELSE POINTS_C1:=POINTS_C1+39。139。 END IF。 ELSIF CHOS=0100 THEN IF POINTS_D1=1001 THEN POINTS_D1:=0000。 ELSE POINTS_D1:=POINTS_D1+39。139。 END IF。 《基于 VHDL 的智力競賽搶答器的設(shè)計與實現(xiàn) 》 第 9 頁 共 25 頁 ELSIF t:=0。 END IF。 END IF。 END IF。 END IF。 AA1=POINTS_A1。 BB1=