乒乓球比賽游戲機(jī)設(shè)計.doc
《乒乓球比賽游戲機(jī)設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《乒乓球比賽游戲機(jī)設(shè)計.doc(21頁珍藏版)》請在裝配圖網(wǎng)上搜索。
目 錄 1 引言 1 1 1 設(shè)計背景 1 1 2 VHDL 簡介 1 1 3 QUARTUS 簡介 3 2 乒乓球比賽游戲機(jī)的設(shè)計 3 2 1 系統(tǒng)設(shè)計要求 3 2 2 設(shè)計思路 4 3 乒乓球比賽游戲機(jī)的實現(xiàn) 6 3 1 乒乓球比賽游戲機(jī)的頂層原理圖 6 3 2 系統(tǒng)各功能模塊的實現(xiàn) 6 3 2 1 比賽控制模塊 6 3 2 2 記分模塊 7 3 2 3 數(shù)碼管顯示模塊 8 4 各個模塊的仿真以及系統(tǒng)仿真 分析 9 4 1 比賽控制模塊仿真波形 9 4 2 記分模塊仿真波形圖 9 4 3 管腳鎖定 10 4 4 系統(tǒng)的波形仿真 11 4 5 顯示結(jié)果的幾種情況 14 5 總結(jié) 15 5 1 設(shè)計制作過程中遇到的問題及解決方案 15 5 2 本設(shè)計有以下幾個可以改進(jìn)的地方 15 參考文獻(xiàn) 16 附 錄 17 游戲控制模塊的 VHDL 程序 17 記分模塊的 VHDL 程序 19 動態(tài)掃描模塊的 VHDL 程序 20 譯碼器模塊的 VHDL 程序 21 1 引言 1 1 設(shè)計背景 1 2 VHDL 簡介 硬件描述語言已經(jīng)有幾十年的發(fā)展歷史 并且在系統(tǒng)的仿真 驗證和設(shè)計 綜合等方面得到成功的應(yīng)用 目前常用的硬件描述語言有 VHDL Verilog HDL ABEL 等 2 3 4 VHDL 則起源于 20 世紀(jì) 70 年代末和 80 年代初 美國國防 部提出的 VHSIC 計劃 目標(biāo)是為下一代集成電路的生產(chǎn) 實踐階段性的工藝極 限和完成 10 萬門級以上的電路設(shè)計而建立一種新的描述方法 5 VHDL 的英文 全稱為 Very High Speed Integrated Circuit Hardware Description Language 是 IEEE 標(biāo)準(zhǔn)化的硬件描述語言 并且已經(jīng)成為系統(tǒng)描述的國際公認(rèn) 標(biāo)準(zhǔn) 得到眾多 EDA 公司的支持 VHDL 具有很多的優(yōu)點(diǎn)使它能夠被大多數(shù)人認(rèn)可 被廣泛應(yīng)用在邏輯電路的 設(shè)計方面 并且成為了標(biāo)準(zhǔn)化的硬件描述語言 其優(yōu)點(diǎn)如下 1 功能強(qiáng)大和設(shè)計靈活 一個簡潔的使用 VHDL 語言編寫的程序就可以描 述一個復(fù)雜的邏輯電路 因為 VHDL 擁有強(qiáng)大的語言結(jié)構(gòu) 6 VHDL 多層次的設(shè) 計描述功能可以有效地控制設(shè)計的實現(xiàn) 支持設(shè)計庫和可重復(fù)使用的元件生成 還支持多種設(shè)計方式 如層次化設(shè)計 模塊化設(shè)計和同步 異步和隨機(jī)電路設(shè) 計 2 與具體器件無關(guān) 用 VHDL 設(shè)計硬件電路時不用先確定設(shè)計要用到哪種 器件 也不用特別熟悉器件的內(nèi)部結(jié)構(gòu) 這樣可以使設(shè)計人員專注于進(jìn)行系統(tǒng) 設(shè)計 設(shè)計完成后 可以根據(jù)消耗的資源選擇合適的器件 而不造成資源的浪 費(fèi) 3 很強(qiáng)的移植能力 VHDL 由很多不同的工具支持 同一個設(shè)計的程序可 以在包括綜合工具 仿真工具 系統(tǒng)平臺等工具中使用 4 強(qiáng)大的硬件描述能力 VHDL 可以描述系統(tǒng)級電路和門級電路 而且描 述方式多樣 可以采用行為描述 寄存器傳輸描述或者結(jié)構(gòu)描述 也可以用其 混合描述方式 同時 VHDL 可以準(zhǔn)確地建立硬件電路模型 因為它支持慣性延 遲和傳輸延遲 VHDL 的數(shù)據(jù)類型很豐富 支持標(biāo)準(zhǔn)定義的數(shù)據(jù)類型 當(dāng)標(biāo)準(zhǔn)定 義的數(shù)據(jù)類型不能滿足用戶的需求時 用戶可以自己定義的所需要的數(shù)據(jù)類型 增加了設(shè)計的自由度 5 語法規(guī)范 易于共享 當(dāng)把用 VHDL 編寫的代碼文件看作是程序時 它 可以作為設(shè)計人員之間的交流內(nèi)容 當(dāng)把它看作是文檔時 可以作為簽約雙方 的合同文本 VHDL 易于共享的特點(diǎn) 使得大規(guī)模的協(xié)作開發(fā)容易實現(xiàn) 同時 這些特點(diǎn)也促進(jìn)了 VHDL 的發(fā)展和完善 綜上所述 VHDL 有很多其他的硬件描述語言所不具備的優(yōu)點(diǎn) 但是 VHDL 仍然存在一些缺點(diǎn) 主要是 3 個方面 1 要求設(shè)計者對硬件電路知識甚至是芯片結(jié)構(gòu)方面的知識了解較多 應(yīng)該 擺脫一般的高級語言程序設(shè)計思路 因為在電路世界里的事件很多是并行發(fā)生 的 并且硬件電路系統(tǒng)內(nèi)部的模塊可以是互相獨(dú)立的 也可以是互為因果的 所以 在用 VHDL 設(shè)計硬件電路時應(yīng)擺脫一般的高級語言程序設(shè)計思路 在設(shè)計 電路時 應(yīng)先構(gòu)思電路 然后才能描述 2 不能進(jìn)行太抽象的系統(tǒng)描述 因為 EDA 工具無法綜合抽象性太強(qiáng)的系統(tǒng) 故 用 VHDL 描述系統(tǒng)電路時不能太抽象 目前的 VHDL 很難綜合實際的硬件電路 只能適用于系統(tǒng)建模 3 不能描述模擬電路 對于模擬電路而言 VHDL 并不是一種理想的硬件 描述語言 但可以預(yù)見 未來硬件描述語言的發(fā)展方向是模擬電路和數(shù)?;旌?電路的描述方式 1 3 Quartus 簡介 2 乒乓球比賽游戲機(jī)的設(shè)計 2 1 系統(tǒng)設(shè)計要求 設(shè)計一個由甲乙雙方參賽 有裁判的三人乒乓球游戲機(jī) 用 8 個 或更多個 LED 排成一條直線 以中點(diǎn)為界 兩邊各代表參賽雙 方的位置 其中一只點(diǎn)亮的 LED 指示球的當(dāng)前位置點(diǎn)亮的 LED 依此從左到右 或從右到左 其移動速度應(yīng)能調(diào)節(jié) 當(dāng) 球 點(diǎn)亮的那只 LED 運(yùn)動到某方的最后一位時 參賽者應(yīng)能果斷地 按下位于自己一方的按鈕開關(guān) 既表示啟動球拍擊球 若未擊中 球掉出桌外 則對方得一方 設(shè)置自動記分電路 甲乙雙方各用兩位數(shù)碼管進(jìn)行記分顯示 每記滿 11 分 為 1 局 甲乙雙方各設(shè)一個發(fā)光二極管表示擁有發(fā)球權(quán) 每隔兩次自動交換發(fā)球權(quán) 擁有發(fā)球權(quán)的一方發(fā)球才有效 系統(tǒng)框圖如圖 2 1 所示 圖 2 1 乒乓球比賽游戲機(jī)系統(tǒng)框圖 2 2 設(shè)計思路 此設(shè)計問題可分為游戲控制模塊 加減計數(shù)模塊 譯碼模塊 甲乙方得分 顯示模塊四部分 設(shè)置甲乙雙方擊球脈沖信號 int1 int2 一方的擊球信號使加 減計數(shù)器加 法計數(shù) 則另一方的擊球信號就使加 減計數(shù)器減法計數(shù) 譯碼模塊輸出端 Y1 Y8 接 LED 模擬乒乓球的軌跡 經(jīng)控制模塊實現(xiàn)移位方向的控制 真值表 2 2 所 列 設(shè)置發(fā)球權(quán)擁有顯示信號 s1 s2 控制模塊使每兩次交換發(fā)球權(quán) 加 減控制信號 D 由乒乓球到達(dá) Y8 Y1 和擊球信號 int1 int2 及發(fā)球U 權(quán)擁有信號 s1 s2 共同產(chǎn)生 真值表如表 2 3 所示 當(dāng)球到達(dá) Y8 或 Y1 時 參賽者沒有及時擊中 則球掉出桌外 加 減計數(shù)模 塊停止計數(shù) 對方得一分 設(shè)置撿球信號 reset1 通過加 減計數(shù)模塊的異步置數(shù)端實現(xiàn)撿球 當(dāng)甲 方擁有發(fā)球權(quán)時撿球信號將球放到 Y1 乙方擁有發(fā)球權(quán)時將球放到 Y8 在控制模塊對甲乙雙方的得分進(jìn)行檢測 只要一方的得分達(dá)到 11 則一局 結(jié)束 設(shè)置裁判員復(fù)位信號 reset 在每局結(jié)束后將雙方得分清零 由調(diào)節(jié)晶振產(chǎn)生的時鐘脈沖信號的頻率 可以調(diào)節(jié)球的運(yùn)動速度 表 2 2 加 減計數(shù)譯碼顯示真值表 時鐘 加 減控制 計數(shù)器輸出 譯碼器輸出 CLK DUQ3Q2Q1Q0 Y8Y7Y6Y5Y4Y3Y2Y1 0 0001 00000001 0 0010 00000010 0 0011 00000100 0 0100 00001000 0 0101 00010000 0 0110 00100000 0 0111 01000000 0 1000 10000000 1 0111 01000000 1 0110 00100000 1 0101 00010000 1 0100 00001000 1 0011 00000100 1 0010 00000010 1 0001 00000001 表 2 3 加減控制信號的產(chǎn)生 Y8 Y1 Int1 Int2 S1 S2 DU 1 0 0 0 1 1 0 1 0 1 0 0 硬件系統(tǒng)示意圖如下所示 圖 2 4 硬件系統(tǒng)示意圖 3 乒乓球比賽游戲機(jī)的實現(xiàn) 3 1 乒乓球比賽游戲機(jī)的頂層原理圖 圖 3 1 頂層原理圖 原理圖中輸入部分分別是 復(fù)位按鍵 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ù)碼管進(jìn)入譯碼器 74ls138 的位選信號 sel 2 0 在數(shù)碼管上顯示了甲乙兩個人的分?jǐn)?shù) 3 2 系統(tǒng)各功能模塊的實現(xiàn) 3 2 1 比賽控制模塊 圖 3 2 比賽控制模塊元件框圖 按下 startbutton 按鍵之后游戲開始 當(dāng)按下 serve0 時甲發(fā)球 8 個一排 的 LED 燈從左向右移動 從 1 到 8 當(dāng)移動到第八個燈時按下 int2 按鍵代表 乙擊中 則乙得 1 分 提前或未來的及擊球則甲得分 當(dāng)按下 serve1 時乙發(fā)球 從右向左移動 當(dāng)移動到第一個燈時按下 int1 代表甲擊中球 甲得 1 分 提前 或未來的擊球及則乙得分 3 2 2 記分模塊 圖 3 3 記分模塊元件框圖 當(dāng)選擇好的信號 binaryin 4 1 進(jìn)入 mydecoder 之后 相應(yīng)的數(shù)據(jù)會選擇 到相應(yīng)的信號中 并且通過 bcdout1 4 1 和 bcdout2 4 1 輸出相應(yīng)的分?jǐn)?shù)在 兩位數(shù)碼管上的顯示數(shù)字 bcdout1 為十位數(shù) bcdout2 為個位數(shù) 3 2 3 數(shù)碼管顯示模塊 圖 3 4 顯示模塊框圖 數(shù)碼管顯示模塊主要是由兩個模塊組成分別為 setime 以及 deled 這兩個模 塊組成 setime 模塊主要是將輸入的分?jǐn)?shù)進(jìn)行動態(tài)掃描 顯示到每一位數(shù)碼管 的位選上 通過高速的掃描后會將每一位選手的分?jǐn)?shù)很清晰的顯示在數(shù)碼管上 deled 模塊是一個譯碼器的模塊譯碼器的譯碼對照表 3 5 如下所示 表 3 5 譯碼器的譯碼對照表 顯示的數(shù)字 BCD 編碼 七段共陽數(shù)碼管 0 0000 1000000 1 0001 1111001 2 0010 0100100 3 0011 0110000 4 0100 0011001 5 0101 0010010 6 0110 0000010 7 0111 1111000 8 1000 0000000 9 1001 0010000 X XXXX 1111111 在程序中只考慮 0000 1001 即 0 9 的情況 將其轉(zhuǎn)化為相應(yīng)的七段顯示 器的碼字 其他情況不予考慮 4 各個模塊的仿真以及系統(tǒng)仿真 分析 4 1 比賽控制模塊仿真波形 圖 4 1 比賽控制模塊 4 2 記分模塊仿真波形圖 圖 4 2 記分模塊仿真波形圖 表 4 3 對應(yīng)分?jǐn)?shù)的數(shù)碼管顯示 binaryin bcdout1 bcdout2 0000 0000 0000 0001 0000 0001 0010 0000 0010 0011 0000 0011 0100 0000 0100 0101 0000 0101 0110 0000 0110 0111 0000 0111 1000 0000 1000 1001 0000 1001 1010 0001 0000 1011 0001 0001 在圖 4 2 中可以看出當(dāng)?shù)梅譃?2 0010 分時對應(yīng)的兩位數(shù)碼管則會顯示 為 02 bcoudt1 0000 bcoudt2 0010 當(dāng)分?jǐn)?shù)超過 11 分時數(shù)碼管的顯示全為為 00 表 4 3 為具體的分?jǐn)?shù)對應(yīng)的數(shù)碼管顯示 4 3 管腳鎖定 在驗證出乒乓球比賽游戲機(jī)系統(tǒng)的功能之前 需要清楚實驗箱與各個信號 之間的對應(yīng)關(guān)系 參照資料得出本設(shè)計中各引腳的對應(yīng)情況如下 圖 4 4 各引腳的對應(yīng)情況 4 4 系統(tǒng)的波形仿真 圖 4 5 所示為甲方發(fā)球 在恰當(dāng)?shù)臅r候乙方接到球 當(dāng)球回到甲方時 甲 方又接到球 但乙方再也沒有接到球的仿真波形 圖 4 5 乒乓球仿真波形一 圖 4 6 所示為甲方兩次發(fā)球 乙方?jīng)]有接到球 甲方得到 2 分的仿真波形 圖 圖 4 6 乒乓球仿真波形二 圖 4 7 所示為甲方發(fā)球 乙方提前擊球的情況 此時 甲方得一分 圖中 還顯示了甲方發(fā)球 乙方在規(guī)定的時刻沒有接到球的情況 此時 甲方又得一 分 圖 4 7 乒乓球仿真波形三 圖 4 8 所示為當(dāng)清零信號按下時 得分清零 又開始新一局游戲 圖 4 8 乒乓球仿真波形四 4 5 顯示結(jié)果的幾種情況 圖 4 9 驗證結(jié)果 1 圖 4 10 驗證結(jié)果 2 圖 4 11 驗證結(jié)果 3 5 總結(jié) 5 1 設(shè)計制作過程中遇到的問題及解決方案 1 VHDL 語法使用不規(guī)范 當(dāng)我們編寫軟件程序的時 遇到了編譯錯誤 細(xì)心閱讀 QuartusII 錯誤提 示和所編寫的程序后發(fā)現(xiàn)是因為 VHDL 語法使用錯誤 最后經(jīng)過翻閱 EDA 課本 熟悉相關(guān)語法后將其改正 2 動態(tài)掃描部分不清楚 以至無法實現(xiàn)得分顯示功能 起初以為每個數(shù)碼管的引腳都要鎖定 不知該怎樣鎖定四個數(shù)碼管的引腳 后來想起曾經(jīng)做過的數(shù)碼管顯示控制系列最終完成了該部分 3 引腳鎖定不完整 最終編譯無法通過 處理了之前出現(xiàn)的幾個問題后 在最后編譯時未通過 細(xì)致查看了錯誤提 示 發(fā)現(xiàn)是個別管腳未鎖定的原因 我們最終把各個管腳鎖定號碼一一檢查了 一遍 從而通過了編譯 5 2 本設(shè)計有以下幾個可以改進(jìn)的地方 1 可以在甲乙兩位得分的數(shù)碼管顯示中間在用一個顯示 這個符號 2 通過適當(dāng)添加幾種語音芯片 就可以在不同的情況下發(fā)出美妙的聲響 能為比賽增添不少樂趣 3 在現(xiàn)有設(shè)計基礎(chǔ)上使用無線電或紅外技術(shù) 還可以使本項目升級為無線 智能乒乓球游戲機(jī) 附 錄 游戲控制模塊的 VHDL 程序 library ieee use ieee std logic 1164 all use ieee std logic arith all use ieee std logic unsigned all entity compete is port reset in std logic clk 1 in std logic startbutton in std logic serve in std logic vector 1 downto 0 int1 int2 in std logic light out std logic vector 1 to 8 counta countb out std logic vector 3 downto 0 end compete architecture one of compete is Type pingpong is waitserve light1on ballmoveto2 allow2int light8on ballmoveto1 al low1int signal state pingpong signal i integer range 0 to 8 signal count1 count2 count3 count4 std logic vector 3 downto 0 0000 begin process clk 1 begin if reset 1 then i 0 count1 0000 count2 0000 count3 0000 count4 0000 elsif clk 1 event and clk 1 1 then if count1 1011 then i 0 count1 0000 count2 0000 count3 count3 1 elsif count2 1011 then i 0 count1 0000 count2 0000 count4 count4 1 elsif startbutton 0 then i 0 count1 0000 count2 0000 count3 0000 count4 case serve is when 01 i 1 state i 8 statei ii 2 if int2 1 then i 0 count1 count1 1 state waitserve else state i 7 if int1 1 then i 0 count2 count2 1 state waitserve else state if int1 1 then i 0 count2 count2 1 state waitserve elsif i 2 then i 1 state allow1int else i if int2 1 then i 0 count1 count1 1 state waitserve elsif i 7 then i 8 state allow2int else i if int1 1 then i 2 state ballmoveto2 else count2 count2 1 i 0 state if int2 1 then i 7 state ballmoveto1 else count1 count1 1 i 0 state waitserve end if end case end if end if end process 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 end one 記分模塊的 VHDL 程序 library ieee use ieee std logic 1164 all use ieee std logic arith all use ieee std logic unsigned all entity mydecoder is port binaryin in std logic vector 4 downto 1 bcdout1 out std logic vector 4 downto 1 bcdout2 out std logic vector 4downto 1 end mydecoder architecture m of mydecoder is signal tembinaryin std logic vector 4 downto 1 begin process binaryin begin tembinaryin bcdout1 0000 bcdout2 bcdout1 0000 bcdout2 bcdout1 0000 bcdout2 bcdout1 0000 bcdout2 bcdout1 0000 bcdout2 bcdout1 0000 bcdout2 bcdout1 0000 bcdout2 bcdout1 0000 bcdout2 bcdout1 0000 bcdout2 bcdout1 0000 bcdout2 bcdout1 0001 bcdout2 bcdout1 0001 bcdout2 bcdout1 0000 bcdout2 0000 end case end process end m 動態(tài)掃描模塊的 VHDL 程序 library ieee use ieee std logic 1164 all use ieee std logic unsigned all entity seltime is port clk in std logic s in std logic vector 15 downto 0 daout out std logic vector 3 downto 0 sel out std logic vector 2 downto 0 end seltime architecture behav of seltime is signal sec std logic vector 2 downto 0 begin process clk begin if clk event and clk 1 then if sec 111 then sec 000 else secdaoutdaoutdaoutdaoutdaoutdaoutdaoutdaoutdaout XXXX end case end process sel sec end behav 譯碼器模塊的 VHDL 程序 LIBRARY IEEE USE IEEE STD LOGIC 1164 ALL ENTITY DELED IS PORT S IN STD LOGIC VECTOR 3 DOWNTO 0 A B C D E F G H OUT STD LOGIC END DELED ARCHITECTURE BEHAV OF DELED IS SIGNAL DATA STD LOGIC VECTOR 3 DOWNTO 0 SIGNAL DOUT STD LOGIC VECTOR 7 DOWNTO 0 BEGIN DATADOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUT 00000000 END CASE END PROCESS H DOUT 7 G DOUT 6 F DOUT 5 E DOUT 4 D DOUT 3 C DOUT 2 B DOUT 1 A DOUT 0 END BEHAV- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(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è)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 乒乓球 比賽 游戲機(jī) 設(shè)計
鏈接地址:http://www.szxfmmzy.com/p-6643652.html