EDA課程設(shè)計——數(shù)字搶答器(共20頁)_第1頁
EDA課程設(shè)計——數(shù)字搶答器(共20頁)_第2頁
EDA課程設(shè)計——數(shù)字搶答器(共20頁)_第3頁
EDA課程設(shè)計——數(shù)字搶答器(共20頁)_第4頁
EDA課程設(shè)計——數(shù)字搶答器(共20頁)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上數(shù)字式競賽搶答器設(shè)計要求1、設(shè)計一個可容納4組參賽的數(shù)字式搶答器,每組設(shè)一個按鈕,供搶答使用。 2、搶答器具有第一信號鑒別和鎖存功能,使除第一搶答者外的按鈕不起作用。 3、設(shè)置一個主持人“復(fù)位”按鈕。 4、主持人復(fù)位后,開始搶答,第一信號鑒別鎖存電路得到信號后,有指示燈顯示搶答組別,揚聲器發(fā)出 23 秒的音響。 5、設(shè)置一個計分電路,每組開始預(yù)置 100 分,由主持人記分,答對一次加 10 分,答錯一次減 10 分。 1、總體方案設(shè)計原理及分析1.1、方案原理按照設(shè)計要求,設(shè)計一個4組參賽的搶答器,所以這種搶答器要求有四路不同組別的搶答輸入信號,并能識別最先搶答的信號

2、,直觀地通過數(shù)碼顯示和蜂鳴報警等方式提示主持人并顯示出組別;同時該系統(tǒng)還應(yīng)有復(fù)位功能。主持人按下系統(tǒng)復(fù)位鍵(RST),系統(tǒng)進入搶答狀態(tài),計分模塊輸出初始信號給數(shù)碼顯示模塊并顯示出初始值。當某參賽組搶先將搶答鍵按下時,系統(tǒng)將其余三路搶答信號封鎖,同時揚聲器發(fā)出2-3秒的聲音提示,組別顯示模塊送出信號給數(shù)碼顯示模塊,從而顯示出該搶答成功組臺號,并一直保持到下一輪主持人將系統(tǒng)清零為止。主持人對搶答結(jié)果進行確認,隨后,計時模塊送出倒計時計數(shù)允許信號,開始回答問題,計時顯示器則從初始值開始以計時,在規(guī)定的時間內(nèi)根據(jù)答題的正誤來確定加分或減分,并通過數(shù)碼顯示模塊將成績顯示出來。計時至0時,停止計時,揚聲器

3、發(fā)出超時報警信號,以中止未回答完問題。當主持人給出倒計時停止信號時,揚聲器停止鳴叫。若參賽者在規(guī)定時間內(nèi)回答完為題,主持人可給出倒計時計數(shù)停止信號,以免揚聲器鳴叫。主持人按下復(fù)位鍵,即RST為高電平有效狀態(tài),清除前一次的搶答組別,又可開始新的一輪的搶答。此搶答器的設(shè)計中采用自頂向下的設(shè)計思路,運用VHDL硬件描述語言對各個模塊進行層次化、系統(tǒng)化的描述,并且先設(shè)計一個頂層文件,再把各個模塊連接起來。1.2、方案設(shè)計框圖主持人控制開關(guān)搶答按鈕控制電路優(yōu)先編碼鎖存器報警電路譯碼電路顯示電路預(yù)制計分電路譯碼電路顯示電路 主電路 擴展功能電路圖1 方案系統(tǒng)結(jié)構(gòu)圖1.3、方案各路功能分析此方案是由主體電路

4、和擴展電路兩部分構(gòu)成,整個系統(tǒng)包括這樣幾個主要模塊:搶答鑒別模塊、搶答計時模塊、搶答計分模塊、譯碼顯示模塊、報警模塊。主體電路完成基本的搶答功能,接通電源時,主持人將開關(guān)置于“清除”位置,搶答器處于禁止工作狀態(tài),編號顯示器滅燈;搶答開始時,主持人將控制開關(guān)撥到“開始”位置,揚聲器給出聲響提示,當選手按動搶答鍵時,能顯示選手的編號,同時能封鎖輸入電路,禁止其他選手搶答。然后由譯碼顯示電路顯示編號,揚聲器發(fā)出短暫聲響,提醒主持人注意。擴展電路完成各選手的得分顯示以及報警功能。選手回答問題完畢,主持人操作計分開關(guān),計分電路采用十進制加/減計數(shù)器、數(shù)碼管顯示。本輪搶答完畢,主持人操作控制開關(guān),使系統(tǒng)回

5、復(fù)到禁止工作狀態(tài),以便進行下一輪搶答。系統(tǒng)的輸入信號有:各組的搶答按鈕s0、s1、s2、s3。系統(tǒng)清零信號CLR,系統(tǒng)時鐘信號CLK,復(fù)位信號RST,加分按鈕端ADD,計時中止信號stop;計時十位和個位信號tb,ta。;系統(tǒng)的輸出信號有:四個組搶答狀態(tài)的顯示LEDx(x表示參賽者的編號),四個組搶答時的計時數(shù)碼顯示控制信號若干,搶答成功組別顯示的控制信號若干,各組計分動態(tài)顯示的控制信號若干。2、主要模塊設(shè)計2.1、搶答鑒別模塊在這個模塊中主要實現(xiàn)搶答過程中的搶答鑒別功能。其電路框圖如下。其中,rst為復(fù)位信號,當該信號高電平有效時,電路無論處于何種狀態(tài)都恢復(fù)為初始狀態(tài),即所有的輸出信號都為0

6、;EN為搶答使能信號,該信號高電平有效;s0、s1、s2、s3為搶答按鈕,高電平時有效。當使能信號EN為低電平時,如果有參賽者按下按鈕,則提前搶答報警信號FALSE3.0的對應(yīng)位輸出高電平,以示警告;當EN為高電平時,首先將提前搶答報警信號FALSE3.0復(fù)位清0,然后根據(jù)選手按下?lián)尨鸢粹o的先后順序選擇最先搶答的信號,其對應(yīng)的搶答狀態(tài)顯示信號LEDALEDD輸出高電平,搶答成功組別編號由信號states輸出,并鎖存搶答器此時的狀態(tài),直到清0信號有效為止。在每一輪新的搶答之前,都要使用復(fù)位清零信號rst,清除上一輪搶答對判斷電路留下的使用痕跡,使電路恢復(fù)初始狀態(tài)。圖2 搶答鑒別模塊框圖2.2、計

7、時模塊 在這個模塊中主要實現(xiàn)搶答過程中的計時功能,在有組別搶答后開始倒計時,若在規(guī)定時間沒人回答,則超時報警。其中有系統(tǒng)復(fù)位信號rst;搶答使能信號s;無人搶答警報信號warn;計時中止信號stop;計時十位和個位信號tb,ta。 圖3 計時模塊框圖2.3、計分模塊搶答計分電路的設(shè)計一般按照一定數(shù)制進行加減即可,但隨著計數(shù)數(shù)目的增加,要將計數(shù)數(shù)目分解成十進制并進行譯碼顯示會變得較為復(fù)雜。為了避免該種情況,通常是將一個大的進制數(shù)分解為數(shù)個十進制以內(nèi)的進制數(shù),并將計數(shù)器級連。但隨著數(shù)位的增加,電路的接口也會相應(yīng)增加。因此,本設(shè)計采用IF語句從低往高判斷是否有進位,以采取相應(yīng)的操作,既減少了接口,又

8、簡化了設(shè)計。其電路框圖如下,該模塊輸入信號為加分選擇信號add和組別選擇信號chose3.0,其中,加分選擇信號add高電平有效,有效時對組別選擇信號chose3.0選擇的參賽組進行加分;組別選擇輸入信號chose3.0即搶答鑒別模塊的輸出信號states3.0。輸出信號分別對應(yīng)四組競賽者的得分。 圖4 計分模塊框圖2.4、譯碼顯示模塊譯碼顯示模塊用于顯示每組選手的分數(shù),計時的時間等信息。顯示電路的實質(zhì)就是一個簡單的LED共陰極顯示模塊的譯碼器。7段數(shù)碼管LED常用的一般8字型為a,b,c,d,e,f,g,P,其中P為小數(shù)點,共陰LED低電平有效。在這里我們不需要用到小數(shù)點位,因此用位寬為7的

9、矢量表示7段數(shù)碼管即可。7段LED共陰極顯示模塊的框圖如圖所示。其中,IN430為輸入信號,以4位2進制數(shù)表示;OUT760為輸出信號,將輸入的二進制數(shù)譯碼顯示為十進制數(shù)字的09。圖5 譯碼顯示模塊框圖2.5、報警模塊在這個模塊中主要實現(xiàn)搶答過程中的報警功能,當主持人按下控制鍵,有限時間內(nèi)有人搶答,指示燈顯示搶答組別,揚聲器發(fā)出 23 秒的音響。即有效電平輸入信號i;狀態(tài)輸出信號q。圖6 報警模塊框圖2.6、整體框圖從上述設(shè)計方案中我們可以大致得到數(shù)字競賽搶答器的系統(tǒng)框圖,如下圖所示,其中搶答時鐘信號clk2;系統(tǒng)復(fù)位信號rst;搶答使能信號s;搶答狀態(tài)顯示信號states;無人搶答警報信號w

10、arn;計時中止信號stop;計時十位和個位信號tb,ta。圖7 搶答器系統(tǒng)框圖3、仿真結(jié)果3.1、搶答鑒別模塊仿真搶答鑒別模塊的仿真波形圖如圖所示。當鑒別模塊的清零復(fù)位信號rst為高電平時,無論四組參賽者誰按下?lián)尨鸢粹o,系統(tǒng)輸出均為零,同時組別顯示端輸出信號也顯示為零;當清零信號rst為低電平時,s0、s1、s2、s3四組參賽者誰先按下?lián)尨鸢粹o,其對應(yīng)的顯示燈LEDx亮起,states3.0輸出搶答成功的選手編號。圖8 搶答鑒別模塊仿真波形圖3.2計時模塊計時模塊的仿真波形如圖所示。實現(xiàn)了搶答過程中的計時功能,在有搶答開始后進行30秒的倒計時,并且在30秒倒計時后無人搶答顯示超時并報警。圖9

11、 計時模塊仿真波形圖3.3計分模塊仿真系統(tǒng)設(shè)計過程中,當計分復(fù)位端RST=1時,并且組別輸入信號CHOSE=0000,其中的組別輸入信號是搶答鑒別模塊的輸出信號,計分器復(fù)位,此時以上四組都不會產(chǎn)生加減分操作。然而當計分復(fù)位端RST=0時,此時計分器可以計分。當CHOS=0001時,組別顯示為A組,此時主持人利用計分器對A組進行加減分操作;當CHOS=0010時,組別顯示為B組,此時主持人則利用計分器對B組進行加減分操作,以此類推。下圖仿真為A組回答正確,加分。圖10 計分模塊仿真波形圖3.4 譯碼模塊仿真 當in4= "0000" ,out7輸出"",此

12、時數(shù)碼管顯示0; 當in4= "0001" ,out7輸出"",此時數(shù)碼管顯示1; 當in4= "0010" ,out7輸出"",此時數(shù)碼管顯示2; 當in4= "0011" ,out7輸出"",此時數(shù)碼管顯示3; 當in4= "0100" ,out7輸出"",此時數(shù)碼管顯示4; 當in4= "0101" ,out7輸出"",此時數(shù)碼管顯示5; 當in4= "0110" ,ou

13、t7輸出"",此時數(shù)碼管顯示6; 當in4= "0111" ,out7輸出"",此時數(shù)碼管顯示7; 當in4= "1000" ,out7輸出"",此時數(shù)碼管顯示8; 當in4= "1001" ,out7輸出"",此時數(shù)碼管顯示9;圖11 譯碼顯示模塊仿真波形圖3.5、報警模塊仿真 在這個模塊中主要實現(xiàn)搶答過程中的報警功能,當主持人按下控制鍵,有限時間內(nèi)如果人搶答或是計數(shù)到時蜂鳴器開始報警,有效電平輸入信號i;狀態(tài)輸出信號q。仿真如下圖。圖12 報警模塊仿真

14、波形圖3.6、整體仿真對電路整體進行仿真,得出如下仿真波形圖12。圖中,當復(fù)位信號rst為高電平時,系統(tǒng)所有信號都清零;當主持人按下開始鍵,搶答器開始工作。圖13 整體仿真波形圖4、 原理連線圖根據(jù)系統(tǒng)設(shè)計要求,將各模塊連線得到如下系統(tǒng)框圖。主持人按下使能端EN,搶答器開始工作。四位搶答者誰先按下?lián)尨鸢粹o,則搶答成功,對應(yīng)的顯示燈亮起,并通過顯示電路模塊顯示參賽編號。搶答成功的選手進入答題階段,如果正確回答問題,則加分信號add有效,給相應(yīng)的參賽組加分。如果復(fù)位信號rst有效,使得搶答器在下一輪搶答前,其搶答成功的組別判斷恢復(fù)為初始狀態(tài),開始新一輪搶答。圖14 原理連線圖5、致謝對于此次課程設(shè)

15、計,首先我得誠摯的感謝我的指導(dǎo)老師,從設(shè)計、整改及論文的定稿過程中,自始至終都傾注著老師的心血。老師以嚴謹?shù)闹螌W之道、寬厚仁慈的胸懷、積極樂觀的生活態(tài)度,兢兢業(yè)業(yè)的工作作風為我樹立了學習的典范,他們的教誨與鞭策將激勵我在學習和生活的道路上勵精圖治,開拓創(chuàng)新。他們淵博的知識、開闊的視野和敏銳的思維給了我深深的啟迪。我真誠地謝謝老師們的指導(dǎo)和關(guān)懷。于個人,通過這次課程設(shè)計,我進一步加深了對電子設(shè)計自動化的了解。并進一步熟練了對QuartusII軟件的操作。EDA這門課程也不像學習理論般那么空洞,有了更加貼切的了解及運用。做課程設(shè)計時,先查閱相關(guān)知識,把原理吃透,確定一個大的設(shè)計方向,在按照這個方向

16、分模塊的把要實現(xiàn)的功能用流程圖的形式展示。最后參照每個模塊把輸入和輸出引腳設(shè)定,運用我們所學的VHDL語言進行編程。總之,通過這次的設(shè)計,進一步了解了EDA技術(shù),收獲很大,對軟件編程、排錯調(diào)試、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。6、詳細儀器清單名稱型號數(shù)量計算機聯(lián)想1Quartus II開發(fā)軟件9.01EDA/SOPC實驗開發(fā)系統(tǒng)GW48-PK21參考文獻1 孫俊逸.EDA技術(shù)課程設(shè)計.華中科技大學出版社.2008.2-122 潘松.EDA應(yīng)用技術(shù).北京理工大學出版社.20033 徐志軍.EDA技術(shù)與PLD設(shè)計M.北京科學出版社.20024 黃仁欣.EDA技術(shù)實用教程.清華大

17、學出版社.20045 崔建明.電工電子EDA仿真技術(shù).北京高等教育出版社,20046 曹昕燕、周風臣、聶春燕.EDA技術(shù)試驗與課程設(shè)計.清華大學出版社.20077 謝自美.電子線路設(shè)計實驗測試.華中科技大學出版社.19998 趙世強、許杰.電子電路EDA技術(shù).西安電子科技大學出版社.20019 江國強.EDA技術(shù)習題與實驗.電子工業(yè)出版社.201210 高有堂.EDA技術(shù)及應(yīng)用實踐.清華大學出版社.2006-08附錄VHDL程序1) 搶答鑒別模塊library ieee;use ieee.std_logic_1164.all;entity qdjb isport(rst:in std_logi

18、c; EN:in std_logic; s0,s1,s2,s3:in std_logic; LEDA:out std_logic; LEDB:out std_logic; LEDC:out std_logic; LEDD:out std_logic; false:out std_logic_vector(3 downto 0); states:out std_logic_vector(3 downto 0);end qdjb;architecture one of qdjb issignal tmp: std_logic_vector(3 downto 0);signal tag: std_l

19、ogic;begintmp<=s0&s1&s2&s3;process(rst,EN,s0,s1,s2,s3,tmp)begin if rst='1'THEN states<="0000" LEDA<='0' LEDB<='0' LEDC<='0' LEDD<='0' false<="0000" tag<='0'elsif EN='0'then if s0='1

20、9;thenfalse(3)<='1'end if;if s1='1'thenfalse(2)<='1'end if;if s2='1'thenfalse(1)<='1'end if;if s3='1'thenfalse(0)<='1'end if;elsefalse<="0000"if tag='0'then if tmp="1000"then LEDA<='1' LEDB&

21、lt;='0' LEDC<='0' LEDD<='0' states<="1000" tag<='1' elsif tmp="0100"then LEDA<='0' LEDB<='1' LEDC<='0' LEDD<='0' states<="0100" tag<='1' elsif tmp="0010"then

22、LEDA<='0' LEDB<='0' LEDC<='1' LEDD<='0' states<="0010" tag<='1' elsif tmp="0001"then LEDA<='0' LEDB<='0' LEDC<='0' LEDD<='1' states<="0001" tag<='1' end i

23、f; end if; end if; end process;end one;2) 計時模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity js is port(clk,rst,s,stop:in std_logic; warn:out std_logic; ta,tb:buffer std_logic_vector(3 downto 0);end js;architecture one of js issignal co:std_logic;beginp1:process(clk,

24、rst,s,stop,ta) begin if rst='0' or stop='1' then ta<="0000" elsif clk'event and clk='1' then co<='0' if s='1' then if ta="0000" then ta<="1001"co<='1' else ta<=ta-1; end if; end if; end if;end process p1

25、;p2:process(co,rst,s,stop,tb) begin if rst='0' or stop='1' then tb<="0010" elsif co'event and co='1' then if s='1' then if tb="0000" then tb<="0011" else tb<=tb-1; end if; end if; end if;end process p2;end one;3) 計分模塊library

26、ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jf is port(rst: in std_logic; add: in std_logic; chose: in std_logic_vector(3 downto 0); aa2,aa1,aa0,bb2,bb1,bb0: out std_logic_vector(3 downto 0); cc2,cc1,cc0,dd2,dd1,dd0: out std_logic_vector(3 downto 0);end entity jf;architec

27、ture art of jf isbegin process(rst,add,chose) is variable a2,a1:std_logic_vector(3 downto 0); variable b2,b1:std_logic_vector(3 downto 0); variable c2,c1:std_logic_vector(3 downto 0); variable d2,d1:std_logic_vector(3 downto 0); begin if(rst='1')then a2:="0001"a1:="0000"

28、b2:="0001"b1:="0000" c2:="0001"c1:="0000" d2:="0001"d1:="0000" elsif(add'event and add='1')then if chose="0001"then if a1="1001"then a1:="0000" if a2="1001"then a2:="0000" else a

29、2:=a2+'1' end if; else a1:=a1+'1' end if; elsif chose="0010"then if b1="1001"then b1:="0000" if b2="1001"then b2:="0000" else b2:=b2+'1' end if; else b1:=b1+'1' end if; elsif chose="0100"then if c1="1001

30、"then c1:="0000" if c2="1001"then c2:="0000" else c2:=c2+'1' end if; else c1:=c1+'1' end if; elsif chose="1000"then if d1="1001"then d1:="0000" if d2="1001"then d2:="0000" else d2:=d2+'1' end

31、 if; else d1:=d1+'1' end if; end if; end if; aa2<=a2;aa1<=a1;aa0<="0000" bb2<=b2;bb1<=b1;bb0<="0000" cc2<=c2;cc1<=c1;cc0<="0000" dd2<=d2;dd1<=d1;dd0<="0000" end process;end architecture art; 4) 譯碼顯示模塊library ieee;use

32、 ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ymxs is port(in4: in std_logic_vector(3 downto 0); out7:out std_logic_vector(6 downto 0);end ymxs;architecture art of ymxs is begin process(in4) begin case in4 is when"0000"=>out7<="" when"0001"=>o

33、ut7<="" when"0010"=>out7<="" when"0011"=>out7<="" when"0100"=>out7<="" when"0101"=>out7<="" when"0110"=>out7<="" when"0111"=>out7<="&quo

34、t; when"1000"=>out7<="" when"1001"=>out7<="" when others=>out7<="" end case; end process;end architecture; 5) 報警模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alarm isport(clk,i:in std_logic; q:out

35、 std_logic);end alarm;architecture behave of alarm is signal warn:std_logic; signal n:integer range 0 to 20;begin q<= warn; process(clk) begin if clk'event and clk='1' then if i='0' then warn <='0' elsif(i='1'and n<=19)then warn <=not warn; n<=n+1; else warn <='0' end if; end if;end process;end behave;6) TOP模塊library ieee;use ieee.std_logic_1164.all;entity top is port(rst,en,ADD,s0,s1,s2,s3:in std_logic; LEDA,LEDB,LEDC,LEDD:out std_logic; false:out std_logic_vector(3 downto 0); zbxs:out std_logic_vector(6 downto 0); JF2A,JF

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論