基于VHDL的乒乓球游戲機(jī)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
基于VHDL的乒乓球游戲機(jī)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
基于VHDL的乒乓球游戲機(jī)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
基于VHDL的乒乓球游戲機(jī)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
基于VHDL的乒乓球游戲機(jī)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于vhdl的乒乓球游戲機(jī)的設(shè)計(jì)與實(shí)現(xiàn)基于vhdl的乒乓球游戲機(jī)的設(shè)計(jì)與實(shí)現(xiàn)摘要:本文介紹了乒乓球游戲機(jī)的設(shè)計(jì),并進(jìn)行了程序仿真,實(shí)現(xiàn)一個乒乓球游戲機(jī)的規(guī)定功能。設(shè)計(jì)的乒乓球游戲機(jī)能夠正確判斷與顯示乒乓球的位置,并能自動裁判和記分的裝置,可應(yīng)用于實(shí)際的乒乓球游戲比賽中。程序通過調(diào)試運(yùn)行,實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。本論文對系統(tǒng)的功能設(shè)計(jì)、實(shí)現(xiàn)流程及正確使用都做了詳細(xì)的描述。系統(tǒng)開發(fā)平臺為max+plusii,程序設(shè)計(jì)語言為vhdl。關(guān)鍵詞:乒乓球游戲機(jī);設(shè)計(jì);實(shí)現(xiàn);vhdl;max+plus; design and realization of table tennis game playerabstra

2、ct: this article introduces the design of the table tennis game player, and carried out simulation procedures, implementation of the provisions of a table tennis game features. designed to be able to correctly judge the table tennis game table and display the location, and can automatically appear a

3、nd scoring devices, can be applied to the actual game of table tennis game. procedure debugging operations, implementation of the design objectives. this thesis describes in detail the function of the system design, implementation and proper use of flow are described in detail to do. system developm

4、ent platform for the max + plusii, programming language for vhdl. .keywords: table tennis game player; design; realization; vhdl; max + plus 目 錄1 引言11.1 課題設(shè)計(jì)的目的11.2 課題設(shè)計(jì)的內(nèi)容22 eda、vhda簡介32.1 eda的發(fā)展概況32.2 硬件描述語言-vhdl.33 乒乓球游戲機(jī)設(shè)計(jì)過程53.1設(shè)計(jì)規(guī)劃53.2乒乓球?qū)嶓w的設(shè)計(jì)63.3 狀態(tài)機(jī)編程實(shí)現(xiàn)73.4 記分譯器的設(shè)計(jì)103.5 構(gòu)造體的設(shè)計(jì)124 系統(tǒng)仿真144.1系統(tǒng)編

5、譯144.2系統(tǒng)有關(guān)波形的仿真14結(jié)束語17致謝18參考文獻(xiàn)19附錄201 引 言08年奧運(yùn),在電視機(jī)前歡騰了半個晚上??粗咨钠古仪蛟谄聊恢醒胩鴣硖ィ闹械南矏傄苍诓粩喾e累。又一枚金牌歸我中華。課業(yè)繁重,但閑暇時,總喜歡在校園中徜徉,每每看到跳動的乒乓,就有種輕衫襯跳脫的輕松感。因此,看到這次的論文選題,不禁啞然失笑,兩種風(fēng)牛馬不相及的事物,就這樣在這里糾結(jié)了。乒乓球作為中國的國球,乒乓人才輩出。本課程設(shè)計(jì)就是以乒乓球?yàn)楸尘埃盟鶎W(xué)的硬件知識完成一個乒乓球游戲機(jī)的設(shè)計(jì)。隨著科學(xué)技術(shù)的發(fā)展,人類社會已進(jìn)入到高度發(fā)達(dá)的信息化社會, 信息社會的發(fā)展離不開電子產(chǎn)品的進(jìn)步。現(xiàn)代電子產(chǎn)品的發(fā)展越來

6、越快, 各種新型電子元器件和智能化的電子產(chǎn)品已經(jīng)在國民經(jīng)濟(jì)的各個領(lǐng)域和人民生活的各個方面得到了日益廣泛的應(yīng)用。實(shí)現(xiàn)這種進(jìn)步的主要原因就是生產(chǎn)制造技術(shù)和電子設(shè)計(jì)技術(shù)的發(fā)展。其中電子玩具的發(fā)展也是在日益成熟。乒乓球游戲機(jī)控制電路是有甲、乙雙方參賽,有裁判控制發(fā)“球”的三人乒乓球游戲機(jī);它能完成自動裁判和自動計(jì)分是一個帶數(shù)字顯示的模擬游戲機(jī)。其結(jié)構(gòu)簡單、成本低、易操作,安全性強(qiáng)、無污染。乒乓球游戲機(jī)還能在娛樂的同時提高我們的反應(yīng)、應(yīng)變能力。具有良好的市場發(fā)展前景1。1.1課題設(shè)計(jì)的目的本文應(yīng)用狀態(tài)機(jī),設(shè)計(jì)了一個乒乓球游戲機(jī)的狀態(tài)機(jī)。狀態(tài)機(jī)的實(shí)現(xiàn)是符合人的思維邏輯的,且簡單明了2。計(jì)算機(jī)組成原理課程設(shè)

7、計(jì)是重要的綜合性實(shí)踐教學(xué)環(huán)節(jié)。 (1)通過該課程設(shè)計(jì),結(jié)合計(jì)算機(jī)科學(xué)的理論、抽象和設(shè)計(jì)三種形態(tài),進(jìn)一步掌握計(jì)算機(jī)中各功能部件的工作原理和邏輯實(shí)現(xiàn),熟悉乒乓球游戲機(jī)的基本工作原理。(2)通過該課程設(shè)計(jì)的學(xué)習(xí),總結(jié)計(jì)算機(jī)組成原理課程的學(xué)習(xí)內(nèi)容,運(yùn)用所學(xué)的數(shù)字電路以及計(jì)算機(jī)組成和狀態(tài)機(jī)的基本原理、基本知識和基本技巧,解決某一個具體的實(shí)際問題,培養(yǎng)綜合分析和解決問題的能力。(3)為今后分析、設(shè)計(jì)、開發(fā)以及使用計(jì)算機(jī)打下堅(jiān)實(shí)的基礎(chǔ)。1.2 課題設(shè)計(jì)的內(nèi)容本文設(shè)計(jì)的是一個乒乓球游戲機(jī)的狀態(tài)機(jī)。利用vhdl,不需要按照傳統(tǒng)的設(shè)計(jì)方法進(jìn)行煩瑣的狀態(tài)分配、繪制狀態(tài)、化簡狀態(tài)方程等,就可以簡單地根據(jù)mds圖直接對

8、狀態(tài)機(jī)進(jìn)行描述。乒乓球游戲機(jī)可以實(shí)現(xiàn)如下功能。(1)該設(shè)計(jì)一個由甲、乙雙方參賽,有裁判的3人乒乓球游戲機(jī)。(2) 用8個(或更多個)led排成一條直線,以中點(diǎn)為界,兩人乒乓游戲機(jī)是用8個發(fā)光二極管代表乒乓球臺,中間兩個發(fā)光二極管兼做乒乓球網(wǎng),用點(diǎn)亮的發(fā)光二極管按一定方向移動來表示球的運(yùn)動,在游戲機(jī)的兩側(cè)個設(shè)置發(fā)球和擊球開關(guān),甲乙雙方按乒乓球比賽規(guī)則來操作開關(guān)。(3)當(dāng)“球”(點(diǎn)亮的那只led)運(yùn)動到某方的最后一位時,參賽者應(yīng)能果斷地按下位于自己一方的按鈕開關(guān),即表示啟動球拍擊球。當(dāng)甲方按動乒乓球開關(guān)時,靠近甲方的第一個發(fā)光二極管亮,然后發(fā)光二極管由甲方方向依次點(diǎn)亮,代表乒乓球的移動。當(dāng)球過網(wǎng)后

9、按照設(shè)計(jì)者規(guī)定的球位乙方就可以擊球。若乙方提前擊球或者未擊到球,則甲方得分。然后重新發(fā)球進(jìn)行比賽。(4)設(shè)置自動記分電路,甲、乙雙方各用7段譯碼管進(jìn)行記分顯示,每計(jì)滿21分為1局,然后記分清零,重新開始新一局比賽。2 eda、vhdl簡介2.1 eda發(fā)展概況電子設(shè)計(jì)技術(shù)的核心就是eda技術(shù),eda是指以計(jì)算機(jī)為工作臺,融合應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)最新成果而研制成的電子cad通用軟件包,主要能輔助進(jìn)行三方面的設(shè)計(jì)工作,即ic設(shè)計(jì)、電子電路設(shè)計(jì)和pcb設(shè)計(jì)。eda技術(shù)已有30年的發(fā)展歷程,大致可分為三個階段。70年代為計(jì)算機(jī)輔助設(shè)計(jì)(cad)階段,人們開始用進(jìn)行ic版圖編輯、pcb布

10、局布線,取代了手工操作。80年代為計(jì)算機(jī)輔助工程(cae)階段。與cad相比,cae除了有純粹的圖形繪制功能外,又增加了電路功能設(shè)計(jì)和結(jié)構(gòu)設(shè)計(jì),并且通過電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,實(shí)現(xiàn)了工程設(shè)計(jì)。cae的主要功能是:原理圖輸入,邏輯仿真,電路分析,自動布局布線,pcb后分析。90年代為電子系統(tǒng)設(shè)計(jì)自動化(eda)階段2。硬件描述語言hdl是相對于一般的計(jì)算機(jī)軟件語言,如:c、pascal而言的。hdl語言使用與設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計(jì)者可利用hdl程序來描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將

11、此程序編程能控制fpga和cpld內(nèi)部結(jié)構(gòu),并實(shí)現(xiàn)相應(yīng)邏輯功能的的門級或更底層的結(jié)構(gòu)網(wǎng)表文件或下載文件。目前,就fpga/cpld開發(fā)來說,比較常用和流行的hdl主要有abel-hdl、ahdl和vhdl3。2.2 硬件描述語言vhdlvhdl的英文全名是very-high-speed integrated circuit hardwaredescription language,誕生于1982年。1987年底,vhdl被ieee和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言 。自ieee公布了vhdl的標(biāo)準(zhǔn)版本,ieee-1076(簡稱87版)之后,各eda公司相繼推出了自己的vhdl設(shè)計(jì)環(huán)境,或宣布自

12、己的設(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主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的

13、語句外,vhdl的語言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級語言。vhdl的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可是部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分4。在對一個設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是vhdl系統(tǒng)設(shè)計(jì)的基本點(diǎn)。應(yīng)用vhdl進(jìn)行工程設(shè)計(jì)的優(yōu)點(diǎn)是多方面的4。 (1)與其他的硬件描述語言相比,vhdl具有更強(qiáng)的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語言。強(qiáng)大的行為描述能力是避開具

14、體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。 (2)vhdl豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時可對設(shè)計(jì)進(jìn)行仿真模擬。 (3)vhdl語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實(shí)現(xiàn)。(4)對于用vhdl完成的一個確定的設(shè)計(jì),可以利用eda工具進(jìn)行邏輯綜合和優(yōu)化,并自動的把vhdl描述設(shè)計(jì)轉(zhuǎn)變成門級網(wǎng)表。 (5)vhdl對設(shè)計(jì)的描述具有相對獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么

15、,而進(jìn)行獨(dú)立的設(shè)計(jì)4。 3 乒乓球游戲機(jī)設(shè)計(jì)過程3.1設(shè)計(jì)規(guī)劃 根據(jù)乒乓球比賽的過程和規(guī)則,首先游戲開始,如果一方非正確擊球則另一方加分,當(dāng)分?jǐn)?shù)大于21時獲勝,游戲結(jié)束,我們把設(shè)計(jì)流程規(guī)定如圖3.1所示。游戲開始正確接發(fā)球?大于21? 甲 乙 否 否大于21?乙方勝利甲方勝利甲方加分乙方加分 n n y y游戲結(jié)束圖3.1設(shè)計(jì)流程圖 狀態(tài)機(jī)設(shè)置了7個狀態(tài),分別是“等待發(fā)球狀態(tài)”,“第一盞燈亮狀態(tài)”,“第八盞燈亮狀態(tài)”,“球向乙移動狀態(tài)”,“ 球向甲移動狀態(tài)”,“允許甲擊球狀態(tài)”,“允許乙擊球狀態(tài)”。這是該程序中起決定作用的七個狀態(tài)。開始的時候處于“等待發(fā)球狀態(tài)”,若甲發(fā)球則狀態(tài)轉(zhuǎn)移到“第一盞燈

16、亮狀態(tài)”,若乙發(fā)球則轉(zhuǎn)移到“第八盞燈亮狀態(tài)”,具體說明以甲球?yàn)槔H舭l(fā)球后乙沒有提前擊球-規(guī)定球移動到對方第一個發(fā)光二極管時允許擊球,那么狀態(tài)機(jī)從“第一盞燈亮狀態(tài)”轉(zhuǎn)移到“球向乙移動狀態(tài)”。若在“球向乙移動狀態(tài)”乙仍然沒有提前擊球,狀態(tài)就轉(zhuǎn)移到“允許乙擊球狀態(tài)”,在此狀態(tài)下,如果乙擊球了,那么狀態(tài)就轉(zhuǎn)移到“ 球向甲移動狀態(tài)”。在“第一盞燈亮狀態(tài)”, “球向乙移動狀態(tài)”中,如果乙擊球了 ,就算提前擊球,這樣甲得分,狀態(tài)轉(zhuǎn)移到“等待發(fā)球狀態(tài)”等待發(fā)球,“ 球向甲移動狀態(tài)”之后的過程和前面的過程只不過是甲乙角色的調(diào)換而已。狀態(tài)轉(zhuǎn)移規(guī)則都是一樣的。圖3.2給出了乒乓球游戲機(jī)的原理圖。等待發(fā)球 甲得分

17、乙得分 甲發(fā)球 乙發(fā)球第一盞燈亮第八盞燈亮允許甲發(fā)球球向甲移動 乙擊球 甲擊球球向乙移動 乙擊球 甲擊球允許乙發(fā)球 乙沒擊球 甲沒擊球圖3.2 乒乓球游戲機(jī)原理圖3.2乒乓球游戲機(jī)實(shí)體的設(shè)計(jì)該乒乓球游戲機(jī)的設(shè)計(jì)主要包括的模塊與內(nèi)容有:乒乓球游戲機(jī)實(shí)體的設(shè)計(jì),游戲機(jī)編程的實(shí)現(xiàn),記分譯碼器的設(shè)計(jì)以及構(gòu)造體的設(shè)計(jì)。直接對狀態(tài)機(jī)進(jìn)行描述,所有的狀態(tài)均可表達(dá)為case_when結(jié)構(gòu)中的一條case語句,而狀態(tài)的轉(zhuǎn)移則通過if_then_else語句實(shí)現(xiàn)。以下我們就詳細(xì)解析各個板快的設(shè)計(jì)與實(shí)現(xiàn)。設(shè)計(jì)該乒乓球游戲機(jī)的輸入與輸出端口。首先考慮輸入端口,一般應(yīng)該設(shè)置一個異步置位端口reset,用于在系統(tǒng)不正常時

18、回到初始狀態(tài):兩個發(fā)球輸入端serve1和serve2,邏輯1分別表示甲方和乙方的發(fā)球;兩個擊球輸入端hit1和hit2,邏輯1分別表示甲擊球和乙擊球;一個開始游戲按鈕startbutton,處于邏輯1表示可以游戲;還得有一個時鐘輸入端口clk。其次考慮輸出端口,芯片應(yīng)該有8個輸出端口來控制8個發(fā)光二極管,輸出邏輯1即輸出一個高電平,可以使發(fā)光二極管點(diǎn)亮;另外,要直觀地表示雙方的得分,就得用到4個七段譯碼器,每方用到2個,可以表示0到21的數(shù)字,每個七段譯碼器需要芯片的7個輸出端口來控制,總共28個輸出端口。實(shí)體的設(shè)計(jì)如下:library ieee;use ieee.std_logic_116

19、4.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; /引用必要的庫函數(shù)和包集合entity pingponggame is -實(shí)體名為pingponggame port(reset:int std_logic;clk:int std_logic;startbutton:int std_logic; -開始游戲輸入端口serve:in std_logic_vector(1 to 2); -發(fā)球輸入端口hit1,hit2:int std_logic; -甲和乙的擊球輸入端口-控制8個發(fā)光二極管的輸出端口light:

20、out std_logic_vector(1 to 8); score11,score12,score21,score22:out std_logic_vector(1 to 7)); -4個用于控制4個7段譯碼器的輸出端口end pingponggame;3.3狀態(tài)機(jī)編程實(shí)現(xiàn) 狀態(tài)機(jī)設(shè)置了7個狀態(tài),分別是waitserve, light1on, ballmoveto2, allow2hit,light8on,ballmoveto1,和allow1hit它們代表的具體數(shù)值依次是0到6。在波形模擬圖中是用數(shù)值來表示狀態(tài)的。 在整個程序中,狀態(tài)機(jī)起的是中央控制器的作用,由它控制的信號來影響整個程序

21、中的其他相關(guān)部分,如記分部分,發(fā)光二極管部分。乒乓球游戲機(jī)中有兩個計(jì)數(shù)器count1和count2,分別記憶甲和乙的得分,用發(fā)光二極管的輪流發(fā)光表示球的移動軌跡。狀態(tài)機(jī)的進(jìn)程如下:process(clk) -clk作為敏感信號觸發(fā)進(jìn)程begin -進(jìn)程開始if reset=1 then -異步置位i=0;count100000;count2=00000;elsif clkevent and clk=1 then -當(dāng)處于時鐘inclock上升沿時 if count1=10101or count2=10101theni=0;count100000;count2=00000;elsif start

22、button+0 theni=0;count100000;count2 -進(jìn)程處于等待發(fā)球狀態(tài)case serve iswhen 10= i=1;state i=8;statei i -進(jìn)程處于第一盞燈亮狀態(tài)i=2if hit2=1 theni=0;count1=count1+1;state=waitserve; elsestate -進(jìn)程處于第八盞燈亮狀態(tài)i=7;if hit=1 theni=0;count2=count2+1;state=waitserve;elsestate -進(jìn)程處于球向乙移動狀態(tài)if hit1=1 theni=0;count2=count2+1;state=waits

23、erve;elsif i=2 then i=1;state=allow1hit;else i -進(jìn)程處于球向乙移動狀態(tài)if hit2=1theni=0;ount1=count1+1;state=waitserve;elsif i=7 then i=8;state=allow2hit;else i -進(jìn)程處于允許甲擊球狀態(tài)if hit1=1 then i=2;state=ballowto2;else count2=count2+1;i=0;state -進(jìn)程處于允許乙擊球狀態(tài)if hit2=1then i=7;state=ballmoveto1;else count1=count1+1;i=0;

24、state=waitserve;end if;end case;end if;end if;end process;3.4記分譯碼器的設(shè)計(jì) 七段譯碼器是在數(shù)學(xué)電路設(shè)計(jì)中經(jīng)常用到的顯示電路。所謂七段譯碼器,其實(shí)是由7段發(fā)光二極管組成的用于顯示數(shù)字的器件。記分譯碼器(mydecoder):由于記分需要顯示出來,所以要使用七段譯碼器。而狀態(tài)機(jī)中的記分是由5位二進(jìn)制碼來表示的,即count1和count2。以下程序就是實(shí)現(xiàn)從5位二進(jìn)制碼轉(zhuǎn)換成七段譯碼顯示。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use

25、ieee.std_logic_unsingned.all; entity mudecoder isport(binaryin:int std_logic_vector(1 to 5); -5位二進(jìn)制碼的輸入端口bcdout1:out std_logic_vector(1 to 7); -七段譯碼器輸出端口bcdout2:out std_logic_vector(1 to 7);end mydecoder;architecture m of mydecoder issignal tembinaryin:std_logic_vector(1 to 5);beginprocess(binaryin)

26、begintembinaryinbcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=

27、0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=1101101;bcdout2bcdout1=1101101;bcdout2bcdout1=1101101;bcdout2=1111110;end case;end process;end m; 這個記分譯馬電路是針對乒乓球游戲機(jī)的

28、特點(diǎn)進(jìn)行的特別設(shè)計(jì),采用的是全部列舉的方法。3.5 構(gòu)造體的設(shè)計(jì)該構(gòu)造體緊跟在實(shí)體設(shè)計(jì)之后,這樣就完成了數(shù)字乒乓球游戲機(jī)的vhdl源程序編寫。rchitecture game of pingponggame istype pingpong is (waitserve,light1on,ballmoveto2,allow2hit,light8on,ballmoveto1,allow1hit);-設(shè)置7個狀態(tài),為枚舉數(shù)據(jù)類型,記為pingpong signal state:pingpong;signal i:integer range 0 to 8;signal count1,count2:std

29、_logic_vector(1 to 5):=00000; -內(nèi)部計(jì)數(shù)器,是5位二進(jìn)制變量component mydecoder isport(binaryin: in std_logic_vector(1 to 5);bcdout1:out std_logic_vector(1 to 7);bcdout2:out std_logic_vector(1 to 7););end component; -調(diào)用記分譯碼器beginprocess(clk) -狀態(tài)機(jī)進(jìn)程beginend process; -進(jìn)程處i信號控制發(fā)光二極管的亮暗light=10000000when(i=1) else0100

30、0000 when(i=2) else00100000 when(i=3) else00010000 when(i=4) else00001000 when(i=5) else00000100 when(i=6) else00000010 when(i=7) else00000001 when(i=8) else00000000; -其他情況所有發(fā)光二極管都暗u0:mydecoder port map(count1,score11,score12); -用七段譯碼器顯示甲的分?jǐn)?shù)u1:mydecoder port map(count2,score21,score22); -用七段譯碼器顯示乙的分

31、數(shù)end game;從構(gòu)造體設(shè)計(jì)中可以看到,控制整個乒乓球游戲機(jī)運(yùn)轉(zhuǎn)的就是狀態(tài)機(jī)進(jìn)程,它隊(duì)各個外圍部分起控制作用。它是整個程序的核心,起到一個中心控制器的作用。而外圍的部分,比如分?jǐn)?shù)顯示,球的軌跡,都是通過它傳出的信號來控制。狀態(tài)機(jī)中的i信號和count1,count2信號的變化同時就可以影響到外圍的顯示部分-發(fā)光二極管和七段譯碼器,從而表示出當(dāng)時的乒乓球位置和雙方分?jǐn)?shù)情況。4 系統(tǒng)仿真4.1系統(tǒng)的編譯 編譯時選擇所要下載的芯片為epm7128slc84-15,在編譯完成以后,會出現(xiàn)兩個警告,信息是這樣的:“primitive score112is stuck at vcc”和“primiti

32、ve score212is stuck at vcc”。這說明score11(2)和score21(2)端口輸出一直是1。 score11(2)是用來表示甲得分的十位數(shù)字的七段譯碼器的b段的,由于在記分譯碼器設(shè)計(jì)中,十位數(shù)字只會顯示0,1或者2,無論是這三個數(shù)字中的那一個,b段的發(fā)光二極管都是亮的,所以就相當(dāng)于接著高電平vcc。score21(2)同理。提示信息如圖4.1所示。圖4.1 編譯時警告信息圖4.2 系統(tǒng)有關(guān)波形的仿真 編譯完成后,進(jìn)行波形仿真,仿真波形圖如圖4.2所示。圖4.2 乒乓球游戲機(jī)波形仿真圖一 在這個仿真圖中,看到serve數(shù)組為1,代表乙發(fā)球。i從8開始依次遞減計(jì)數(shù),控

33、制發(fā)光管亮暗light信號也隨著i的數(shù)值變化,見圖4.3所示。由light端口輸出的高電平驅(qū)動芯片以外的發(fā)光二極管使之點(diǎn)亮,這樣就可以通過發(fā)光二極管模擬乒乓球的運(yùn)動軌跡??梢钥吹剑诩自摀羟虻臅r候沒有擊球,也就是hit1在state狀態(tài)6的時候沒有高電平1輸入,則乙得分,count2由0變1,score22的值隨之變化。從最后一行state值的變化,可以清楚分析狀態(tài)轉(zhuǎn)移。圖4.3 乒乓球游戲機(jī)仿真波形圖一中的乒乓球移動狀況圖4.4是乙發(fā)球以后,甲在正確時刻接球的波形仿真圖。圖4.4 乒乓球游戲機(jī)波形仿真圖二甲在state為狀態(tài)6的時候擊球了,在圖上hit1在此時刻出現(xiàn)高電平,看到state轉(zhuǎn)移

34、到了狀態(tài)2。當(dāng)?shù)搅藸顟B(tài)3乙沒有擊球,所以甲得分了,count1由0變到1,而七段譯碼器隨之改變。在圖4.5中可以清楚地看到球的移動軌跡。圖4.5 乒乓球游戲機(jī)仿真波形圖二中的乒乓球移動狀況下面仿真甲提前擊球的情況,如圖4.6所示。在不允許甲擊球的狀態(tài)下,即state處在狀態(tài)5時,hit1輸入邏輯1,表示甲擊球了,所以乙得分。這種情況下球的移動狀況如圖4.7所示。圖4.6 乒乓球游戲機(jī)波形仿真圖三圖4.7 乒乓球游戲機(jī)仿真波形圖三中的乒乓球移動狀況結(jié)束語在課題設(shè)計(jì)中,通過使用max+plus這個完全集成化、易學(xué)易用的可編程邏輯設(shè)計(jì)環(huán)境,利用vhdl語言設(shè)計(jì)的乒乓球游戲機(jī),較成功的完成了預(yù)期的效果

35、,能夠正確判斷與顯示乒乓球的位置,并能自動裁判和記分的裝置。在具體設(shè)計(jì)過程中還需要改進(jìn)的是控制系統(tǒng)的糾錯功能。由于時間關(guān)系,系統(tǒng)功能實(shí)現(xiàn)不夠完善,這些都需要不斷的改進(jìn)和補(bǔ)充。這次課程設(shè)計(jì)總的說來收獲很大。在最初的設(shè)計(jì)過程中,一共整理出好幾個方案。但在實(shí)際的過程中發(fā)現(xiàn),設(shè)計(jì)的情況和實(shí)際中還是有些差異的,通過比較得出最優(yōu)方案。此外,也學(xué)會了使用max+plus軟件。這次課程設(shè)計(jì)雖然短暫。但卻是我獨(dú)立自主的從設(shè)計(jì)電路到得出結(jié)論。書本上的內(nèi)容第一次完完全全的綜合運(yùn)用。在設(shè)計(jì)過程中。遇到了書本中不曾學(xué)到的知識,經(jīng)過請教老師和同學(xué),以及查閱相關(guān)的資料,最終攻克。致 謝在論文的準(zhǔn)備和寫作階段,我遇到了很多難

36、題,也從中認(rèn)識到了自己專業(yè)知識的不足和設(shè)計(jì)思維上與老師們的差距。本文是在指導(dǎo)老師 xxx老師的悉心指導(dǎo)下完成的,xxx老師在學(xué)術(shù)上嚴(yán)格要求,老師的教誨和鼓勵,及在學(xué)術(shù)上一絲不茍的精神,本人受益匪淺,在此向xxx老師表示衷心的感謝和敬意!參考文獻(xiàn)1 劉艷. eda 技術(shù)在數(shù)字系統(tǒng)電路設(shè)計(jì)實(shí)驗(yàn)中的應(yīng)用j. 實(shí)驗(yàn)室研究與探索,2002,21(3): 632642 徐穎.protel 99 se eda技術(shù)及應(yīng)用m.西安:機(jī)械工業(yè)出版社.20053 楊恒,盧飛成. fpga/vhdl快速工程實(shí)踐入門與提高m.北京航空航天大學(xué)出版社.20034甘歷.vhdl應(yīng)用與開發(fā)實(shí)踐m.科學(xué)出版社.20035盧杰,

37、賴毅. vhdl與數(shù)字電路設(shè)計(jì)m. 北京:科學(xué)出版社,20015劉建成,嚴(yán)婕. 電子技術(shù)實(shí)驗(yàn)與設(shè)計(jì)教程m. 北京:電子工業(yè)出版社,2007附錄:主要vhdl源程序/ 程序名稱:change.vhd/ 程序作者:陳 梁/ 最后修改日期:2009-3-2 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity change isport(first:in std_logic;- 首發(fā)是誰 score1,score2:in integer

38、range 0 to 11;- 當(dāng)前比分 total1,total2: in integer range 0 to 4;- 當(dāng)前總比分 total: out integer range 0 to 7; - 總比分和 ends,who:out std_logic); - 比賽是否結(jié)束標(biāo)志,當(dāng)前發(fā)球權(quán)end entity;architecture main of change issignal who_temp,first_temp:std_logic;signal temp:integer range 0 to 21;beginfirst_temp = first;temp = score1 +

39、 score2; -當(dāng)前比分和ends = 1 when total1 = 4 or total2 = 4 - 當(dāng)一方獲勝4局時比賽結(jié)束else 0;who_temp = first_temp when (temp=0 or temp=1 or temp=4 or temp=5 or temp=8 or temp=9 or temp=12 or temp=13 or temp=16 or temp=17 or temp=20) else not first_temp when (temp=2 or temp=3 or temp=6 or temp=7 or temp=10 or temp=11

40、 or temp=14 or temp=15 or temp=18 or temp=19) else who_temp; -根據(jù)總比分和交換發(fā)球權(quán)who = who_temp;total clk,clk_out = clk_temp,sel=speed_sel);u2: control port map(clk = clk_temp,p1 = p1,p2 = p2,judge=judge,reset = reset,who=who,first=first,sel=first_sel,clear=clear,score1 = score1,score2=score2,p1win=p1win,p2win=p2win,p1total=p1total,p2total=p2total,led_out=led,total=total);u3: score_stat port map(p1win=p1win,p2w

溫馨提示

  • 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

提交評論