EDA課程設(shè)計畢業(yè)課程設(shè)計_第1頁
EDA課程設(shè)計畢業(yè)課程設(shè)計_第2頁
EDA課程設(shè)計畢業(yè)課程設(shè)計_第3頁
EDA課程設(shè)計畢業(yè)課程設(shè)計_第4頁
EDA課程設(shè)計畢業(yè)課程設(shè)計_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 課程設(shè)計說明書 no. 20設(shè)計題目:搶答器的設(shè)計與仿真一課程設(shè)計的目的eda課程設(shè)計是電子信息科學(xué)與技術(shù)專業(yè)開設(shè)的一門獨(dú)立實(shí)踐環(huán)節(jié)課程。通過課程設(shè)計使學(xué)生具體掌握將理論知識與實(shí)際應(yīng)用相結(jié)合的方法,提高分析問題和解決問題的能力,激發(fā)學(xué)習(xí)興趣、鍛煉動手能力和科研能力。了解cpld為復(fù)雜可編程邏輯器件,通過eda技術(shù)對其進(jìn)行編程,可將一個較復(fù)雜的數(shù)字系統(tǒng)集成于一個芯片中,制成專用集成電路芯片,并可隨時在系統(tǒng)修改其邏輯功能。二設(shè)計方案論證1. 設(shè)計原理搶答器原理是根據(jù)所要設(shè)計的系統(tǒng)功能,將整個系統(tǒng)劃分成幾個主要模塊,再將每個模塊細(xì)分成幾個子模塊,直到最底層的小模塊容易編程實(shí)現(xiàn)為止。只需對底層元件編

2、程實(shí)現(xiàn),最后將各模塊連接起來組成所需的系統(tǒng)。對于一個搶答器系統(tǒng),可將其分為五個模塊:選手搶答模塊、搶答啟動模塊、加減分模塊、顯示模塊、蜂鳴器控制模塊,整體框圖如圖(1)所示。 圖(1)總體框圖其中搶答啟動模塊具有啟動搶答及啟動定時功能,輸出使能信號給選手識別模塊,以及搶答剩余時間給顯示模塊;選手識別模塊完成鎖存搶答信號的功能,并輸出選手號給顯示模塊;蜂鳴器對搶答成功以及超時鳴聲報警;顯示模塊對輸入的數(shù)據(jù)進(jìn)行顯示。2. 設(shè)計內(nèi)容(1)設(shè)計一智力競賽搶答器,可同時供8名選手參加比賽。(2)給節(jié)目主持人設(shè)置一個控制開關(guān),控制系統(tǒng)清零和搶答開始。(3)搶答器具有鎖存功能和顯示功能。搶答開始后,若有選手

3、按動搶答按鈕,編號立即鎖存,并在led數(shù)碼管上顯示選手編號,同時揚(yáng)聲器響,禁止其他選手搶答。(4)搶答器具有搶答定時功能,時間由主持人確定。(5)參賽選手在設(shè)定的時間內(nèi)搶答有效,定時器停止工作。(6)如果定時時間到,無人搶答,本次搶答無效,系統(tǒng)報警,并封鎖輸入電路,禁止超時搶答,定時器顯示00 。(7)為每組設(shè)計一個計分電路,0999分,可加分,也可減分。3. 設(shè)計整體原理圖 圖(2)設(shè)計原理圖三設(shè)計結(jié)果與分析1、搶答啟動模塊啟動模塊除了有啟動的功能外,還有啟動定時的功能。定時時間分為5秒和20秒兩種,使用兩個按鍵對應(yīng)兩種限時搶答。將本模塊再劃分為2個子模:一個模塊完成按鍵識別的功能,另一模塊

4、完成倒計時功能。(1)按鍵識別子模塊按鍵的識別即對輸入信號進(jìn)行電平變化檢測,電平發(fā)生跳變就認(rèn)為是鍵被按下。但vhdl程序中一個結(jié)構(gòu)體內(nèi)不能同時對兩個信號進(jìn)行電平跳變的檢測,所以對本模塊的程序設(shè)計采用狀態(tài)機(jī)來實(shí)現(xiàn),并使用統(tǒng)一的時鐘信號來掃描按鍵的電平狀態(tài)。模塊如圖(3)所示。 圖(3)按鍵識別子模塊對start5和start20兩個按鍵定義三種狀態(tài),start5按下為st1狀態(tài),此時兩個按鍵“start5&start20”輸入電平為“01”;start20按下為st2狀態(tài),此時電平為“10”;兩個都沒按下為st0狀態(tài),此時電平為“11”。狀態(tài)轉(zhuǎn)換圖如圖(4)所示。 圖(4)按鍵識別子模塊狀態(tài)轉(zhuǎn)換

5、圖本模塊程序?yàn)椋簂ibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity start_5_20 isport(clk1,rst,start5,start20:in std_logic; b,a:out std_logic_vector(3 downto 0); s_flag:out std_logic); end entity;architecture one of start_5_20 issignal datain:std_logic_vector(1 downto 0);type st_

6、type is (st0,st1,st2); signal c_st:st_type;begindatain=start5&start20; process(rst,clk1)beginif rst=0 then b=0000;a=0000;c_st=st0;s_flag if datain=01 then c_st=st1; s_flag=1; b=0000;a=0101; elsif datain=10 then c_st=st2; s_flag=1; b=0011;a=0000; else c_stif datain=11 thenc_st=st0;s_flag=0; else c_st

7、if datain=11 then c_st=st0;s_flag=0;else c_stc_st=st0;b=0000;a=0000;end case;end if;end process;end architecture;本模塊仿真波形如圖(5)所示。 圖(5)按鍵識別子模塊仿真波形(2)倒計時子模塊倒計時需要1hz的脈沖輸入,每來一個上升沿,進(jìn)行一次減一運(yùn)算,將結(jié)果輸出到timeb、timea;置數(shù)信號load輸入有效,讀入b、a端口的數(shù)據(jù);輸入l_cr信號與選手識別模塊連接,當(dāng)選手搶答成功后,l_cr信號為0,將倒計時清0.;若倒計時到,沒有選手搶答,則在sr1輸出1使揚(yáng)聲器發(fā)聲。同時

8、輸出信號給選手搶答模塊,禁止選手搶答如圖(6)所示。圖(6)倒計時模塊本模塊程序?yàn)椋簂ibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity de_count is port(clk2,load,l_cr,rst:in std_logic; b,a:in std_logic_vector(3 downto 0); timeb,timea:out std_logic_vector(3 downto 0); timeout,sr1:out std_logic);end entity;archite

9、cture two of de_count isbeginprocess(load,l_cr,rst,clk2)variable p1,p0:std_logic_vector(3 downto 0);beginif load=1 thenp1:=b;p0:=a; elsif l_cr=0 then p1:=0000;p0:=0000;timeout=0;sr1=1; elsif rst=0 then p1:=0000;p0:=0000;timeout=0;sr10 thenp1:=p1-1;p0:=1001; end if;else p0:=p0-1; if p0=0000 and p1=00

10、00 thentimeout=0;sr1=1; end if;end if;end if;timeb=p1;timeaclk1,start5=start5,start20=start20,rst=rst,b=m,a=n,s_flag=p); u2:de_count port map(clk2=clk2,b=m,a=n,load=p,rst=rst,l_cr=l_cr,timeb=timeb,timea=timea,timeout=timeout,sr1=sr1);end architecture;2、選手搶答模塊在一個結(jié)構(gòu)體中用8個進(jìn)程同時對8個選手按鍵電平變化的監(jiān)測是不可實(shí)現(xiàn)的,所以將本模塊

11、劃分為兩個子模塊:單個選手按鍵模塊和判斷搶答選手模塊。最后將8個選手按鍵模塊和1個判斷搶答選手模塊連接起來,得到整個選手搶答模塊。(1)單個選手按鍵子模塊按鍵輸入相當(dāng)于該實(shí)體的時鐘信號,鍵被按下,等于來一個脈沖,輸出信號給判斷模塊進(jìn)行選手號的判斷。只要有選手搶答成功,相關(guān)模塊會輸出信號使8個按鍵模塊的lock信號有效,禁止其他選手搶答。如圖(8)所示。 圖(8)單個選手按鍵子模塊本模塊程序如下:library ieee;use ieee.std_logic_1164.all;entity button1 isport(lock , button , rst :in std_logic; pre

12、ssed:out std_logic);end entity;architecture b1 of button1 isbeginprocess(rst , button) beginif rst=0 thenpressed=0; elsif buttonevent and button=0 thenif lock=1 then pressed=1; end if;end if;end process;end architecture;單個選手模塊仿真波形如圖(9)所示。 圖(9)單個選手按鍵子模塊仿真波形(2)判斷搶答選手子模塊本子模塊接收8個按鍵子模塊的輸出信號,如收到1號子模塊輸出的高電

13、平,則輸出選手號“0001”;并發(fā)出信號使揚(yáng)聲器發(fā)聲并控制8個按鍵子模塊使它們的lock信號有效,禁止其他選手搶答。本子模塊端口設(shè)置如圖(10)所示。 圖(10)判斷選手模塊本子模塊程序如下:library ieee;use ieee.std_logic_1164.all;entity identifier isport(pp1,pp2,pp3,pp4,pp5,pp6,pp7,pp8:in std_logic; p_num:out std_logic_vector(3 downto 0); lock,sr1:out std_logic);end entity;architecture one

14、of identifier issignal p:std_logic_vector(7 downto 0);beginpp_num=0001;lock=0;sr1p_num=0010;lock=0;sr1p_num=0011;lock=0;sr1p_num=0100;lock=0;sr1p_num=0101;lock=0;sr1p_num=0110;lock=0;sr1p_num=0111;lock=0;sr1p_num=1000;lock=0;sr1p_num=0000;lock=1;sr1lock,b=p1,rst=rst,pressed=a1); u2:button1 port map(

15、lock=lock,b=p2,rst=rst,pressed=a2); u3:button1 port map(lock=lock,b=p3,rst=rst,pressed=a3); u4:button1 port map(lock=lock,b=p4,rst=rst,pressed=a4); u5:button1 port map(lock=lock,b=p5,rst=rst,pressed=a5); u6:button1 port map(lock=lock,b=p6,rst=rst,pressed=a6); u7:button1 port map(lock=lock,b=p7,rst=r

16、st,pressed=a7); u8:button1 port map(lock=lock,b=p8,rst=rst,pressed=a8); u9:identifier port map(pp1=a1,pp2=a2,pp3=a3,pp4=a4,pp5=a5,pp6=a6, pp7=a7,pp8=a8,p_num=p_num,lock=lock_s,sr1=sr1);end architecture;3.分?jǐn)?shù)選擇輸出模塊四組分?jǐn)?shù)要顯示出來,需要12個7段數(shù)碼管。若只顯示當(dāng)前搶答成功選手的分?jǐn)?shù),則只需3個數(shù)碼管。所以設(shè)置一個分?jǐn)?shù)選擇器,根據(jù)搶答成功的選手編號,選擇其分?jǐn)?shù)輸出給顯示模塊顯示。設(shè)計源

17、程序?yàn)椋簂ibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity muxx is port(p_num,aa2,aa1,aa0,bb2,bb1,bb0:in std_logic_vector(3 downto 0); cc2,cc1,cc0,dd2,dd1,dd0:in std_logic_vector(3 downto 0); d2,d1,d0:out std_logic_vector(3 downto 0);end entity;architecture one of muxx isbeg

18、in process(p_num) begin case p_num iswhen 0001=d2=aa2;d1=aa1;d0d2=aa2;d1=aa1;d0d2=bb2;d1=bb1;d0d2=bb2;d1=bb1;d0d2=cc2;d1=cc1;d0d2=cc2;d1=cc1;d0d2=dd2;d1=dd1;d0d2=dd2;d1=dd1;d0d2=0000;d1=0000;d0=0000; end case; end process;end architecture;仿真波形如圖(13)所示。 圖(13)分?jǐn)?shù)選擇輸出模塊仿真波形4.顯示模塊本模塊根據(jù)送來的數(shù)據(jù):搶答成功選手號,選手分?jǐn)?shù)、

19、倒計時時間,將相應(yīng)的字形碼送數(shù)碼管顯示。端口設(shè)置如圖(14)所示。該圖中,bt為數(shù)碼管的位選信號,sg為數(shù)碼管的段選信號。另外圖20為數(shù)碼管的分配。左起第一位為選手編號,第3、4位為該選手的分?jǐn)?shù),最后兩位為倒計時。 圖(14)顯示模塊設(shè)計程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity display isport(clk:in std_logic; score2,score1,score0,p_number,timeb,timea:in std_logic_vector(3

20、 downto 0); bt,sg:out std_logic_vector(7 downto 0);end entity;architecture one of display issignal cnt8:std_logic_vector(2 downto 0);signal a:std_logic_vector(3 downto 0);begin p1:process(clk) beginif clkevent and clk=1 then cnt8bt=10000000;abt=01000000;abt=00100000;abt=00010000;abt=00001000;abt=000

21、00100;abt=00000010;abt=00000001;asgsgsgsgsgsgsgsgsgsgsgnull;end case;end process;end architecture;本模塊仿真波形如圖(15)所示。 圖(15)顯示模塊仿真波形5.蜂鳴器模塊當(dāng)sr1鳴聲信號來時,輸出clk2(2khz)驅(qū)動蜂鳴器發(fā)聲。clk1用于掃描sr1的電平變化,sr1上升沿來到,允許clk2輸出,并持續(xù)一段時間。模塊如圖(16)所示。圖(16)蜂鳴器模塊本模塊程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_un

22、signed.all;entity speaker is port(clk1,sr1,clk2:in std_logic; s:out std_logic);end entity;architecture one of speaker istype st_type is (st0,st1);signal c_st:st_type;signal a:std_logic;begin process(clk1) variable p:std_logic_vector(7 downto 0);beginif clk1event and clk1=1 thencase c_st iswhen st0=i

23、f sr1=1 then p:=00111111;c_st=st1;a=1; else c_st=st0;aif p/=0 then p:=p-1;c_st=st1; elsea=0; if sr1=1 then c_st=st1; else c_stc_st=st0;a=0;end case;end if;end process;s=clk2 and a; end architecture;本模塊的仿真波形如圖(17)所示。 圖(17)蜂鳴器模塊仿真波形四設(shè)計體會通過這次課程設(shè)計我學(xué)會了使用max+puls軟件,還學(xué)了verilog hdl編程的方法。因?yàn)関erilog hdl語言語法和以前學(xué)過的c語言比較相近,所以在看了些相關(guān)書籍和程序范例后,就入手編寫verilog hdl代碼,開始時候沒有遇到太大問題。但是畢竟verilog hdl和c許多還是有差別的,如case的用法等。但是經(jīng)過我們一起的努力,順利的完成了ve

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論