EDA課程設(shè)計(jì)之乒乓球游戲機(jī).doc
《EDA課程設(shè)計(jì)之乒乓球游戲機(jī).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《EDA課程設(shè)計(jì)之乒乓球游戲機(jī).doc(15頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
乒乓球游戲機(jī) 1. 課程設(shè)計(jì)的目的 《EDA技術(shù)》是電子信息科學(xué)與技術(shù)專業(yè)學(xué)生在電子技術(shù)實(shí)驗(yàn)技能方面綜合性質(zhì)的實(shí)驗(yàn)訓(xùn)練課程,其目的和任務(wù)是通過一周的時(shí)間,讓學(xué)生掌握EDA的基本方法,熟悉一種EDA軟件(VHDL),并能利用EDA軟件設(shè)計(jì)一個(gè)電子技術(shù)綜合問題,為以后進(jìn)行工程實(shí)際問題的研究打下設(shè)計(jì)基礎(chǔ)。 2.設(shè)計(jì)方案論證 2.1 EDA、VHDL簡介 EDA是指以計(jì)算機(jī)為工作平臺(tái),融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)的最新成果而開發(fā)出的電子CAD通用軟件包,它根據(jù)硬件描述語言HDL完成的設(shè)計(jì)文件,自動(dòng)完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局布線及仿真,直至完成對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。目前EDA主要輔助進(jìn)行三個(gè)方面的設(shè)計(jì)工作:IC設(shè)計(jì)、電子電路設(shè)計(jì)和PCB設(shè)計(jì)。沒有EDA技術(shù)的支持,想要完成超大規(guī)模集成電路的設(shè)計(jì)制造是不可想象的;反過來,生產(chǎn)制造技術(shù)的不斷進(jìn)步又必將對EDA技術(shù)提出新的要求。 VHDL語言是一種用于電路設(shè)計(jì)的高級語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供美軍用來提高設(shè)計(jì)的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計(jì)語言 。但是,由于它在一定程度上滿足了當(dāng)時(shí)的設(shè)計(jì)需求,于是他在1987年成為A I/IEEE的標(biāo)準(zhǔn)(IEEE STD 1076-1987)。1993年更進(jìn)一步修訂,變得更加完備,成為A I/IEEE的A I/IEEE STD 1076-1993標(biāo)準(zhǔn)。目前,大多數(shù)的CAD廠商出品的EDA軟件都兼容了這種標(biāo)準(zhǔn)。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡稱87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。此后VHDL在電子設(shè)計(jì)領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語言。1993年,IEEE對VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本(簡稱93版)?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語言。有專家認(rèn)為,在新的世紀(jì)中,VHDL于Verilog語言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。 VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),用VHDL和原理圖輸入進(jìn)行CPLD/FPGA設(shè)計(jì)的粗略比較:在設(shè)計(jì)中,如果采用原理圖輸入的設(shè)計(jì)方式是比較直觀的。你要設(shè)計(jì)的是什么,你就直接從庫中調(diào)出來用就行了。這樣比較符合人們的習(xí)慣。在對一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。應(yīng)用VHDL進(jìn)行工程設(shè)計(jì)的優(yōu)點(diǎn)是多方面的。 (1)與其他的硬件描述語言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語言。強(qiáng)大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。 (2)VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對設(shè)計(jì)進(jìn)行仿真模擬。 (3)VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個(gè)代發(fā)組共同并行工作才能實(shí)現(xiàn)。 (4)對于用VHDL完成的一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動(dòng)的把VHDL描述設(shè)計(jì)轉(zhuǎn)變成門級網(wǎng)表。 (5)VHDL對設(shè)計(jì)的描述具有相對獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。 2.2方案論證 2.2.1乒乓游戲機(jī)的功能 兩人乒乓游戲機(jī)能夠模擬乒乓球比賽的基本過程和規(guī)則,并能自動(dòng)裁判和記分。乒乓游戲機(jī)是用8個(gè)發(fā)光二極管代表乒乓球臺(tái),中間兩個(gè)發(fā)光二極管兼做乒乓球網(wǎng),用點(diǎn)亮的發(fā)光二極管按一定的方向移動(dòng)來表示球的運(yùn)動(dòng)。在游戲機(jī)的兩側(cè)各設(shè)置兩個(gè)開關(guān),一個(gè)是發(fā)球開關(guān)(S1a,S1b),另一個(gè)是擊球開關(guān)(S2a,S2b)。甲乙兩人按乒乓球比賽的規(guī)則來操作開關(guān)。 當(dāng)甲方按動(dòng)發(fā)球開關(guān)S1a時(shí),靠近甲方的第一盞燈亮,然后二極管由甲向乙依次點(diǎn)亮,代表乒乓球在移動(dòng)。當(dāng)球過網(wǎng)后,按設(shè)計(jì)者規(guī)定的球位乙方就可以擊球。若乙方提前擊球或者沒有擊著球,則判乙方失分,甲方記分牌自動(dòng)加分。然后重新發(fā)球,比賽繼續(xù)進(jìn)行。比賽一直進(jìn)行到一方記分到11分,該局結(jié)束,記分牌清零,可以開始新的一局比賽。 具體功能如下: (1)使用乒乓游戲機(jī)的甲乙雙方各在不同的位置發(fā)球或擊球。 (2)乒乓球的位置和移動(dòng)方向由燈亮及依次點(diǎn)燃的方向決定,球移動(dòng)的速度為0.1~0.5s移動(dòng)一位。游戲者根據(jù)球的位置發(fā)出相應(yīng)的動(dòng)作,提前擊球或者出界均判失分。 (3)比賽用11分為一局來進(jìn)行,甲乙雙方都應(yīng)設(shè)置各自的記分牌,任何一方先記滿11分,該方就算勝了此局。記分牌清零后,又可開始新的一局比賽 2.2.2乒乓游戲機(jī)設(shè)計(jì)思路 根據(jù)乒乓游戲機(jī)功能要求,可以分成四個(gè)模塊來實(shí)現(xiàn),其中corna模塊為整個(gè)程序的核心,它實(shí)現(xiàn)了整個(gè)系統(tǒng)的全部邏輯功能;模塊CH41A在數(shù)碼的片選信號時(shí),送出相應(yīng)的數(shù)據(jù);模塊sel產(chǎn)生數(shù)碼管的片選信號;模塊disp是7段譯碼器。 2.3乒乓球各模塊的設(shè)計(jì) 2.3.1 控制模塊的設(shè)計(jì) 模塊CORNA 分兩個(gè)進(jìn)程,第一個(gè)進(jìn)程實(shí)現(xiàn)邏輯功能,第二個(gè)進(jìn)程將整數(shù)的記分轉(zhuǎn)換為十進(jìn)制數(shù),便于譯碼顯示。AF,AJ,BF,BJ分別為a方發(fā)球鍵和接球鍵,b方發(fā)球鍵和接球鍵,shift表示球所在的位置。其vhdl程序描述如下: 圖1 模塊CORNA1 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CORNAL IS PORT(clr,af,aj,bf,bj,clk:IN STD_LOGIC; shift:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ah,al,bh,bl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); awin,bwin:OUT STD_LOGIC); END CORNAL; ARCHITECTURE behave OF CORNAL IS SIGNAL amark,bmark:INTEGER; BEGIN PROCESS(clr,clk) VARIABLE a,b:STD_LOGIC; VARIABLE she:STD_LOGIC_VECTOR(7DOWNTO0); BEGIN IFclr=’0’ THEN a:=’0’; b:=’0’; she:=”00000000” amark<=0; bmark<=0; ELSIF clk’event and clk=’1’ THEN IF a=’0’ and b=’0’ and af=’0’THEN a:=’1’; she:=”10000000”; ELSIF a=’0’ and b=’0’ THEN bf=’0’THEN b:=’1’; she:=”00000001”; ELSIF a=’1’ and b=’0’THEN IF she>8THEN IF bj=’0’THEN amark<=amark+1; a:=’0’; b:=’0’; she:=”00000000”; ELSE she:=’0’&she(7DOWNTO1); ENDIF; ELSIF she=0 THEN amark<=amark+1; a:=’0’; b:=’0’; ELSE IF bj=’0’ THEN a:=’0’; b:=’1’; ELSE she:=’0’&she(7 DOWNTO 1); ENDIF; ENDIF; ELSIF a=’0’ and b=’1’ THEN IF she<16 and she=0 THEN IF aj=’0’ THEN bmark<=bmark+1; a:=’0’; b:=’0’; she:=”00000000”; ELSE she:=she(6 DOWNTO 0)&’0’; ENDIF; ELSIF she=0 THEN bmark<=bmark+1; a:=’0’; b:=’0’; ELSE IF aj=’0’THEN a:=’1’; b:=’0’; ELSE she:=she(6 DOWNTO 0)&’0’; ENDIF; ENDIF; ENDIF; ENDIF; shift<=she; END PROCESS; PROCESS(clk,clr,amark,bmark) VARIABLE aha,ala,bha,bla:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE tmp1,tmp2:INTEGER; VARIABLE t1,t2:STD_LOGIC; BEGINIF clr=’0’THEN aha:=”0000”; ala:=”0000”; bha:=”0000”; bla:=”0000”; tmp1:=0; tmp2:=0; t1:=’0’; t2:=’0’; ELSIF clk’event and clk=’1’ THEN IF aha=”0001” and ala=”0001”THEN aha:=”0001”; ala:=”0001”; t1:=’1’; ELSIF bha=”0001”and bla=”0001”THEN bha:=”0001”; bla:=”0001”; t2:=’1’; ELSIF amark>tmp1 THEN IF ala=”1001” THEN ala:=”0000”; aha:=aha+1; tmp1:=tmp1+1; ELSE ala:=ala+1; tmp1:=tmp1+1; ENDIF; ELSIF bmark>tmp2 THEN IF bla=”1001” THEN bla:=”0000”; bha:=bha+1; tmp2:=tmp2+1; ELSE bla:=bla+1; tmp2:=tmp2+1; ENDIF; ENDIF; ENDIF; al<=ala; bl<=bla; ah<=aha; bh<=bha; awIN<=t1; bwIN<=t2; END PROCESS; END behav; 2.3.2 送數(shù)據(jù)模塊的設(shè)計(jì) 送數(shù)據(jù)模塊CH41A的vhdl程序描述如下: 圖2 模塊CH41A LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CH41A IS PORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0); D0,d1,d2,d3:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CH41A; ARCHITECTURE behave OF CH41A IS BEGIN PROCESS(sel) BEGIN CASE sel IS WHEN”100”=>q<=d0; WHEN”101”=>q<=d1; WHEN”000”=>q<=d2; WHEN others=>q<=d3; END CASE; END PROCESS; END behav; 2.3.3 產(chǎn)生數(shù)碼管片選信號模塊的設(shè)計(jì) 產(chǎn)生數(shù)碼管片選信號模塊sel的vhdl程序描述如下: 圖3數(shù)碼管片選信號模塊sel LIBRARY IEEE; USE IEEE.S TD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sel IS PORT(clk:IN STD_LOGIC; sell:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END sel; ARCHITECTURE behav OF sel IS BEGIN PROCESS(clk) VARIABLE tmp:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN IF clk’event and clk=’1’ THEN IF tmp=”000” THEN tmp:=”001”; ELSIF tmp=”001” THEN tmp:=”100”; ELSIF tmp=”100” THEN tmp:=”101”; ELSIF tmp=”101” THEN tmp:=”000”; END IF; END IF; sell<=tmp; END PROCESS; END behav; 2.3.4 7段譯碼器模塊的設(shè)計(jì) 7段譯碼器模塊disp的vhdl的程序描述如下: 圖4 7段譯碼器模塊disp LIBRARY IEEE; USE IEEE.S TD_LOGIC_1164.ALL; ENTITY disp IS PORT(d:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END disp; ARCHITECTURE behav OF disp IS BEGIN PROCESS(d) BEGIN CASE d IS WHEN”0000”=>q<=”0111111”; WHEN”0001”=>q<=”0000110”; WHEN”0010”=>q<=”1011011”; WHEN”0011”=>q<=”1001111”; WHEN”0100”=>q<=”1100110”; WHEN”0101”=>q<=”1101101”; WHEN”0110”=>q<=”1111101”; WHEN”0111”=>q<=”0100111”; WHEN”1000”=>q<=”1111111”; WHEN others=>q<=”1101111”; END CASE; END PROCESS; END behav; 3.設(shè)計(jì)結(jié)果與分析 3.1系統(tǒng)的波形仿真 圖5所示為A方發(fā)球,在恰當(dāng)?shù)臅r(shí)候B方接到球,當(dāng)球回到A方時(shí),A方又接到球,但B方再也沒有接到球的仿真波形。 圖5 乒乓球仿真波形一 圖6所示為A方兩次發(fā)球,B方?jīng)]有接到球,A方得到2分的仿真波形圖 圖6乒乓球仿真波形二 圖7所示為A方發(fā)球,B方提前擊球的情況,此時(shí),A方得一分。圖中還顯示了A方發(fā)球,B方在規(guī)定的時(shí)刻沒有接到球的情況,此時(shí),A方又得一分。 圖7乒乓球仿真波形三 圖4所示為A方得分增加到11分的情況,此時(shí)awin輸出高電平,輸出分?jǐn)?shù)保持不變。當(dāng)清零信號按下時(shí),得分清為零,awin輸出恢復(fù)低電平,又可以開始新的一局比賽。 圖8 乒乓球仿真波形四 3.2乒乓游戲機(jī)頂層電路圖 圖9 乒乓游戲機(jī)電路圖 4.設(shè)計(jì)體會(huì) 通過本課程的學(xué)習(xí),能夠掌握EDA的基礎(chǔ)知識,進(jìn)一步加深了對EDA的了解,讓我對它有了更加濃厚的興趣。特別是當(dāng)每一個(gè)子模塊編寫調(diào)試成功時(shí),心里特別的開心。但是在編寫頂層文件的程序時(shí),遇到了不少問題,特別是各元件之間的連接,以及信號的定義,總是有錯(cuò)誤,在細(xì)心的檢查下,終于找出了錯(cuò)誤和警告,排除困難后,程序編譯就通過了,心里終于舒了一口氣。在波形仿真時(shí),也能仿真正確了。 課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程軟件應(yīng)用十分廣泛,因此學(xué)會(huì)應(yīng)用此仿真軟件是十分必要的。 回顧起此次電路的課程設(shè)計(jì),從選題到定稿,從理論到實(shí)踐,可以學(xué)到很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計(jì)懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識重新溫故。有時(shí)間多看看各方面書籍,拓寬知識面,不斷充實(shí)自我。 不管怎么說這次的課程設(shè)計(jì)總算是順利的完成了,了解了軟件的用途。不過最后還得經(jīng)過老師的審查,在老師的指導(dǎo)下彌補(bǔ)自己的不足,這樣,這次的課程設(shè)計(jì)才會(huì)畫上一個(gè)完美的句點(diǎn)。 5.參考文獻(xiàn) [1]朱正偉.EDA技術(shù)及應(yīng)用[M].清華大學(xué)出版社,2008.8 :30-36. [2]王松武.常用電路模塊分析與設(shè)計(jì)指導(dǎo)[M]. 清華大學(xué)出版社,2007.11 :39-54. [3] 廖裕評.CPLD數(shù)字電路設(shè)計(jì)——使用MAX+plusⅡ入門篇[M].清華大學(xué)出版社,2007 [4] 何希才,鄒炳強(qiáng). 通用電子電路應(yīng)用400例[J]. 電子工業(yè)出版社,2006.1 :3-11. [5] 劉南平. 數(shù)字電子電路——圖解電子電路基礎(chǔ)系列[J].科學(xué)出版社,2009.8 :5-20. [6] 張亦華.數(shù)字邏輯設(shè)計(jì)實(shí)驗(yàn)技術(shù)與EDA工具[M].北京郵電大學(xué)出版社,2003 [7] 譚會(huì)生.EDA技術(shù)及應(yīng)用[M].西安電子科技大學(xué)出版社,2008 [8] 門宏. 怎樣看電子電路圖[J].科學(xué)社會(huì)報(bào),20011.8 :11-22- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- EDA 課程設(shè)計(jì) 乒乓球 游戲機(jī)
鏈接地址:http://www.szxfmmzy.com/p-6680495.html