數(shù)字式競賽搶答器說明書_第1頁
數(shù)字式競賽搶答器說明書_第2頁
數(shù)字式競賽搶答器說明書_第3頁
數(shù)字式競賽搶答器說明書_第4頁
數(shù)字式競賽搶答器說明書_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、EDA技術(shù)課程設計說明書數(shù)字式競賽搶答器 學 院: 電氣與信息工程學院 學生姓名: 程 波 指導教師: 王曉麗 職稱/學位 碩士 專 業(yè): 電氣工程及其自動化 班 級: 電氣本1202班 學 號: 1230140210 完成時間: 2015年6月28日 摘 要 當今的社會競爭日益激烈,選拔人才,評選優(yōu)勝,知識競賽之類的活動愈加頻繁,那摩就必然離不開搶答器。搶答器是為智力競賽參賽者答題時進行搶答而設計的一種優(yōu)先判決器電路,競賽者可以分為若干組,搶答時各組對主持人提出的問題要在最短的時間內(nèi)做出判斷,并按下?lián)尨鸢存I回答問題。當?shù)谝粋€人按下按鍵后,則在顯示器上顯示該組的號碼,對應的燈亮,同時電路將其他

2、各組按鍵封鎖,使其不起作用。若搶答時間內(nèi)無人搶答,則報警燈亮?;卮鹜陠栴}后,由主持人將所有按鍵恢復,重新開始下一輪搶答。此次課程設計的內(nèi)容是設計一個可容納四組參賽者同時搶答的數(shù)字搶答器。主要模塊有搶答鑒別模塊、計時模塊、犯規(guī)模塊、計分模塊以及顯示模塊,這些模塊的組合構(gòu)成了搶答器系統(tǒng)框圖。通過編寫相應的VHDL程序?qū)崿F(xiàn)即功能仿真,頂層文件及整體仿真。關鍵詞:搶答器;VHDL目 錄1 緒論1 2 搶答器的設計要求23 搶答器的功能模塊3 3.1 搶答器的搶答鑒別模塊設計3 3.1.1 搶答鑒別的功能3 3.1.2 搶答鑒別模塊的時序仿真圖3 3.2 搶答器的計時模塊設計4 3.2.1 計時模塊的功

3、能4 3.2.2 計時模塊的時序仿真圖4 3.3 搶答器的計分模塊設計5 3.3.1 計分模塊的功能5 3.3.2 計分模塊的時序仿真圖5 3.4 搶答器的譯碼顯示模塊設計6 3.4.1 譯碼顯示模塊的功能6 3.4.2 譯碼顯示模塊的時序仿真圖6 3.5 搶答器的犯規(guī)模塊設計7 3.5.1 犯規(guī)模塊的功能7 3.5.2 犯規(guī)模塊的時序仿真圖74 搶答器的頂層原理圖設計8 4.1 頂層原理圖的源文件8 4.2 頂層設計的時序仿真圖8結(jié)束語10參考文獻11致謝12附錄13 附錄A 搶答鑒別模塊VHDL源程序13 附錄B 計時模塊VHDL源程序15 附錄C 計分模塊VHDL源程序18 附錄D 譯碼

4、顯示模塊VHDL源程序21 附錄E 犯規(guī)模塊VHDL源程序22I1 緒論 EDA是電子設計自動化(Electronic Design Automation)的縮寫,在20世紀90年代初從計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發(fā)展而來的。EDA技術(shù)就是以計算機為工具,設計者在EDA軟件平臺上,用硬件描述語言VHDL完成設計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。隨著電子技術(shù)和計算機技術(shù)的飛速發(fā)展,電子線路的設計工作也日益顯得重要。

5、經(jīng)過人工設計、制作實驗板、調(diào)試再修改的多次循環(huán)才定型的傳統(tǒng)產(chǎn)品設計方法必然被計算機輔助設計所取代,因為這種費時費力又費資源的設計調(diào)試方法既增加了產(chǎn)品開發(fā)的成本,又受到實驗工作場地及儀器設備的限制。為了克服上述困難,加拿大Interactive Image Technologies公司推出的基于Windows 9598NT操作系統(tǒng)的EDA軟件(Electronics Workbench“電子工作臺”,EWB)。他可以將不同類型的電路組合成混合電路進行仿真。EWB是用在計算機上作為電子線路設計模擬和仿真的新的軟件包,是一個具有很高實用價值的計算機輔助設計工具。目前已在電子工程設計等領域得到了廣泛地

6、應用。與目前流行的電路仿真軟件相比較,EWB具有界面直觀、操作方便等優(yōu)點。他改變了有些電路仿真軟件輸入電路采用文本方式的不便之處,該軟件在創(chuàng)建電路、選用元器件的測試儀器等均可以直接從屏幕圖形中選取,而且測試儀器的圖形與實物外形基本相似,從而大大提高了電子設計工作的效率。2 搶答器的設計要求 在許多比賽活動中,為了準確、公正、直觀地判斷出第一搶答者,通常設置一臺搶答器,通過數(shù)顯、燈光及音響等多種手段指示出第一搶答者。同時,還可以設置計分、犯規(guī)及獎懲計錄等多種功能。本設計的具體要求是:設計一個課容納四組參賽者同時搶答的數(shù)字搶答器,可判斷第一搶答者并報警指示搶答成功,其他組再搶答均無效。若提前搶答則

7、對相應的搶答組發(fā)出警報。同時,要求給出系統(tǒng)總體組成框圖,設計思路,完成以上模塊的VHDL文件并進行仿真驗證。3 搶答器的功能模塊 3.1 搶答器的搶答鑒別模塊設計3.1.1 搶答鑒別模塊的功能該模塊主要實現(xiàn)搶答過程中的搶答功能,并能對超前搶答進行警告。同時,搶答鑒別模塊還用來準確直觀地判斷A、B、C、D四組搶答者誰最先按下按鈕,并為顯示端送出信號,通過譯碼顯示和報警等途徑使觀眾能夠清楚地知道是哪一組搶答成功,能記錄無論是正常搶答還是超前搶答者的臺號,并且能實現(xiàn)當有一路搶答按鍵按下時,該路的搶答信號會將其余信號封鎖。它是整個系統(tǒng)的核心部分。同時組別顯示端為下一模塊輸入信號,以便主持人為該組搶答成

8、功者進行加分的操作。搶答鑒別模塊設計圖如圖1所示,其VHDL源程序見附錄A。圖1 搶答鑒別模塊設計圖3.1.2 搶答鑒別模塊的時序仿真圖 如圖2,為搶答鑒別模塊的時序仿真圖。搶答時設置時鐘信號CLK,在搶答時需要一個允許開始搶答信號,設置為states,該信號輸入后,指示燈亮,信號為LED,提示選手開始搶答,為了鑒別搶答者,設置A、B、C、D為了使系統(tǒng)重新進入搶答狀態(tài),還需要一個復位信號,設置為CLR。從仿真圖中可以看出,A的速度最快,但明顯有一點搶先,緊隨其后的是B,C,D,這三人均沒有搶先,而且可以看出,搶答開始后,燈LED0亮。圖2 搶答鑒別模塊的時序仿真圖3.2 搶答器的計時模塊設計3

9、.2.1 計時模塊的功能該模塊主要實現(xiàn)搶答過程中的計時功能,在有搶答開始后進行所設時間的倒計時,并且在倒計時后無人搶答顯示超時并報警。設置搶答時鐘信號為clk,計時預置控制端ldn,系統(tǒng)復位清零信號為clr,搶答使能信號為en,計時預置數(shù)據(jù)調(diào)整按鈕個位為ta,十位為tb。計時輸出信號端qa3.0和qb3.0。計時模塊設計圖如圖3所示,其VHDL源程序見附錄B。圖3 計時模塊設計圖 3.2.2 計時模塊的時序仿真圖 如圖4,為搶答器的計時模塊的時序仿真圖。當清零信號clr=1時,模塊輸出信號qa=0000,qb=0000。當預置控制信號ldn=1可以通過ta來調(diào)整qa,ta來一次高電平,則qa的

10、數(shù)值就加1;用tb來調(diào)整qb,通過這兩個調(diào)整信號可調(diào)整參賽者答題所需要的時間。在clr=0,ldn=0,en=1時,通過時鐘信號clk的上升沿來進行倒計時。圖4 計時模塊的時序仿真圖3.3 搶答器的計分模塊設計3.3.1 計分模塊的功能 系統(tǒng)的輸入信號為:加分按鈕端ADD,選擇組別號輸入端CHOSE3.0;系統(tǒng)的輸出信號為:A組分數(shù)輸出端A23.0、A13.0、A03.0B組分數(shù)輸出端B23.0、B13.0、B03.0,C組分數(shù)輸出端C23.0、C13.0、C03.0。 計分模塊設計圖如圖5所示,其VHDL源程序見附錄C。圖5 計分模塊設計圖 3.3.2 計分模塊的時序仿真圖 如圖6,為搶答器

11、的計分模塊的時序仿真圖。計分模塊的運行方式是按照十進制進行加法,即當時鐘出現(xiàn)上升沿時就進行加一的操作。計分模塊為哪組進行計分取決于鑒別模塊的輸入信號CHOSE,當CHOSE=0001時表示A組最先搶答,則在此模塊中為A組計分;當CHOSE=0010時表示B組最先搶答,則在此模塊中為B組計分;當CHOSE=0100時表示C組最先搶答,則在此模塊中為C組計分;當CHOSE=1000時表示D組最先搶答,則在此模塊中為D組計分。圖6 計分模塊的時序仿真圖3.4 搶答器的譯碼顯示模塊設計3.4.1 譯碼顯示模塊的功能 該模塊實際上是一個譯碼器,譯碼器是組合邏輯電路的一個重要的器件,該模塊中主要實現(xiàn)搶答過

12、程中將BCD碼轉(zhuǎn)化成7段數(shù)碼管的功能。in43.0為輸入信號,out76.0為輸出信號。譯碼顯示模塊設計圖如圖7所示,其VHDL源程序見附錄D。圖7 譯碼顯示模塊設計圖 3.4.2 譯碼顯示模塊的時序仿真圖如圖8,為搶答器的譯碼顯示模塊的時序仿真圖。當輸入0001,輸出0000110,即在共陰極數(shù)碼管上顯示1;即顯示A組搶答成功。當輸入0010,輸出1011011,即在共陰極數(shù)碼管上顯示2;即顯示B組搶答成功。當輸入0011,輸出1001111,即在共陰極數(shù)碼管上顯示3;即顯示C組搶答成功。當輸入0100,輸出1100110,即在共陰極數(shù)碼管上顯示4;即顯示D組搶答成功。圖8 譯碼顯示模塊的時

13、序仿真圖3.5 搶答器的犯規(guī)模塊設計3.5.1 犯規(guī)模塊的功能 該模塊主要實現(xiàn)搶答過程中的報警功能,當主持人按下控制鍵,在有限的時間內(nèi),沒有人搶答或是主持人未按下控制按鈕就搶答時開始報警,計數(shù)開始狀態(tài)start,計數(shù)輸入信號a、b、c、d以及狀態(tài)輸出信號y。犯規(guī)模塊設計圖如圖9所示,其VHDL源程序見附錄E。圖9 犯規(guī)模塊設計圖 3.5.2 犯規(guī)模塊的時序仿真圖 如圖10,為搶答器的犯規(guī)模塊的時序仿真圖。如圖,當B組有人在未允許搶答之前搶答,其輸出報警信號y為高電平。圖10 犯規(guī)模塊的時序仿真圖4 搶答器的頂層原理圖設計4.1 頂層原理圖的源文件單獨模塊只有彼此聯(lián)系起來構(gòu)成一個完整的系統(tǒng),才能

14、實現(xiàn)其功能,這個過程有兩種實現(xiàn)方法:元件例化和元器件圖示連線。為了能直觀的表示各模塊之間的連接關系。我采用元器件圖示連線,這種連線方法思路清晰可見,而且用的時候很簡單方便,即使出現(xiàn)錯誤也很好檢查。 按照要求,我們可以將整個系統(tǒng)分為五個主要模塊:搶答鑒別模塊;搶答計時模塊;搶答計分模塊;譯碼顯示模塊和犯規(guī)模塊。對于需顯示的信息,需要增加或外接譯碼器,進行顯示譯碼。考慮到實驗開發(fā)平臺提供的輸出顯示資源的限制,我們將組別顯示和計時顯示的譯碼器內(nèi)設,而將各組的計分顯示的譯碼器外接。整個系統(tǒng)的總的頂層設計圖如圖11所示。圖11 搶答器總的頂層設計圖4.2 頂層設計的時序仿真圖 如圖12,為搶答器的頂層設

15、計的時序仿真圖。從仿真圖中可以看出,當允許答題后,四組(A、B、C、D)任意一組搶答時,在規(guī)定的時間搶答成功,即該組就加分。圖中A組,搶答成功加分一次,LED0被點亮,其SCOREA加1。譯碼顯示模塊(YMSC)顯示對應組號(0000110),即為1。B組搶答成功兩次,LED1被點亮,其SCOREA加2。譯碼顯示模塊(YMSC)顯示對應組號(1011011),即為2。D組搶答成功三次,LED3被點亮,其SCOREA加3。譯碼顯示模塊(YMSC)顯示對應組號(1111111),即為8。圖12 頂層設計的時序仿真圖 結(jié)束語本次的EDA課程設計雖然只有短暫的一周時間,但是通過實踐,使我對EDA技術(shù)有

16、了更進一步的了解。同時,大致懂得了一個課題制作的具體流程和實施方法。另外,課程設計對Quartus軟件的使用要求較高,從而使我能較為熟練的運用此軟件。在設計時,采用模塊化的設計思路使得問題變的簡單明了,大大縮短了時間,降低了發(fā)生錯誤的機侓,也便于修改和更新。課程設計中,需要找很多資料,在當今的信息化環(huán)境中,雖然資料很多,但需要仔細斟酌才能找到所要的。這次的課程設計很好的鍛煉了這種能力。此外,與同學和老師的交流必不可少,我從中也學到了不少東西。課程設計是一次很好的鍛煉機會,我從中學的很多知識對將來的學習和工作都有很大的幫助,十分感謝學校能提供這樣一個機會。參考文獻1潘松,黃繼業(yè).EDA技術(shù)與VH

17、DLM(第2版).北京:清華大學出版社,20072曹昕燕,周鳳臣,聶春燕,EDA技術(shù)實驗與課程設計M.北京:清華大學出版社, 20063潘松,黃繼業(yè).EDA技術(shù)實用教程-VHDL版M(第四版).北京:科學出版社,20104杭州康芯電子有限公司GW48-PK3實驗系統(tǒng)說明書. 杭州康芯電子有限公司,2006 5姜雪松,吳鈺淳.VHDL設計實例與仿真M.機械工業(yè)出版社,20076李偉英,謝完成.基于EDA技術(shù)的搶答器的設計與實現(xiàn)J.科學技術(shù)與實現(xiàn),2008.8(11) 致 謝在這次設計中,我花了不少的時間,其中有苦也有樂??嗟氖俏腋冻隽瞬簧俚暮顾?,樂的是在付出的過程中我得到了許多,也學會了許多。因

18、為一個人的能力畢竟有限,在設計方面難免會出現(xiàn)這樣或那樣的錯誤,但正是這些促進了我的進步。根據(jù)對整體結(jié)構(gòu)的分析,我采用層次結(jié)構(gòu)化的設計概念,將此項設計任務分成若干模塊,規(guī)定每一模塊的功能和各模塊之間的接口,然后再將各模塊合起來聯(lián)試,這就培養(yǎng)了我對層次化設計的概念。在此次課程設計中,我真正體會到了知識地重要性。在設計的過程中,遇到問題我會先獨立思考,到自己不能解決的時候我就會和同學討論,實在解決不了就向老師請教,應該說從功能的實現(xiàn)到流程圖的繪制,從程序的編寫到程序的檢查,從程序的調(diào)試到文檔的書寫,其間每一個過程都凝集著大家對我的支持。最后,在設計的過程中我進一步養(yǎng)成了軟件設計的方法,完成了一個項目

19、的程序編寫,進一步了解了設計的步驟,也進一步加深了對課程的理解,增強了對本課程的興趣,為以后的工作積累了一定的經(jīng)驗,在這次課程設計中,非常感謝王曉麗老師為我疑難解惑,也感謝同學們對我的幫助。附 錄附錄A 搶答鑒別模塊VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity QIANGDA is port(CLR,CLK:in std_logic; A,B,C,D:in std_logic; states: buffer std_logic_vector(3 downto 0);

20、LED: buffer std_logic_vector(3 downto 0); warm: out std_logic);end entity QIANGDA;architecture art of QIANGDA is signal Q: std_logic_vector(3 downto 0);beginp1:process(A,B,C,D,CLR,CLK)beginif CLR='1' then warm<='0' Q<="0000" elsif CLK'event and CLK='1' the

21、n if (A='1'or Q(0)='1')and not (Q(1)='1'or Q(2)='1'or Q(3)='1') then Q(0)<='1' end if; if (B='1'or Q(1)='1')and not (Q(0)='1'or Q(2)='1'or Q(3)='1') then Q(1)<='1' end if; if (C='1'or Q(2)=&

22、#39;1')and not (Q(0)='1'or Q(1)='1'or Q(3)='1') then Q(2)<='1' end if; if (D='1'or Q(3)='1')and not (Q(0)='1'or Q(1)='1'or Q(2)='1') then Q(3)<='1' end if; warm<=Q(0)or Q(1)or Q(2)or Q(3);end if;end process

23、p1;p2:process(states(0),states(1),states(2),states(3),LED)begin if(Q="0000")then states<="0000" elsif(Q="0001")then states<="0001" elsif(Q="0010")then states<="0010" elsif(Q="0100")then states<="0100" elsif(Q

24、="1000")then states<="1000" end if; LED<=Q;end process p2;end art; 附錄B 計時模塊VHDL源程序library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity JISHI is port(clr,ldn,en,clk:in std_logic; ta,tb:in std_logic; qa:out std_logic_vector(3 downto 0); qb:out std_

25、logic_vector(3 downto 0);end entity JISHI;architecture art of JISHI is signal da: std_logic_vector(3 downto 0); signal db: std_logic_vector(3 downto 0);begin process(ta,clr) isbegin if(clr='1')then da<="1001" elsif(ta'event and ta='1')then if(ldn='1')then if(

26、da="0000")then da<="1001" else da<=da-1; end if; end if; end if;end process;process(tb,clr) isbegin if(clr='1')then db<="0101" elsif(tb'event and tb='1')then if(ldn='1')then if db="0000"then db<="1001" else db&

27、lt;=db-1; end if; end if; end if;end process;process(clk) is variable tmpa: std_logic_vector(3 downto 0); variable tmpb: std_logic_vector(3 downto 0);begin if(clr='1')then tmpa:="0000" tmpb:="0000" elsif clk'event and clk='1' then if en='1'then tmpa:=d

28、a; tmpb:=db; elsif tmpa="0000"then if tmpb="0000"then tmpa:="0000" else tmpa:="1001" end if; if tmpb="0000"then tmpb:="0000" else tmpb:=tmpb-1; end if; else tmpa:=tmpa-1; end if; end if; qa<=tmpa; qb<=tmpb;end process;end architecture

29、 art; 附錄C 計分模塊VHDL源程序library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity JIFEN is port( ADD: in std_logic; CHOSE:in std_logic_vector(3 downto 0); A2,A1,A0:OUT std_logic_vector(3 downto 0); B2,B1,B0:OUT std_logic_vector(3 downto 0); C2,C1,C0:OUT std_logic_vector(3 downt

30、o 0); D2,D1,D0:OUT std_logic_vector(3 downto 0); END JIFEN; ARCHITECTURE rtl OF JIFEN IS BEGIN PROCESS(ADD,CHOSE) VARIABLE POINTS_A2,POINTS_A1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_B2,POINTS_B1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_C2,POINTS_C1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIAB

31、LE POINTS_D2,POINTS_D1: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF ADD'EVENT AND ADD='1' THEN IF CHOSE="0001" THEN IF POINTS_A1="1001" THEN POINTS_A1:="0000" IF POINTS_A2="1001" THEN POINTS_A2:="0000" ELSE POINTS_A2:=POINTS_A2+'1' END

32、 IF; ELSE POINTS_A1:=POINTS_A1+'1' END IF; ELSIF CHOSE="0010" THEN IF POINTS_B1="1001" THEN POINTS_B1:="0000" IF POINTS_B2="1001" THEN POINTS_B2:="0000" ELSE POINTS_B2:=POINTS_B2+'1' END IF; ELSE POINTS_B1:=POINTS_B1+'1' END I

33、F; ELSIF CHOSE="0100" THEN IF POINTS_C1="1001" THEN POINTS_C1:="0000" IF POINTS_C2="1001" THEN POINTS_C2:="0000" ELSE POINTS_C2:=POINTS_C2+'1' END IF; ELSE POINTS_C1:=POINTS_C1+'1' END IF; ELSIF CHOSE="1000" THEN IF POINTS_D

34、1="1001" THEN POINTS_D1:="0000" IF POINTS_D2="1001" THEN POINTS_D2:="0000" ELSE POINTS_D2:=POINTS_D2+'1' END IF; ELSE POINTS_D1:=POINTS_D1+'1' END IF; END IF; END IF; A2<=POINTS_A2; A1<=POINTS_A1; A0<="0000" B2<=POINTS_B2; B1<=POINTS_B1; B0<="0000" C2<=POINTS_C2; C1<=POINTS_C1; C0<="0000" D2<=POINTS_D2; D1<=POINTS_D1; D0<="0000" END PROCESS; END rtl;附錄D 譯碼顯示模塊VHDL源程序library ieee; use ieee.std_logic_1164.all; ENTITY XIANSHI IS PORT(DIN : IN STD_LOGIC_VECTOR(3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論