
四路電子搶答器EDA課程設(shè)計報告
13頁EDA技術(shù) 課程設(shè)計報告專 業(yè): 電子信息工程 班 級: 101 姓 名: XXX 學(xué) 號: 1007400XXX 指導(dǎo)教師: 秦劍 2013年 4 月 22 日一、設(shè)計題目 四路電子搶答器二、設(shè)計目的 1.掌握使用VHDL語言設(shè)計小型數(shù)字電路系統(tǒng); 2.掌握應(yīng)用QUARTUSⅡ軟件設(shè)計電路的流程; 3.掌握電子搶答器的設(shè)計方法三、設(shè)計任務(wù)及要求(1)設(shè)計一個可以容納四組參賽隊進行比賽的電子搶答器2)具有第一搶答信號的鑒別和鎖存功能在主持人發(fā)出搶答指令后,若有參賽者按搶答器按鈕,則該組指示燈亮,顯示器顯示出搶答者的組別同時,電路處于自鎖存狀態(tài),使其他組的搶答器按鈕不起作用3)具有計時功能在初始狀態(tài)時,主持人可以設(shè)置搶答時間的初始值在主持人宣布搶答開始,并給出倒計時記數(shù)開始信號以后,搶答者可以開始搶答此時,顯示器從初始值開始倒計時,計到0時停止計數(shù),同時LED亮起超時警報信號,并反饋到鎖存模塊進行鎖存,使得參賽者不能進行搶答。
若參賽者在規(guī)定的時間內(nèi)搶答,則計數(shù)模塊自動終止計數(shù)4)具有計分功能在初始狀態(tài)時,主持人可以給每組設(shè)置初始分值每組搶答完畢后,由主持人進行打分,答對一次加1分四、設(shè)計思路:系統(tǒng)的輸入信號有:各組的搶答按鈕A、B、C、D,系統(tǒng)允許搶答信號STA,系統(tǒng)清零信號CLR,系統(tǒng)時鐘信號CLK,計分復(fù)位端CLR,加分按鈕端ADD;系統(tǒng)的輸出信號有:四個組搶答成功與否的指示燈控制信號輸出口可用如LED_A、LED_B、LED_C、LED_D表示,四個組搶答時的計時數(shù)碼顯示控制信號,搶答成功組別顯示的控制信號,各組計分動態(tài)顯示的控制信號整個系統(tǒng)至少有四個主要模塊:搶答鑒別模塊;搶答計時模塊;搶答計分模塊;分頻模塊搶答鑒別及鎖存分頻計數(shù)計分器數(shù)碼管顯示數(shù)碼管顯示 系統(tǒng)組成框圖五、各模塊設(shè)計 (一)搶答鑒別和鎖存模塊搶答隊伍共分為四組A,B,C,D當主持人按下STA鍵同時R輸入低電平時,對應(yīng)的START指示燈亮,同時EN端輸出高電平,這時四組隊伍才可以進行搶答,即搶答信號A,B,C,D輸入電路中后,通過判斷是哪個信號最先為‘1’得出搶答成功的組別1,2,3或4組,然后將組別號輸出到相應(yīng)端A1,B1,C1,D1,此時START指示燈滅掉同時EN端輸出低電平,并將組別序號換算為四位二進制信號輸出到STATES[3..0]端鎖存,等待輸出到計分和顯示單元。
一旦R輸入高電平,則把“0000”輸出到STATES[3..0]端鎖存,同時四組隊伍無法進行搶答其模塊如下: 搶答鑒別及鎖存模塊1.搶答鑒別及鎖存源程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qdjb_sc is port(STA,RST:in std_logic; A,B,C,D,R:in std_logic; A1,B1,C1,D1,START:out std_logic; EN : out std_logic; STATES:out std_logic_vector(3 downto 0));end qdjb_sc;architecture one of qdjb_sc issignal abc:std_logic_vector(4 downto 0); signal tmp:std_logic; beginabc<=R&A&B&C&D;process(abc,RST,tmp) begin IF RST='1' then tmp<='0'; A1<='0'; B1<='0'; C1<='0'; D1<='0';START<='0';EN<='0';STATES<="0000"; end if; if STA='1' then tmp<='1'; EN<='1'; START<='1'; end if; if tmp='1' then CASE abc IS when "01000" => A1<='1'; B1<='0'; C1<='0'; D1<='0'; STATES<="0001"; tmp<='0'; EN<='0';START<='0'; when "00100" => A1<='0'; B1<='1'; C1<='0'; D1<='0'; STATES<="0010"; tmp<='0'; EN<='0';START<='0'; when "00010" => A1<='0'; B1<='0'; C1<='1'; D1<='0'; STATES<="0011"; tmp<='0'; EN<='0';START<='0'; when "00001" => A1<='0'; B1<='0'; C1<='0'; D1<='1'; STATES<="0100"; tmp<='0'; EN<='0';START<='0'; when "10000" => A1<='0'; B1<='0'; C1<='0'; D1<='0'; STATES<="0000"; tmp<='0'; EN<='0';START<='0'; when others => A1<='0'; B1<='0'; C1<='0'; D1<='0'; STATES<="0000"; tmp<='1'; END CASE; END IF;end process;end one;2波形仿真:仿真圖說明:第一階段,在RST、STA輸入高電平后,START、EN輸出高電平,系統(tǒng)可以進行搶答。
然后B最先搶答,所以B1輸出高電平,同時START、EN改為輸出低電平,STATES[3..0]被鎖存為“0010”第二階段,當RST輸入高電平,所有輸出端復(fù)位,然后C進行了搶答,但輸出端沒有作出響應(yīng)當STA輸入高電平,START、EN輸出高電平,系統(tǒng)可以搶答,之后R輸入高電平,此時START、EN改為輸出低電平,系統(tǒng)被鎖,無法再進行搶答,所有輸出端輸出低電平,STATES[3..0]被鎖存為“0000”第三階段,當RST輸入高電平,所有輸出端復(fù)位,當STA輸入高電平,START、EN輸出高電平,A最先搶答,A1輸出高電平,同時START、EN改為輸出低電平,STATES[3..0]被鎖存為“0001”二)計分模塊在計分器電路的設(shè)計中,按照一般的設(shè)計原則,按一定數(shù)進制進行加減即可,但是隨著計數(shù)數(shù)目的增加,但由于實驗板上數(shù)碼管數(shù)目的限制在,每組都猜用十進制數(shù)計分,這種電路連線簡單方便clr為復(fù)位端,將計分起始分數(shù)設(shè)為0CHOS[3..0]端功能是鎖存已搶答成功的組別序號,當接加分按鈕ADD后,將給CHOS[3..0]所存的組別加分每按一次加1分,每組的分數(shù)將在對應(yīng)的數(shù)碼管上顯示其模塊如下: 計分模塊1.計分模塊源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jf is port(clr: in std_logic; add: in std_logic; chose: in std_logic_vector(3 downto 0); aa,bb: out std_logic_vector(3 downto 0); cc,dd: out std_logic_vector(3 downto 0));end jf;architecture two of jf isbegin p1: process(add,chose) is variable a2:std_logic_vector(3 downto 0); variable b2:std_logic_vector(3 downto 0); variable c2:std_logic_vector(3 downto 0); variable d2:std_logic_vector(3 downto 0); begin if(clr='1')then a2:="0000"; b2:="0000"; c2:="0000"; d2:="0000"; elsif(add'event and add='1')then if chose="0001"then if a2="1001"then a2:="0000"; else a2:=a2+'1'; end if; elsif chose="0010" then if b2="1001" then b2:="0000"; else b2:=b2+'1'; end if; elsif chose="0011"then if c2="1001"then c2:="0000"; else c2:=c2+'1'; end if; elsif chose="0100"then if d2="1001"then d2:="0000"; else d2:=d2+'1'; end if; end if; end if; aa<=a2; bb<=b2; cc<=c2。
