




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
..可修編目錄1引言11.1設計背景11.2VHDL簡介11.3QuartusⅡ簡介32乒乓球比賽游戲機的設計32.1系統(tǒng)設計要求32.2設計思路43乒乓球比賽游戲機的實現(xiàn)63.1乒乓球比賽游戲機的頂層原理圖63.2系統(tǒng)各功能模塊的實現(xiàn)63.2.1比賽控制模塊63.2.2記分模塊73.2.3數(shù)碼管顯示模塊84各個模塊的仿真以及系統(tǒng)仿真、分析94.1比賽控制模塊仿真波形94.2記分模塊仿真波形圖94.3管腳鎖定104.4系統(tǒng)的波形仿真114.5顯示結果的幾種情況145總結155.1設計制作過程中遇到的問題及解決方案155.2本設計有以下幾個可以改良的地方15參考文獻16附錄17游戲控制模塊的VHDL程序17記分模塊的VHDL程序19動態(tài)掃描模塊的VHDL程序20譯碼器模塊的VHDL程序21..可修編1引言1.1設計背景1.2VHDL簡介硬件描述語言已經(jīng)有幾十年的開展歷史,并且在系統(tǒng)的仿真、驗證和設計、綜合等方面得到成功的應用。目前常用的硬件描述語言有VHDL、VerilogHDL、ABEL等[2][3][4]。VHDL那么起源于20世紀70年代末和80年代初,美國國防部提出的VHSIC方案,目標是為下一代集成電路的生產(chǎn)、實踐階段性的工藝極限和完成10萬門級以上的電路設計而建立一種新的描述方法[5]。VHDL的英文全稱為Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,是IEEE標準化的硬件描述語言,并且已經(jīng)成為系統(tǒng)描述的國際公認標準,得到眾多EDA公司的支持。VHDL具有很多的優(yōu)點使它能夠被大多數(shù)人認可,被廣泛應用在邏輯電路的設計方面,并且成為了標準化的硬件描述語言,其優(yōu)點如下:(1)功能強大和設計靈活。一個簡潔的使用VHDL語言編寫的程序就可以描述一個復雜的邏輯電路,因為VHDL擁有強大的語言構造[6]。VHDL多層次的設計描述功能可以有效地控制設計的實現(xiàn),支持設計庫和可重復使用的元件生成,還支持多種設計方式,如層次化設計、模塊化設計和同步、異步和隨機電路設計。(2)與具體器件無關。用VHDL設計硬件電路時不用先確定設計要用到哪種器件,也不用特別熟悉器件的部構造,這樣可以使設計人員專注于進展系統(tǒng)設計。設計完成后,可以根據(jù)消耗的資源選擇適宜的器件,而不造成資源的浪費。(3)很強的移植能力。VHDL由很多不同的工具支持,同一個設計的程序可以在包括綜合工具、仿真工具、系統(tǒng)平臺等工具中使用。(4)強大的硬件描述能力。VHDL可以描述系統(tǒng)級電路和門級電路,而且描述方式多樣,可以采用行為描述、存放器傳輸描述或者構造描述,也可以用其混合描述方式。同時,VHDL可以準確地建立硬件電路模型,因為它支持慣性延遲和傳輸延遲。VHDL的數(shù)據(jù)類型很豐富,支持標準定義的數(shù)據(jù)類型,當標準定義的數(shù)據(jù)類型不能滿足用戶的需求時,用戶可以自己定義的所需要的數(shù)據(jù)類型,增加了設計的自由度。(5)語法規(guī),易于共享。當把用VHDL編寫的代碼文件看作是程序時,它可以作為設計人員之間的交流容;當把它看作是文檔時,可以作為簽約雙方的合同文本。VHDL易于共享的特點,使得大規(guī)模的協(xié)作開發(fā)容易實現(xiàn)。同時,這些特點也促進了VHDL的開展和完善。綜上所述,VHDL有很多其他的硬件描述語言所不具備的優(yōu)點。但是,VHDL仍然存在一些缺點,主要是3個方面。(1)要求設計者對硬件電路知識甚至是芯片構造方面的知識了解較多。應該擺脫一般的高級語言程序設計思路,因為在電路世界里的事件很多是并行發(fā)生的,并且硬件電路系統(tǒng)部的模塊可以是互相獨立的,也可以是互為因果的,所以,在用VHDL設計硬件電路時應擺脫一般的高級語言程序設計思路。在設計電路時,應先構思電路,然后才能描述。(2)不能進展太抽象的系統(tǒng)描述。因為EDA工具無法綜合抽象性太強的系統(tǒng),故用VHDL描述系統(tǒng)電路時不能太抽象。目前的VHDL很難綜合實際的硬件電路,只能適用于系統(tǒng)建模。(3)不能描述模擬電路。對于模擬電路而言,VHDL并不是一種理想的硬件描述語言。但可以預見,未來硬件描述語言的開展方向是模擬電路和數(shù)?;旌想娐返拿枋龇绞?。1.3QuartusⅡ簡介2乒乓球比賽游戲機的設計2.1系統(tǒng)設計要求設計一個由甲乙雙方參賽,有裁判的三人乒乓球游戲機。用8個〔或更多個〕LED排成一條直線,以中點為界,兩邊各代表參賽雙方的位置,其中一只點亮的LED指示球的當前位置點亮的LED依此從左到右,或從右到左,其移動速度應能調節(jié)。當"球〞〔點亮的那只LED〕運動到某方的最后一位時,參賽者應能果斷地按下位于自己一方的按鈕開關,既表示啟動球拍擊球,假設未擊中,球掉出桌外,那么對方得一方。設置自動記分電路,甲乙雙方各用兩位數(shù)碼管進展記分顯示,每記滿11分為1局。甲乙雙方各設一個發(fā)光二極管表示擁有發(fā)球權,每隔兩次自動交換發(fā)球權,擁有發(fā)球權的一方發(fā)球才有效。系統(tǒng)框圖如圖2-1所示:圖2-1乒乓球比賽游戲機系統(tǒng)框圖2.2設計思路此設計問題可分為游戲控制模塊,加減計數(shù)模塊,譯碼模塊,甲乙方得分顯示模塊四局部。設置甲乙雙方擊球脈沖信號int1/int2,一方的擊球信號使加/減計數(shù)器加法計數(shù),那么另一方的擊球信號就使加/減計數(shù)器減法計數(shù),譯碼模塊輸出端Y1-Y8接LED模擬乒乓球的軌跡。經(jīng)控制模塊實現(xiàn)移位方向的控制,真值表2-2所列。設置發(fā)球權擁有顯示信號s1、s2??刂颇K使每兩次交換發(fā)球權。加/減控制信號/D由乒乓球到達Y8、Y1和擊球信號int1、int2及發(fā)球權擁有信號s1、s2共同產(chǎn)生,真值表如表2-3所示。當球到達Y8或Y1時,參賽者沒有及時擊中,那么球掉出桌外,加/減計數(shù)模塊停頓計數(shù),對方得一分。設置撿球信號reset1,通過加/減計數(shù)模塊的異步置數(shù)端實現(xiàn)撿球。當甲方擁有發(fā)球權時撿球信號將球放到Y1,乙方擁有發(fā)球權時將球放到Y8.在控制模塊對甲乙雙方的得分進展檢測,只要一方的得分到達11,那么一局完畢,設置裁判員復位信號reset.在每局完畢后將雙方得分清零。由調節(jié)晶振產(chǎn)生的時鐘脈沖信號的頻率,可以調節(jié)球的運動速度。表2-2加/減計數(shù)譯碼顯示真值表時鐘加/減控制計數(shù)器輸出譯碼器輸出CLK/DQ3Q2Q1Q0Y8Y7Y6Y5Y4Y3Y2Y1↑0000100000001↑0001000000010↑0001100000100↑0010000001000↑0010100010000↑0011000100000↑0011101000000↑0100010000000↑1011101000000↑1011000100000↑1010100010000↑1010000001000↑1001100000100↑1001000000010↑1000100000001表2-3加減控制信號的產(chǎn)生Y8Y1Int1Int2S1S2/D100↑01101↑0100硬件系統(tǒng)示意圖如下所示圖2-4硬件系統(tǒng)示意圖3乒乓球比賽游戲機的實現(xiàn)3.1乒乓球比賽游戲機的頂層原理圖圖3-1頂層原理圖原理圖中輸入局部分別是:復位按鍵res,時鐘clk_1,startbutton開場游戲按鍵,serve[1..0]發(fā)球按鍵,serve0代表甲發(fā)球,serve1代表乙發(fā)球,int1為甲擊球按鍵,int2為乙擊球按鍵,原理圖中輸出局部分別是:8個LED燈light[1..8],數(shù)碼管段選信號A、C、D、E、F、G、H,數(shù)碼管進入譯碼器74ls138的位選信號sel[2..0],在數(shù)碼管上顯示了甲乙兩個人的分數(shù)。3.2系統(tǒng)各功能模塊的實現(xiàn)3.2.1比賽控制模塊圖3-2比賽控制模塊元件框圖按下startbutton按鍵之后游戲開場,當按下serve0時甲發(fā)球,8個一排的LED燈從左向右移動〔從1到8〕,當移動到第八個燈時按下int2按鍵代表乙擊中,那么乙得1分,提前或未來的及擊球那么甲得分。當按下serve1時乙發(fā)球從右向左移動,當移動到第一個燈時按下int1代表甲擊中球,甲得1分,提前或未來的擊球及那么乙得分。3.2.2記分模塊圖3-3記分模塊元件框圖中選擇好的信號binaryin[4..1]進入mydecoder之后,相應的數(shù)據(jù)會選擇到相應的信號中,并且通過bcdout1[4..1]和bcdout2[4..1]輸出相應的分數(shù)在兩位數(shù)碼管上的顯示數(shù)字。bcdout1為十位數(shù),bcdout2為個位數(shù)。3.2.3數(shù)碼管顯示模塊圖3-4顯示模塊框圖數(shù)碼管顯示模塊主要是由兩個模塊組成分別為setime以及deled這兩個模塊組成:setime模塊主要是將輸入的分數(shù)進展動態(tài)掃描,顯示到每一位數(shù)碼管的位選上,通過高速的掃描后會將每一位選手的分數(shù)很清晰的顯示在數(shù)碼管上。deled模塊是一個譯碼器的模塊譯碼器的譯碼對照表3-5如下所示:表3-5譯碼器的譯碼對照表顯示的數(shù)字BCD編碼七段共陽數(shù)碼管000001000000100011111001200100100100300110110000401000011001501010010010601100000010701111111000810000000000910010010000XXXXX1111111在程序中只考慮0000-1001〔即0-9〕的情況,將其轉化為相應的七段顯示器的碼字,其他情況不予考慮。4各個模塊的仿真以及系統(tǒng)仿真、分析4.1比賽控制模塊仿真波形圖4-1比賽控制模塊4.2記分模塊仿真波形圖圖4-2記分模塊仿真波形圖表4-3對應分數(shù)的數(shù)碼管顯示binaryinbcdout1bcdout2000000000000000100000001001000000010001100000011010000000100010100000101011000000110011100000111100000001000100100001001101000010000101100010001在圖4-2中可以看出當?shù)梅譃?〔0010〕分時對應的兩位數(shù)碼管那么會顯示為02(bcoudt1:0000,bcoudt2:0010〕,當分數(shù)超過11分時數(shù)碼管的顯示全為為00。表4-3為具體的分數(shù)對應的數(shù)碼管顯示。4.3管腳鎖定在驗證出乒乓球比賽游戲機系統(tǒng)的功能之前,需要清楚實驗箱與各個信號之間的對應關系,參照資料得出本設計中各引腳的對應情況如下:圖4-4各引腳的對應情況4.4系統(tǒng)的波形仿真圖4-5所示為甲方發(fā)球,在恰當?shù)臅r候乙方接到球,當球回到甲方時,甲方又接到球,但乙方再也沒有接到球的仿真波形。圖4-5乒乓球仿真波形一圖4-6所示為甲方兩次發(fā)球,乙方?jīng)]有接到球,甲方得到2分的仿真波形圖。圖4-6乒乓球仿真波形二圖4-7所示為甲方發(fā)球,乙方提前擊球的情況,此時,甲方得一分。圖中還顯示了甲方發(fā)球,乙方在規(guī)定的時刻沒有接到球的情況,此時,甲方又得一分。圖4-7乒乓球仿真波形三圖4-8所示為當清零信號按下時,得分清零,又開場新一局游戲圖4-8乒乓球仿真波形四4.5顯示結果的幾種情況圖4-9驗證結果1圖4-10驗證結果2圖4-11驗證結果35總結5.1設計制作過程中遇到的問題及解決方案1.VHDL語法使用不規(guī):當我們編寫軟件程序的時,遇到了編譯錯誤。細心閱讀QuartusII錯誤提示和所編寫的程序后發(fā)現(xiàn)是因為VHDL語法使用錯誤。最后經(jīng)過翻閱EDA課本,熟悉相關語法后將其改正。2.動態(tài)掃描局部不清楚,以至無法實現(xiàn)得分顯示功能起初以為每個數(shù)碼管的引腳都要鎖定,不知該怎樣鎖定四個數(shù)碼管的引腳,后來想起曾經(jīng)做過的數(shù)碼管顯示控制系列最終完成了該局部。3.引腳鎖定不完整,最終編譯無法通過:處理了之前出現(xiàn)的幾個問題后,在最后編譯時未通過。細致查看了錯誤提示,發(fā)現(xiàn)是個別管腳未鎖定的原因。我們最終把各個管腳鎖定一一檢查了一遍,從而通過了編譯。5.2本設計有以下幾個可以改良的地方1.可以在甲乙兩位得分的數(shù)碼管顯示中間在用一個顯示":〞這個符號。2.通過適當添加幾種語音芯片,就可以在不同的情況下發(fā)出美妙的聲響,能為比賽增添不少樂趣。3.在現(xiàn)有設計根底上使用無線電或紅外技術,還可以使本工程升級為無線智能乒乓球游戲機。附錄游戲控制模塊的VHDL程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitypeteisport(reset:instd_logic;clk_1:instd_logic;startbutton:instd_logic;serve:instd_logic_vector(1downto0);int1,int2:instd_logic;light:outstd_logic_vector(1to8);counta,countb:outstd_logic_vector(3downto0));endpete;architectureoneofpeteisTypepingpongis(waitserve,light1on,ballmoveto2,allow2int,light8on,ballmoveto1,allow1int);signalstate:pingpong;signali:integerrange0to8;signalcount1,count2,count3,count4:std_logic_vector(3downto0):="0000";beginprocess(clk_1)beginifreset='1'theni<=0;count1<="0000";count2<="0000";count3<="0000";count4<="0000";elsifclk_1'eventandclk_1='1'thenifcount1="1011"theni<=0;count1<="0000";count2<="0000";count3<=count3+1;elsifcount2="1011"theni<=0;count1<="0000";count2<="0000";count4<=count4+1;elsifstartbutton='0'theni<=0;count1<="0000";count2<="0000";count3<="0000";count4<="0000";elsecasestateiswhenwaitserve=>caseserveiswhen"01"=>i<=1;state<=light1on;when"10"=>i<=8;state<=light8on;when"11"=>i<=0;whenothers=>i<=0;endcase;whenlight1on=>i<=2;ifint2='1'theni<=0;count1<=count1+1;state<=waitserve;elsestate<=ballmoveto2;endif;whenlight8on=>i<=7;ifint1='1'theni<=0;count2<=count2+1;state<=waitserve;elsestate<=ballmoveto1;endif;whenballmoveto1=>ifint1='1'theni<=0;count2<=count2+1;state<=waitserve;elsifi=2theni<=1;state<=allow1int;elsei<=i-1;endif;whenballmoveto2=>ifint2='1'theni<=0;count1<=count1+1;state<=waitserve;elsifi=7theni<=8;state<=allow2int;elsei<=i+1;endif;whenallow1int=>ifint1='1'theni<=2;state<=ballmoveto2;elsecount2<=count2+1;i<=0;state<=waitserve;endif;whenallow2int=>ifint2='1'theni<=7;state<=ballmoveto1;elsecount1<=count1+1;i<=0;state<=waitserve;endif;endcase;endif;endif;endprocess;counta<=count1;countb<=count2;light<="10000000"when(i=1)else"01000000"when(i=2)else"00100000"when(i=3)else"00010000"when(i=4)else"00001000"when(i=5)else"00000100"when(i=6)else"00000010"when(i=7)else"00000001"when(i=8)else"00000000";endone;記分模塊的VHDL程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitymydecoderisport(binaryin:instd_logic_vector(4downto1);bcdout1:outstd_logic_vector(4downto1);bcdout2:outstd_logic_vector(4downto1));endmydecoder;architecturemofmydecoderissignaltembinaryin:std_logic_vector(4downto1);beginprocess(binaryin)begintembinaryin<=binaryin;casetembinaryiniswhen"0000"=>bcdout1<="0000";bcdout2<="0000";when"0001"=>bcdout1<="0000";bcdout2<="0001";when"0010"=>bcdout1<="0000";bcdout2<="0010";when"0011"=>bcdout1<="0000";bcdout2<="0011";when"0100"=>bcdout1<="0000";bcdout2<="0100";when"0101"=>bcdout1<="0000";bcdout2<="0101";when"0110"=>bcdout1<="0000";bcdout2<="0110";when"0111"=>bcdout1<="0000";bcdout2<="0111";when"1000"=>bcdout1<="0000";bcdout2<="1000";when"1001"=>bcdout1<="0000";bcdout2<="1001";when"1010"=>bcdout1<="0001";bcdout2<="0000";when"1011"=>bcdout1<="0001";bcdout2<="0001";whenothers=>bcdout1<="0000";bcdout2<="0000";endcase;endprocess;endm;動態(tài)掃描模塊的VHDL程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityseltimeisport(clk:instd_logic;s:instd_logic_vector(15downto0);daout:outstd_logic_vector(3downto0);sel:outstd_logic_vector(2downto0));endseltime;architecturebehavofseltimeissignalsec:std_logic_vector(2downto0);beginprocess(clk)beginif(clk'eventandclk='1')thenif(sec="111")thensec<="000";elsesec<=sec+1;endif;endif;endprocess;process(sec,s(15downto0))begincaseseciswhen"000"=>daout<=s(3downto0);when"001"=>daout<="1111";when"010"=>daout<="1111";when"011"=>daout<=s(11downto8);when"100"=>daout<=s(7downto4);when"101"=>daout<="1111";when"110"=>daout<="1111";when"111"=>daout<=s(15downto12);whenothers=>daout<="XXXX";endcase;endprocess;sel<=sec;endbehav;譯碼器模塊的VHDL程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDELEDISPORT(S:INSTD_LOGIC_VECTOR(3DOWNTO0);A,B,C,D,E,F,G,H:OUTSTD_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中式牌樓施工方案(3篇)
- 橋梁水閘拆除方案(3篇)
- 庭院景觀報價方案(3篇)
- 店采購預算方案(3篇)
- 石材裂縫修護方案(3篇)
- 基礎護理技術緒論課件
- 基礎護理學課件
- 消防婚戀教育課件
- 人防工程清潔方案(3篇)
- 柴油運輸車輛安全責任保險合同
- GB/T 10760.2-2003離網(wǎng)型風力發(fā)電機組用發(fā)電機第2部分:試驗方法
- 需要確認的過程特殊過程確認記錄
- 中級會計職稱財務管理基礎第3章主要內(nèi)容增量與零基預算編制方法
- 邀請函模板完整
- 形式發(fā)票范本
- 《網(wǎng)店運營》學習情境四數(shù)據(jù)分析
- 2022年液氨罐區(qū)重大危險源評估報告
- 中西方藝術史-巴洛克藝術課件
- 地基強夯工程專項施工方案專家論證版
- 機房UPS的配電系統(tǒng)施工方案設計
- 即刻法(Grubbs)在室內(nèi)質控中的應用和問題22張幻燈片
評論
0/150
提交評論