基于fpga的俄羅斯方塊游戲設(shè)計(jì)畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩45頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  學(xué)位論文原創(chuàng)性聲明</b></p><p>  本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫的成果作品。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。</p><p>  作者簽名: 年 月

2、 日</p><p>  學(xué)位論文版權(quán)使用授權(quán)書</p><p>  本學(xué)位論文作者完全了解學(xué)校有關(guān)保障、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向有關(guān)學(xué)位論文管理部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)省級(jí)優(yōu)秀學(xué)士學(xué)位論文評(píng)選機(jī)構(gòu)將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。</p>&l

3、t;p><b>  本學(xué)位論文屬于</b></p><p>  1、保密 □,在 年解密后適用本授權(quán)書。</p><p><b>  2、不保密 □。</b></p><p> ?。ㄕ?qǐng)?jiān)谝陨舷鄳?yīng)方框內(nèi)打“√”)</p><p>  作者簽名:

4、 年 月 日 </p><p>  導(dǎo)師簽名: 年 月 日 </p><p><b>  目錄</b></p><p><b>  摘要4</b></p><p><b>  前言5</b>

5、;</p><p><b>  1緒論5</b></p><p>  1.1游戲的歷史5</p><p>  1.1.1追根溯源5</p><p>  1.1.2圖形硬件的革命6</p><p>  1.2游戲的意義與內(nèi)涵6</p><p>  1.3游戲的組成因

6、素6</p><p>  2游戲的可行性分析7</p><p><b>  2.1設(shè)計(jì)目的7</b></p><p>  2.2可行性研究前提7</p><p>  2.3可行性分析8</p><p><b>  2.4結(jié)論意見(jiàn)8</b></p>&

7、lt;p><b>  3需求分析8</b></p><p><b>  3.1引言8</b></p><p><b>  3.2游戲需求8</b></p><p><b>  4設(shè)計(jì)分析9</b></p><p>  4.1系統(tǒng)方案設(shè)計(jì)支持

8、9</p><p>  4.1.1開發(fā)環(huán)境9</p><p>  4.1.2編程語(yǔ)言9</p><p>  4.1.3硬件平臺(tái)9</p><p>  4.2系統(tǒng)實(shí)現(xiàn)框圖9</p><p>  4.3模塊實(shí)現(xiàn)11</p><p>  4.3.1實(shí)驗(yàn)電路圖11</p>&l

9、t;p>  4.3.2隨機(jī)產(chǎn)生模塊11</p><p>  4.3.3 PS/2鍵控模塊13</p><p>  4.3.4 VGA顯示模塊16</p><p>  4.3.5分頻模塊20</p><p>  4.3.6鍵控模塊21</p><p><b>  5仿真分析21</b&g

10、t;</p><p>  5.1隨機(jī)數(shù)產(chǎn)生序列仿真21</p><p>  5.2 VGA顯示模塊仿真波形21</p><p>  5.3實(shí)現(xiàn)運(yùn)行結(jié)果仿真22</p><p><b>  6總結(jié)與展望24</b></p><p>  6.1本文完成的主要工作24</p>&

11、lt;p>  6.2未來(lái)研究展望25</p><p><b>  致謝27</b></p><p><b>  參考文獻(xiàn)28</b></p><p><b>  附錄29</b></p><p>  基于FPGA的俄羅斯方塊游戲設(shè)計(jì)</p><

12、p>  摘要:俄羅斯方塊游戲是一款風(fēng)靡全球的游戲,它的基本規(guī)則是旋轉(zhuǎn)、移動(dòng)、下落和擺放游戲自動(dòng)輸出的各種方塊,使之排列成完整的一行或多行并消除得分。本設(shè)計(jì)是用FPGA開發(fā)板實(shí)現(xiàn)俄羅斯方塊,具體是在顯示器上顯示10×20的點(diǎn)陣以及外圍方框。點(diǎn)陣表示方塊,方框表示方塊的活動(dòng)范圍。</p><p>  關(guān)鍵詞:俄羅斯方塊 VGA FPGA 串口通信</p><p>  

13、Abstract:Tetris is a popular game around the world,it’s basic rule is to rotate,move and place all sorts of boxes which the game automatically output,making them arranged in complete one or more lines to get the relevan

14、t score.The design introduces a Tetris game through FPGA programming ,the 10×20 dot matrix and external boxes are shown on the display.The dot matrix represent box,and the boxes represent the scope of activities of

15、 the box.</p><p>  Keywords:Tetris VGA FPGA Serial port</p><p><b>  前言:</b></p><p>  在現(xiàn)今電子信息高速發(fā)展的時(shí)代,電子游戲已經(jīng)深入人們的日常生活,成為老少皆宜的娛樂(lè)方式。但是游戲設(shè)計(jì)結(jié)合了日新月異的技術(shù),在一個(gè)產(chǎn)品中整合了復(fù)雜的設(shè)計(jì)、藝術(shù)

16、、聲音和軟件,所以并不是人人皆知。知道今天,在中國(guó)從事游戲設(shè)計(jì)的人任然很少,但是游戲行業(yè)的發(fā)展之快,遠(yuǎn)超家電、汽車等傳統(tǒng)行業(yè),也正因?yàn)槿绱?,游戲人才的教育、培養(yǎng)遠(yuǎn)落后于產(chǎn)業(yè)的發(fā)展。</p><p>  俄羅斯方塊是個(gè)老幼皆宜的小游戲,它實(shí)現(xiàn)由四塊正方形的色塊組成,然后存儲(chǔ)在一個(gè)數(shù)組的四個(gè)元素中,隨機(jī)產(chǎn)生不同的七種類型方塊,根據(jù)時(shí)鐘控制它在一定的時(shí)間不停的產(chǎn)生,用戶根據(jù)鍵盤的四個(gè)方向鍵控制翻轉(zhuǎn)、向左、向右和向下操作

17、。然后程序根據(jù)這七種方塊對(duì)疊成各種不同的模型。</p><p>  俄羅斯方塊游戲可以說(shuō)是隨計(jì)算機(jī)的發(fā)展而發(fā)展,并不斷推陳出新演變出各種類似游戲,深受廣大玩家喜愛(ài)。這個(gè)游戲有的簡(jiǎn)單,有的復(fù)雜,但其根本原理是一樣的,都是對(duì)運(yùn)動(dòng)的方塊組合,來(lái)訓(xùn)練玩家的反應(yīng)能力。談到游戲軟件,大多數(shù)人都認(rèn)為其神妙莫測(cè),高不莫及。而一般游戲軟件也確實(shí)具有很高的技術(shù)難度,隨著開發(fā)工具及軟件開發(fā)方法學(xué)的不斷發(fā)展,動(dòng)手開發(fā)游戲也不是十分困難的

18、。俄羅斯方塊游戲是一種古老而有趣的游戲,游戲軟件不計(jì)其數(shù),網(wǎng)上就有關(guān)于實(shí)現(xiàn)的復(fù)雜算法和設(shè)計(jì),其難度讓一般初學(xué)者望而卻步。本文利用FPGA硬件描述語(yǔ)言VHDL進(jìn)行游戲的開發(fā)和實(shí)現(xiàn)。</p><p><b>  1緒論</b></p><p><b>  1.1游戲的歷史</b></p><p>  游戲開發(fā)至今已經(jīng)有30多年

19、,在這個(gè)短暫的時(shí)期里,隨著硬件水平的提高,游戲開發(fā)新技術(shù)層出不窮,經(jīng)典游戲比比皆是。</p><p><b>  1.1.1追根溯源</b></p><p>  真正的電子游戲機(jī)產(chǎn)生于20世紀(jì)70年代。1971年,麻省理工學(xué)院的學(xué)生Nolan Bushnell設(shè)計(jì)了世界上的第一個(gè)業(yè)務(wù)用游戲機(jī)(俗名街機(jī)),叫做《電腦空間》。這臺(tái)游戲機(jī)用一臺(tái)黑白電視機(jī)作為顯示屏,用一個(gè)控

20、制柄作為操縱器,不過(guò)由于市場(chǎng)因素這款游戲以失敗告終。但是最后他在電子游戲的發(fā)展上取得了非凡的成就。</p><p>  上面介紹的是專用機(jī)游戲的歷史,而最早的電腦游戲可以追溯到1972年,一個(gè)叫Crowther的工程師用當(dāng)時(shí)最流行的主機(jī)――DEC公司的PDP-10編寫一段簡(jiǎn)單的FORTRAN程序。在這個(gè)程序里,Crowther設(shè)計(jì)了一張地圖,地圖上不規(guī)則的分布著陷阱,游戲者必須尋找路徑避開陷阱。這個(gè)程序被公認(rèn)為是

21、最早的電腦游戲程序。</p><p>  1989年,BroderBund公司的設(shè)計(jì)師喬丹.麥克納根據(jù)阿拉伯民族的古老傳說(shuō)《一千零一夜》在Apple平臺(tái)上制作了一部動(dòng)作冒險(xiǎn)相結(jié)合的電腦游戲――波斯王子。這個(gè)游戲獲得了第一作,它代表了當(dāng)時(shí)電腦技術(shù)的最高水平。</p><p>  1986年,任天堂公司發(fā)售了一款真正的游戲巨作――超級(jí)馬里奧。</p><p>  20世

22、紀(jì)80年代IBM PC兼容機(jī)的出現(xiàn)打破了Apple公司的壟斷地位。</p><p>  到了20世紀(jì)90年代,游戲業(yè)才真正成熟起來(lái),成為了一種產(chǎn)業(yè)。</p><p>  由于PC機(jī)價(jià)格非常低而且硬件速度越來(lái)越快,游戲逐漸成為人們生活中不可缺少的一部分。游戲產(chǎn)業(yè)也逐漸發(fā)展成熟。</p><p>  1.1.2圖形硬件的革命</p><p>  

23、圖形硬件的飛速發(fā)展是近些年來(lái)的事情,部分原因是來(lái)自工業(yè)方面的壓力,例如在軍事和醫(yī)療方面對(duì)于實(shí)時(shí)圖形的需求很強(qiáng)烈,而交互娛樂(lè)產(chǎn)業(yè)也極大的推動(dòng)了圖形硬件的發(fā)展。技術(shù)上的因素同樣也推動(dòng)著圖形硬件的發(fā)展,許多圖形算法可以很容易地表達(dá)為并行方式,這樣硬件執(zhí)行的效率變得很高。摩樂(lè)定律也起了作用,越來(lái)越多的晶體管可以集成到一塊單獨(dú)的芯片上。</p><p>  在所謂的GPU(圖形處理器)概念出現(xiàn)以前,特殊的圖形硬件只出現(xiàn)在諸

24、如SGI和E&S系統(tǒng)里面,這些硬件價(jià)格太昂貴,不過(guò)這些公司提供了第一代基于硬件的頂點(diǎn)變換和紋理映射的解決方案。</p><p>  1.2游戲的意義與內(nèi)涵</p><p>  游戲這個(gè)名稱一直就存在于每個(gè)人的日常生活中,如猜拳游戲、猜謎游戲、大地游戲、球類游戲等,林林總總,不勝枚舉,甚至于有些流行歌曲把人生也比喻為游戲,好比“一場(chǎng)游戲一場(chǎng)夢(mèng)” 。因此,游戲?qū)τ诂F(xiàn)代人的成長(zhǎng)歷程,絕對(duì)

25、是一個(gè)不可或缺的重要角色。</p><p>  1.3游戲的組成因素</p><p>  “游戲”,最簡(jiǎn)單的定義,就是一種供人們娛樂(lè)休閑的快樂(lè)元素。從更專業(yè)的角度形容, “游戲”是具有特定行為模式、規(guī)則條件、身心娛樂(lè)及輸贏的一種行為表現(xiàn)。這種行為表現(xiàn)具備以下4個(gè)要素。</p><p>  行為模式: “游戲”最簡(jiǎn)單的要素就是游戲有特定的流程模式,這種流程模式貫穿于整

26、個(gè)游戲的行為,用戶必須依照它的模式流程來(lái)執(zhí)行。倘若一種游戲沒(méi)有了特定的行為模式,那么就沒(méi)有執(zhí)行的行為;在沒(méi)有執(zhí)行的行為之后,這個(gè)游戲也玩不下去了。舉個(gè)例子來(lái)說(shuō),如果猜拳游戲沒(méi)有了剪刀、石頭、布等行為模式,那么這還能叫做“猜拳游戲” 嗎?所以不管游戲的流程有多么復(fù)雜還是多么簡(jiǎn)單,一定要有特定的行為模式。</p><p>  條件規(guī)則:當(dāng)游戲有了一定的行為模式后,接著就必須制定出一系列的條件規(guī)則。簡(jiǎn)單來(lái)說(shuō),這些游戲的

27、條件規(guī)則就是大家必須去遵守的游戲行為守則,只要是大家一致以為的游戲行為,在游戲中,玩家就必須遵守它,如果不遵守這種游戲行為,那么就失去了公平性。如同一種簡(jiǎn)單的球賽,打球的英文解釋可以用PLAY GAME來(lái)加以說(shuō)明,按照英文字面上的解釋,它就是執(zhí)行游戲的行為,而球賽必須有一定的條件規(guī)則,并且參與者都要必須去遵守它,不能遵守它就叫作“犯規(guī)”。所以不管是什么游戲,它都會(huì)具備一組規(guī)則條件,在游戲進(jìn)行的時(shí)候才會(huì)有足夠的公平性。</p>

28、<p>  一般而言,游戲又可以分為動(dòng)態(tài)和靜態(tài)兩種形態(tài)。動(dòng)態(tài)的游戲必須配合肢體動(dòng)作,如猜拳游戲;而靜態(tài)游戲則是較偏向思考的行為,如同紙上游戲。然而不管是動(dòng)態(tài)或是靜態(tài)游戲,只要具備上述4項(xiàng)組成要素,都可以將它稱為“游戲”。</p><p><b>  2游戲的可行性分析</b></p><p><b>  2.1設(shè)計(jì)目的</b><

29、;/p><p>  綜合運(yùn)用在校期間所學(xué)理論知識(shí)和技能,設(shè)計(jì)開發(fā)俄羅斯方塊,使自己熟悉應(yīng)用系統(tǒng)的開發(fā)過(guò)程,培養(yǎng)獨(dú)立思考能力,檢驗(yàn)學(xué)習(xí)效果和動(dòng)手能力,提高工程實(shí)踐能力,為將來(lái)實(shí)際工作打下堅(jiān)實(shí)的基礎(chǔ)。</p><p>  2.2可行性研究前提</p><p>  基本需求:系統(tǒng)開發(fā)的總體任務(wù)是實(shí)現(xiàn)游戲的可操作性、美觀性、及時(shí)性。</p><p>  

30、開發(fā)過(guò)程遵循軟件工程規(guī)范,可采用結(jié)構(gòu)化或面向?qū)ο蠓治鲈O(shè)計(jì)方法。主要實(shí)現(xiàn)FPGA的VHDL程序開發(fā),對(duì)游戲中的圖形圖像進(jìn)行鍵盤控制。游戲者可以通過(guò)上下左右鍵來(lái)對(duì)游戲進(jìn)行操作。</p><p>  主要開發(fā)目標(biāo):采用結(jié)構(gòu)化設(shè)計(jì)方法,開發(fā)出一個(gè)可操作性、美觀性、及時(shí)性的游戲,實(shí)現(xiàn)FPGA的VHDL程序開發(fā),并通過(guò)此次軟件開發(fā)過(guò)程全面提高自身的綜合素質(zhì)。</p><p>  評(píng)價(jià)尺度:由于本軟件是

31、一個(gè)初級(jí)產(chǎn)品,對(duì)其要求不是太苛刻,所以能夠達(dá)到俄羅斯游戲的一般功能即可。</p><p><b>  2.3可行性分析</b></p><p>  管理可行性: 該游戲軟件為首次開發(fā),目的只為提高工作自身素質(zhì)和檢查自學(xué)VHDL的效果,用 QuartusⅡ11.0軟件編寫,所有功能均根據(jù)基本需求所做。便于管理,所以在這方面是可以實(shí)現(xiàn)的。</p><p

32、>  技術(shù)可行性:可用與本游戲的編程語(yǔ)言有VB,Java,Delphi,VHDL等,考慮到用于編寫程序的困難度,和對(duì)語(yǔ)言的了解程度,選擇硬件描述語(yǔ)言VHDL作為編程語(yǔ)言。需要對(duì)變量定義、變量初始化、界面初始化、游戲初始化、然后進(jìn)入游戲、處理游戲過(guò)程中的各種操作。</p><p><b>  2.4結(jié)論意見(jiàn)</b></p><p>  綜上所述,本游戲軟件的技術(shù)成

33、熟、完備。各方面均無(wú)重大問(wèn)題,因此本游戲軟件可開始著手編寫。</p><p><b>  3需求分析</b></p><p><b>  3.1引言</b></p><p>  對(duì)軟件需求完全理解對(duì)于軟件開發(fā)工作的成功是至關(guān)重要的,需求說(shuō)明的任務(wù)是發(fā)現(xiàn)、規(guī)范的過(guò)程,有益于提高軟件開發(fā)過(guò)程中的能見(jiàn)度,便于對(duì)軟件開發(fā)過(guò)程中的控

34、制與管理,便于采用工程方法開發(fā)軟件,提高軟件的質(zhì)量,便于開發(fā)人員、維護(hù)人員、管理人員之間的交流、協(xié)作,并作為工作成果的原始依據(jù),并且在向潛在用戶傳遞軟件功能、性能需求,使其能夠判斷該軟件是否與自己的需求相關(guān)。</p><p><b>  3.2游戲需求</b></p><p>  隨機(jī)給出不同的形狀(田字形、長(zhǎng)條形、Z字形、反Z形、7字形、反7形、T字型)下落填充給定

35、的區(qū)域,若填滿一條便消掉。游戲功能要求如下:</p><p>  游戲界面需求:簡(jiǎn)單良好的用戶界面,在顯示頻上顯示游戲方框區(qū)間,游戲界面,考慮到自己的能力有限,目前只打算完成簡(jiǎn)單的游戲試玩。</p><p>  游戲形狀(方塊)需求:良好的方塊形狀設(shè)計(jì),繪制七種常見(jiàn)的基本圖形(長(zhǎng)條形、Z字形、反Z形、田字形、7字形、反7形、T字型),各個(gè)方塊要能實(shí)現(xiàn)它的變形,可設(shè)為順時(shí)針或逆時(shí)針變形,一般

36、為順指針。</p><p>  鍵盤處理事件:方塊下落時(shí),可通過(guò)鍵盤方向鍵(J、K、L鍵)對(duì)該方塊進(jìn)行旋轉(zhuǎn)、向左、向右移動(dòng)。</p><p>  顯示需求:當(dāng)不同的方塊填滿一行時(shí)可以消行,剩余方塊向下移動(dòng)。</p><p><b>  4設(shè)計(jì)分析</b></p><p>  4.1系統(tǒng)方案設(shè)計(jì)支持</p>

37、<p><b>  4.1.1開發(fā)環(huán)境</b></p><p>  本次設(shè)計(jì)使用的軟件是Altera公司生產(chǎn)的QuartusⅡ軟件。它是Altera公司的綜合性PLD開發(fā)軟件,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。</p><p><b>  4.1.2編程語(yǔ)言</b></p><p>  本次設(shè)計(jì)使

38、用的編程語(yǔ)言是硬件編程語(yǔ)言VHDL,主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就

39、可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。</p><p><b>  4.1.3硬件平臺(tái)</b></p><p>  本次設(shè)計(jì)使用的核心器件是Altera Cyclone Ⅱ EP2C35F484C8</p><p><b>  4.2系統(tǒng)實(shí)現(xiàn)框圖</b></p>&

40、lt;p>  本游戲有通過(guò)FPGA實(shí)現(xiàn)的,主要通過(guò)鍵盤送入數(shù)據(jù),通過(guò)PS/2接口送入到FPGA中,然后通過(guò)FPGA程序控制,通過(guò)VGA接口輸出到VGA顯示頻上,所以我的設(shè)計(jì)方案如圖4.2.1所示:</p><p>  圖4.2.1設(shè)計(jì)框圖</p><p>  設(shè)計(jì)方案介紹:由于VGA是有640× 480的顯示矩陣顯示,所以我們將俄羅斯方塊分成20×10的矩陣,每一

41、個(gè)矩陣代表一個(gè)方塊,每一個(gè)方塊一起顯示,如圖4.2.2所示:</p><p>  圖4.2.2方塊顯示圖</p><p>  這樣當(dāng)有一個(gè)地方有方塊時(shí),就會(huì)有將矩陣對(duì)應(yīng)的地方顯示,其他沒(méi)有方塊的地方就不顯示。</p><p><b>  4.3模塊實(shí)現(xiàn)</b></p><p>  4.3.1實(shí)驗(yàn)電路圖</p>

42、<p>  圖4.3.1實(shí)驗(yàn)電路圖</p><p>  上圖給出了系統(tǒng)的連接組成關(guān)系:</p><p>  PS/2模塊:鍵盤接收模塊,讀取鍵盤發(fā)送的掃描碼</p><p>  maichong模塊:分頻得到1S電子時(shí)鐘,控制游戲時(shí)間</p><p>  Jiankong模塊:游戲控制模塊,程序主控單元,通過(guò)狀態(tài)機(jī)控制</

43、p><p>  rand模塊:隨機(jī)產(chǎn)生0-14共15個(gè)隨機(jī)整數(shù),分別代表15種方塊的形狀</p><p>  fun1模塊:產(chǎn)生VS、HS兩路垂直掃描信號(hào)和水平掃描信號(hào)</p><p>  4.3.2隨機(jī)產(chǎn)生模塊</p><p>  隨機(jī)數(shù)模塊用于產(chǎn)生0-14共15個(gè)隨機(jī)整數(shù),分別代表15種方塊的形狀。它的產(chǎn)生機(jī)理是參考了信道編碼中的線性反饋移位

44、寄存器(LFSR),所產(chǎn)生的其實(shí)是一列偽隨機(jī)數(shù)。具體原理如下:</p><p>  在游戲里,我們需要的是一個(gè)更大的隨機(jī)數(shù),這次我們用了一個(gè)16bit的偽隨機(jī)數(shù)。通過(guò)查找資料,我們找到不同bit的本原多項(xiàng)式如圖4.3.4所示:</p><p>  圖4.3.4偽隨機(jī)序列圖</p><p>  根據(jù)16bit的本原多項(xiàng)式可以畫出它的電路原理圖4.3.5如下:</

45、p><p>  圖4.3.5 16bit的電路原理圖</p><p>  之后再將產(chǎn)生的16bit二進(jìn)制數(shù)化成十進(jìn)制,并對(duì)15取余,則可以得到一列0-14的偽隨機(jī)數(shù)列。</p><p>  圖4.3.6偽隨機(jī)序列圖形生產(chǎn)圖</p><p>  每次執(zhí)行首先為隨機(jī)數(shù)產(chǎn)生一個(gè)不同的初值</p><p><b>  隨

46、機(jī)選取一個(gè)圖形</b></p><p>  當(dāng)前圖形在4×4網(wǎng)格中的位置信息</p><p><b>  改變圖形形狀</b></p><p>  定義一個(gè)4x4方陣,共16個(gè)小格。用“0”和“1”來(lái)表示每個(gè)方格是繪制還是空白,由此可以組合出多種圖形,如圖所示:</p><p>  圖4.3.7隨機(jī)

47、序列生產(chǎn)的7種方塊圖形</p><p>  4.3.3 PS/2鍵控模塊</p><p>  鍵盤作為嵌入式系統(tǒng)的一種最常用人機(jī)接口設(shè)備, 在嵌入式系統(tǒng)中有著相當(dāng)廣泛的應(yīng)用。但開發(fā)者一般均采用自行設(shè)計(jì)的簡(jiǎn)易矩陣鍵盤, 這類鍵盤僅僅是按行、列排列起來(lái)的矩陣開關(guān), 往往需要單獨(dú)設(shè)計(jì)并制作, 通用性不強(qiáng)。當(dāng)需要較多的按鍵時(shí), 則會(huì)占用較多的I/O 端口, 在軟件上則要進(jìn)行上電復(fù)位按鍵掃描及通信處

48、理, 而且還要加上按鍵的去抖動(dòng)處理, 增大了系統(tǒng)的軟硬件開銷。而PS/2 鍵盤, 內(nèi)嵌自動(dòng)去除按鍵抖動(dòng)的設(shè)計(jì),自動(dòng)地識(shí)別鍵的按下與釋放, 軟硬件可發(fā)簡(jiǎn)便, 價(jià)格便宜, 穩(wěn)定可靠, 將PS/2 鍵盤作為嵌入式系統(tǒng)的輸入設(shè)備已經(jīng)成為可行的方案。而目前關(guān)于PS/2 鍵盤控制的應(yīng)用大部分采用單片機(jī)控制, 與單片機(jī)相比, FPGA 具有比單片機(jī)更加靈活, 集成度更高,容易移植等特點(diǎn)。</p><p><b>  

49、PS/2物理特性</b></p><p>  PS/2 設(shè)備接口用于許多現(xiàn)代的鼠標(biāo)和鍵盤, 它最初由IBM開發(fā), 最常見(jiàn)的為6 腳mini-DIN, 其引腳結(jié)構(gòu)和外形如圖4.3.8所示。</p><p>  圖4.3.8 PS/2接口圖</p><p>  PS/2 設(shè)備有主從之分, 現(xiàn)在廣泛使用的PS/2 鍵盤鼠標(biāo)均工作在從設(shè)備方式下。PS/2 接口的

50、時(shí)鐘與數(shù)據(jù)線都是集電極開路結(jié)構(gòu), 必須外接上拉電阻, 一般上拉電阻設(shè)置在主設(shè)備中, 主從設(shè)備之間的數(shù)據(jù)通信采用雙向同步方式傳輸, 時(shí)鐘信號(hào)一般由從設(shè)備產(chǎn)生。</p><p><b>  2、數(shù)據(jù)包的結(jié)構(gòu)</b></p><p>  鍵盤的狀態(tài)每改變一次, 鍵盤至少會(huì)發(fā)出三個(gè)字節(jié)的數(shù)據(jù)包, 在有鍵按下時(shí)會(huì)向主機(jī)發(fā)送該鍵的通碼(Make Code) ,當(dāng)鍵釋放時(shí)發(fā)送斷碼(

51、Break Code) 。例如: 鍵“A”的通碼為0x1C,因此當(dāng)要傳送鍵“A”時(shí), 鍵盤發(fā)送的數(shù)據(jù)包的代碼是: 0x1C, 0xF0, 0x1C。</p><p><b>  接口的時(shí)序邏輯</b></p><p>  PS/2 協(xié)議是一種雙向半雙工串行通信協(xié)議, 時(shí)鐘信號(hào)由鍵盤產(chǎn)生, 最大時(shí)鐘頻率為33kHz,推薦頻率在15kHz。通信兩端通過(guò)Clock 同步,

52、通過(guò)Data 交換數(shù)據(jù), 任何一方如果想禁止另一方通信時(shí), 只需將Clock 拉到低電平。其傳輸時(shí)序根據(jù)傳輸?shù)姆较虿煌譃榘l(fā)送和接收兩個(gè)不同時(shí)序邏輯, 圖4.3.9是從鍵盤到主機(jī)的時(shí)序圖。</p><p>  圖4.3.9鍵盤到主機(jī)的時(shí)序圖</p><p>  其中: Start: 起始位, 總為‘0’( 低電平)</p><p>  Data0~Data7: 8

53、位數(shù)據(jù)位( 低位在前, 高位在后)</p><p>  Parity: 奇偶校驗(yàn)位( 為奇校驗(yàn))</p><p>  Stop: 停止位, 總為‘1’( 高電平)</p><p>  當(dāng)鍵盤要向主機(jī)通信時(shí), 鍵盤總是首先檢查時(shí)鐘線是否為高電平, 如果不是則表明是主機(jī)正在通信, 必須緩沖要發(fā)送的數(shù)據(jù)直到重新獲得總線的控制權(quán)( 鍵盤有16 個(gè)字節(jié)的緩沖區(qū)) , 即等到時(shí)

54、鐘線是高電平才能發(fā)送數(shù)據(jù)。而且從鍵盤到主機(jī)的數(shù)據(jù)只能在時(shí)鐘的下降沿時(shí)才能被讀取。</p><p>  當(dāng)主機(jī)到鍵盤進(jìn)行通信時(shí), 主機(jī)會(huì)首先把時(shí)鐘線和數(shù)據(jù)線設(shè)置為“請(qǐng)求發(fā)送”狀態(tài)。具體方式為: 首先下拉時(shí)鐘線至少100μs 來(lái)抑制通信, 然后下拉數(shù)據(jù)線“請(qǐng)求發(fā)送”, 最后釋放時(shí)鐘。在此過(guò)程中, 鍵盤在不超過(guò)10μs 的間隔內(nèi)就會(huì)檢查這個(gè)狀態(tài)。當(dāng)鍵盤檢查到這個(gè)狀態(tài)時(shí), 就開始產(chǎn)生時(shí)鐘。和鍵盤發(fā)送的數(shù)據(jù)讀取方式不一樣,

55、 主機(jī)發(fā)送的數(shù)據(jù)必須在時(shí)鐘的上升沿讀取。</p><p><b>  程序設(shè)計(jì)過(guò)程</b></p><p><b>  0 </b></p><p><b>  1</b></p><p><b>  0</b></p><p

56、><b>  1</b></p><p>  圖4.3.10 PS/2程序設(shè)計(jì)過(guò)程</p><p>  4.3.4 VGA顯示模塊</p><p>  當(dāng)前顯示器越來(lái)越廉價(jià),如果用顯示器作為嵌入式設(shè)備的顯示終端,不管從顯示效果和成本上,都比常用的單色液晶、低分辨率彩色液晶等都有優(yōu)勢(shì)。VGA顯示器因?yàn)槠漭敵鲂畔⒘看螅敵鲂问蕉鄻拥忍攸c(diǎn)已經(jīng)成

57、為現(xiàn)在大多數(shù)設(shè)計(jì)的常用輸出設(shè)備,F(xiàn)PGA以其結(jié)構(gòu)的優(yōu)勢(shì)可以使用很少的資源產(chǎn)生VGA的各種控制信號(hào)。因此我們采用基于FPGA的VGA顯示系統(tǒng),實(shí)現(xiàn)真彩色顯示。</p><p><b>  VGA顯示概述</b></p><p>  CRT顯示器作為一種通用型顯示設(shè)備,如今已廣泛應(yīng)用于我們的工作和生活中。與嵌入式系統(tǒng)中常用的顯示器件相比,它具有顯示面積大、色彩豐富、承載信

58、息量大、接口簡(jiǎn)單等優(yōu)點(diǎn),如果將其應(yīng)用到嵌入式系統(tǒng)中,可以顯著提升產(chǎn)品的視覺(jué)效果。如今隨著液晶顯示器的出現(xiàn),越來(lái)越多的數(shù)字產(chǎn)品開始使用液晶作為顯示終端。但基于VGA標(biāo)準(zhǔn)的顯示器仍是目前普及率最高的顯示器。若驅(qū)動(dòng)此類顯示器,需要很高的掃面頻率,以及極短的處理時(shí)間,正是由于這些特點(diǎn),所以可以用FPGA來(lái)實(shí)現(xiàn)對(duì)VGA顯示器的驅(qū)動(dòng)。本次專業(yè)課程設(shè)計(jì)即選用FPGA來(lái)實(shí)現(xiàn)VGA的顯示。</p><p>  隨著FPGA的不斷發(fā)

59、展及其價(jià)格的不斷下降,F(xiàn)PGA的可編程邏輯設(shè)計(jì)的應(yīng)用優(yōu)勢(shì)逐漸顯現(xiàn)出來(lái)?,F(xiàn)在,越來(lái)越多的嵌入式系統(tǒng)選擇了基于FPGA的設(shè)計(jì)方案。在基于FPGA的大規(guī)模嵌入式系統(tǒng)設(shè)計(jì)中,為實(shí)現(xiàn)VGA顯示功能,既可以使用專用的VGA接口芯片如SPX7111A等,也可以設(shè)計(jì)和使用基于FPGA的VGA接口軟核。雖然使用VGA專用芯片具有更穩(wěn)定的VGA時(shí)序和更多的顯示模式可供選擇等優(yōu)點(diǎn),但設(shè)計(jì)和使用VGA接口軟核更具有以下優(yōu)勢(shì):(1)使用芯片更少,節(jié)省板上資源,減

60、小布線難度;(2)當(dāng)進(jìn)行高速數(shù)據(jù)傳輸時(shí),具有更小的高頻噪聲干擾;(3) FPGA(現(xiàn)場(chǎng)可編程門陣列)設(shè)計(jì)VGA接口可以將要顯示的數(shù)據(jù)直接送到顯示器,節(jié)省了計(jì)算機(jī)的處理過(guò)程,加快了數(shù)據(jù)的處理速度,節(jié)約了硬件成本。</p><p><b>  VGA顯示接口</b></p><p>  VGA 接口負(fù)責(zé)向顯示器輸出相應(yīng)的顯示信號(hào)。VGA 接口是一種D型接口,上面共有 15

61、 個(gè)針孔,非對(duì)稱地分成 3 排,每排 5 個(gè),其排列及接口定義如圖 4.3.11 所示。</p><p>  圖4.3.11 VGA接口圖</p><p>  VGA接口為顯示器提供兩類信號(hào), 一類是數(shù)據(jù)信號(hào), 一類是控制信號(hào)。數(shù)據(jù)信號(hào)包括紅(red)、綠(green)、藍(lán)(blue)三種信號(hào), 簡(jiǎn)稱RGB信號(hào), 控制信號(hào)包括水平同步信號(hào)和垂直同步信號(hào)。如果能從 FPGA 發(fā)出這 5 個(gè)

62、信號(hào)到 VGA 接口,就可以實(shí)現(xiàn)對(duì) VGA 的控制。輸出不同分辨率時(shí),水平同步信號(hào)和垂直同步信號(hào)的頻率也不同。圖4.3.12是在部分分辨率條件下使用的相應(yīng)頻率</p><p>  圖4.3.12 VGA部分分辨率條件下使用的相應(yīng)頻率</p><p><b>  VGA顯示原理</b></p><p>  VGA顯示圖像原理:常見(jiàn)的彩色顯示器,一

63、般由CRT(陰極射線管)構(gòu)成。彩色是有R,G.B(紅:RED,綠:GREEN,藍(lán):BLUE)三基色組成。顯示是用逐行掃描的方式解決,陰極射線槍發(fā)出電子束打在涂有銀光粉的熒光屏幕上,產(chǎn)生R,G,B三基色,合成一個(gè)彩色像素。掃描從屏幕的左上方開始,從左到右,從上到下,進(jìn)行掃描,每掃完一行,電子束回到屏幕的左邊下一行的起始位置,在這期間,CRT對(duì)電子束進(jìn)行消隱,每行結(jié)束時(shí),用行同步信號(hào)進(jìn)行同步,掃描完所有行,用場(chǎng)同步信號(hào)進(jìn)行場(chǎng)同步,并使掃描回

64、到屏幕的左上方,同時(shí)進(jìn)行場(chǎng)消隱,預(yù)備下一場(chǎng)的掃描。</p><p>  圖4.3.13行場(chǎng)掃描時(shí)序圖</p><p>  圖4.3.14行掃描時(shí)序要求(單位:像素)</p><p><b>  VGA硬件實(shí)現(xiàn)</b></p><p>  VGA 的圖形模式分為 3 類:CGA、EGA 兼容的圖形模式;標(biāo)準(zhǔn)的 VGA 圖形

65、模式;VGA 擴(kuò)展圖形模式。后兩種圖形模式統(tǒng)稱為 VGA 圖形模式。本研究基于標(biāo)準(zhǔn) VGA模式來(lái)實(shí)現(xiàn)。常見(jiàn)的彩色顯示器一般由 CRT(陰極射線管)構(gòu)成,每一個(gè)像素的色彩由紅、綠、藍(lán)三基色構(gòu)成。顯示時(shí)采用的是逐行掃描的方式。 VGA 顯示模塊產(chǎn)生的由水平同步信號(hào)和垂直同步信號(hào)控制陰極射線管中的電子槍產(chǎn)生電子束,轟擊涂有熒光粉的屏幕,產(chǎn)生紅、綠、藍(lán)三基色,于顯示屏上合成一個(gè)彩色像素點(diǎn)。圖 4.3.16表示的是 VGA 顯示模塊與 CRT 顯

66、示器的控制框圖。</p><p>  圖4.3.16 VGA 顯示模塊與 CRT 顯示器的控制框圖</p><p>  電子束掃描一幅屏幕圖像上的各個(gè)點(diǎn)的過(guò)程稱為屏幕掃描。現(xiàn)在顯示器都是通過(guò)光柵掃描方式來(lái)進(jìn)行屏幕掃描。在光柵掃描方式下,電子束按照固定的路徑掃過(guò)整個(gè)屏幕,在掃描過(guò)程中通過(guò)電子束的通斷強(qiáng)弱來(lái)控制電子束所經(jīng)過(guò)的每個(gè)點(diǎn)是否顯示或顯示的顏色。 電子槍在 VGA 顯示模塊產(chǎn)生的行同步

67、、場(chǎng)同步等控制信號(hào)的作用下進(jìn)行包括水平掃描、水平回掃、垂直掃描、垂直回掃等過(guò)程。光柵掃描的路徑通常為:從上到下掃過(guò)每一行,在每一行中從左到右地進(jìn)行掃描。其過(guò)程如下:電子束從屏幕左上角開始向右掃,當(dāng)?shù)竭_(dá)屏幕的右邊緣時(shí),電子束關(guān)閉(水平消隱),并快速返回屏幕左邊緣(水平回掃),然后在下一條掃描線上開始新的一次水平掃描。一旦所有的水平掃描均告完成,電子束在屏幕的右下角結(jié)束并關(guān)閉(垂直消隱),然后迅速返回到屏幕的左上角(垂直回掃),開始下一次光

68、柵掃描。</p><p>  圖4.3.17 VGA與FPGA引腳連接</p><p><b>  VGA算法流程圖</b></p><p>  圖4.3.18 VGA設(shè)計(jì)流程</p><p>  在屏幕上顯示圖案則在需要圖案顯示的行和列設(shè)置顯示顏色,就類似點(diǎn)陣和led液晶屏的顯示操作。我們將要顯示的圖案分模塊,每個(gè)模

69、塊并行運(yùn)行,最后用或的方式將所有要顯示的模塊圖案一同并起來(lái)在屏幕上顯示。(具體見(jiàn)程序)</p><p><b>  4.3.5分頻模塊</b></p><p>  在數(shù)字電路中,常需要對(duì)較高頻率的時(shí)鐘進(jìn)行分頻操作,得到較低信號(hào)的是時(shí)鐘頻率。我們知道,此次試驗(yàn)使用的FPGA是頻率為50M的晶振,那么需要分頻得到1S的電子時(shí)鐘,控制游戲運(yùn)行時(shí)間</p>&l

70、t;p><b>  實(shí)現(xiàn)代碼如下所示:</b></p><p>  if reset='0' then</p><p>  count<=(others=>'0');</p><p>  elsif rising_edge (clk) then</p><p>  if

71、count=25000000 then</p><p>  count<=(others=>'0');</p><p><b>  else </b></p><p>  count<=count+1;</p><p><b>  end if;</b></p

72、><p>  end process;</p><p>  time_1s<=count(24);</p><p><b>  4.3.6鍵控模塊</b></p><p>  鍵控模塊是俄羅斯方塊游戲的核心版塊,它主要控制游戲的左、右、旋轉(zhuǎn)按鍵的實(shí)現(xiàn)。</p><p><b>  5仿

73、真分析</b></p><p>  5.1隨機(jī)數(shù)產(chǎn)生序列仿真</p><p>  由于PS/2模塊仿真的意義不大,而且不能很好的體現(xiàn)程序的正確性,因此我們的仿真分析主要在于VGA顯示模塊,而其余的功能驗(yàn)證我們通過(guò)硬件檢驗(yàn),更具有現(xiàn)實(shí)意義并且直觀可行。</p><p>  圖5.1.1從隨機(jī)數(shù)生成器中產(chǎn)出了0~15的隨機(jī)數(shù)</p><p

74、>  5.2 VGA顯示模塊仿真波形</p><p>  圖5.2.1屏幕上方的白色橫條顯示仿真</p><p>  以上截圖波形為顯示屏幕上方的的白色橫條,根據(jù)程序可知,應(yīng)該有11行整行均顯示白色橫條,也就是RGB=111。從以上波形可以看出,11行均顯示正確。</p><p>  圖5.2.2屏幕上方的白色橫條顯示仿真</p><p&g

75、t;  5.3實(shí)現(xiàn)運(yùn)行結(jié)果仿真</p><p><b>  隨機(jī)產(chǎn)生</b></p><p>  5.3.1方塊隨機(jī)產(chǎn)生結(jié)果圖</p><p><b>  向下掉落</b></p><p>  5.3.2方塊向下掉落圖</p><p><b>  向右移動(dòng)<

76、/b></p><p>  5.3.3方塊向右移動(dòng)圖</p><p><b>  向左移動(dòng)</b></p><p>  5.3.4方塊向左圖</p><p><b>  消行</b></p><p>  5.3.5整行滿消除</p><p>&l

77、t;b>  6總結(jié)與展望</b></p><p>  6.1本文完成的主要工作</p><p>  本次設(shè)計(jì)基于FPGA采用硬件描述語(yǔ)言實(shí)現(xiàn)俄羅斯方塊游戲,涉及到非常復(fù)雜的時(shí)序控制、程序控制,以及VGA硬件接口,PS2協(xié)議等,對(duì)通信協(xié)議、程序設(shè)計(jì)、復(fù)雜數(shù)字系統(tǒng)設(shè)計(jì)有全面的檢驗(yàn)與提升。</p><p>  此次設(shè)計(jì)已經(jīng)實(shí)現(xiàn)了俄羅斯方塊游戲的簡(jiǎn)單操作及

78、用戶界面,能實(shí)現(xiàn)游戲的顯示,方塊的隨機(jī)出現(xiàn),下落及左右移動(dòng),圖形旋轉(zhuǎn)。</p><p>  本文對(duì)俄羅斯方塊游戲的歷史追溯和可行性分析及用戶需求等等方面進(jìn)行了全面的敘說(shuō),簡(jiǎn)單的分析及介紹對(duì)俄羅斯方塊游戲的設(shè)計(jì)起了一定的現(xiàn)實(shí)意義,使得此次設(shè)計(jì)更加具有可操作性。</p><p>  有了這些全面的分析,我確立了自己的設(shè)計(jì)思路,完成了游戲的整個(gè)實(shí)驗(yàn)電路圖,各個(gè)模塊功能的實(shí)現(xiàn),通過(guò)硬件描述語(yǔ)言VH

79、DL來(lái)完成此次設(shè)計(jì)。</p><p>  本文我主要介紹了我的設(shè)計(jì)思想,各個(gè)模塊的實(shí)驗(yàn)原理。其中重點(diǎn)介紹了PS/2鍵盤控制、VGA視頻顯示這兩個(gè)模塊,此次設(shè)計(jì)遇到的難題也是在此。PS/2協(xié)議是一種雙向半雙工串行通信協(xié)議,設(shè)計(jì)復(fù)雜,但在嵌入式系統(tǒng)中有非常廣泛的應(yīng)用。VGA視頻顯示模塊也是此次設(shè)計(jì)較重要的一部分,占據(jù)的比例較大,也是整個(gè)設(shè)計(jì)的靈魂,在本文中也有較大的篇幅對(duì)其原理及其設(shè)計(jì)思路進(jìn)行了全面而又詳細(xì)的介紹。&

80、lt;/p><p><b>  6.2未來(lái)研究展望</b></p><p>  此次設(shè)計(jì)的俄羅斯方塊游戲只是實(shí)現(xiàn)了簡(jiǎn)單的用戶操作界面和基本的游戲規(guī)則,鑒于現(xiàn)階段資歷尚淺,對(duì)VHDL的掌握有限,很多應(yīng)用沒(méi)有在這次設(shè)計(jì)中加入,所以整個(gè)設(shè)計(jì)稍顯欠缺,存在很多不足與有待改進(jìn)的地方。</p><p>  如果時(shí)間允許,我希望在不遠(yuǎn)的將來(lái),能對(duì)此次設(shè)計(jì)進(jìn)行全面

81、的改進(jìn),完善游戲的用戶體驗(yàn)。同時(shí)計(jì)劃能通過(guò)更進(jìn)一步對(duì)硬件描述語(yǔ)言VHDL的學(xué)習(xí)來(lái)提升本身的編程能力。</p><p>  俄羅斯方塊游戲產(chǎn)生較早,設(shè)計(jì)簡(jiǎn)單,各方面的技術(shù)已經(jīng)成熟,但是游戲方式依然保守,從最初的無(wú)人不玩到而今的鮮有問(wèn)津,這種局面的形成很大程度上取決于游戲模式單一,創(chuàng)新不足。傳統(tǒng)的俄羅斯方塊游戲多在掌機(jī)或手機(jī)上,只能一個(gè)人游戲,游戲缺少玩家之間的交互,不免單挑乏味。如今用戶熱衷的英雄聯(lián)盟、地下城與勇士

82、等等游戲,符合時(shí)下年輕人的娛樂(lè)性,多人分組對(duì)戰(zhàn),具有更大的挑戰(zhàn)性和吸引力,從而成功地?fù)碛写笈劢z。鑒于此,俄羅斯方塊游戲應(yīng)該設(shè)計(jì)多人對(duì)戰(zhàn)模式,而多人分組對(duì)戰(zhàn)俄羅斯方塊游戲在原來(lái)的基礎(chǔ)上加入了網(wǎng)絡(luò)互聯(lián),可以支持多人分組對(duì)戰(zhàn)。增加了游戲玩家的互動(dòng)性,這是一種全新的設(shè)計(jì)理念。因此也會(huì)使程序的設(shè)計(jì)難度大大增加。但從各方面來(lái)看開發(fā)一款別開生面的俄羅斯方塊游戲是一個(gè)具有前景的選擇,也將是一個(gè)新旅程的開始。</p><p>&

83、lt;b>  致謝</b></p><p>  大學(xué)四年,畢業(yè)設(shè)計(jì)的完結(jié)也意味著我四年學(xué)習(xí)生涯的結(jié)束,有很多的不舍和感觸。首先,從心底感謝我的指導(dǎo)教師,沒(méi)有他的悉心指導(dǎo),我想,這次設(shè)計(jì)可能真的完不成。其次,我要感謝我的同學(xué)和學(xué)弟,他們的幫助了我莫大的支持和鼓勵(lì),在這次順利完成畢業(yè)設(shè)計(jì)的旅程中起了至關(guān)重要的作用。一起走過(guò)的四年,有陪伴,有成長(zhǎng),一切的一切,因?yàn)橛斜舜说臄y手,四年的生活變得豐富多彩、

84、意義非凡。</p><p>  真的很幸運(yùn),在我大學(xué)四年里遇到唐老師這樣敬業(yè)又負(fù)責(zé)的老師,從之前的代課老師到現(xiàn)在的畢業(yè)設(shè)計(jì)指導(dǎo)老師,唐老師一如既往地兢兢業(yè)業(yè),從不曾懈怠,做事一直有規(guī)劃,有原則,我們的畢業(yè)設(shè)計(jì)進(jìn)度在老師的督促下,一直能順利完成學(xué)校每次下達(dá)的任務(wù),這方面給了我很大的啟發(fā)。唐老師嚴(yán)謹(jǐn)治學(xué)的態(tài)度也一直令我膜拜不已,在我心中留下了深刻的印象,在以后的人生路上,我要學(xué)習(xí)唐老師的求實(shí)精神。在畢業(yè)設(shè)計(jì)實(shí)驗(yàn)的過(guò)程

85、中,因?yàn)槲业牟簧鞑僮?,把學(xué)校實(shí)驗(yàn)板給燒壞了,當(dāng)我忐忑不安地等著一頓批評(píng)的時(shí)候,唐老師并沒(méi)有指責(zé)我,反而是安慰,那次經(jīng)歷,讓我學(xué)會(huì)了對(duì)別人寬容反而是最好的教育方式,一味地批評(píng)責(zé)罵只會(huì)適得其反。</p><p>  在此,感謝我的父母對(duì)我的支持,沒(méi)有他們的支持,我走不到今天。同樣感謝我的同學(xué)和朋友,四年的陪伴,讓我感受到獨(dú)處異鄉(xiāng)也是溫暖無(wú)比的。沒(méi)有他們,我走不過(guò)這一路的風(fēng)風(fēng)雨雨,跌跌撞撞,他們的每一次幫助,每一次支持

86、和理解都讓我倍感欣慰,也堅(jiān)定了我一直往前走的信念。我愛(ài)他們,就像愛(ài)祖國(guó),愛(ài)河流,愛(ài)山川。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]楊軍,面向SOPC的FPGA設(shè)計(jì)與應(yīng)用[M]科學(xué)出版社,2012,3</p><p>  [2]郝建國(guó),基于NisoⅡ內(nèi)核的FPGA電路系統(tǒng)設(shè)計(jì)[M]電子工業(yè)出版社,2010,4<

87、;/p><p>  [3]王剛,基于FPGA的SOPC嵌入式系統(tǒng)設(shè)計(jì)與典型實(shí)例[M]電子工業(yè)出版社,2009,1</p><p>  [4]劉延飛,基于Altera FPGA/CPLD的電子系統(tǒng)設(shè)計(jì)及工程實(shí)踐[M]人民郵電出版社,2009年09月</p><p>  [5](澳)阿申登著,夏宇聞等譯,Verilog嵌入式數(shù)字系統(tǒng)設(shè)計(jì)教程,北京航空航天大學(xué)出版社,2009

88、年07月</p><p>  [6]朱恭生,胡冬琴,EDA工程實(shí)踐入門叢書FPGA/CPLD系統(tǒng)設(shè)計(jì)與應(yīng)用案例,中國(guó)電力出版社,2009年07月</p><p>  [8]劉福奇,F(xiàn)PGA嵌入式項(xiàng)目開發(fā)實(shí)戰(zhàn),電子工業(yè)出版社,2009年01月</p><p>  [9]詹仙寧,VHDL開發(fā)精解與實(shí)例剖析,電子工業(yè)出版社,2009年09月</p><

89、p>  [10]徐洋等,基于Verilog VHDL的FPGA設(shè)計(jì)與工程應(yīng)用,人民郵電出版社,2009年10月</p><p>  [11]劉昌華,管庶安,數(shù)字邏輯原理與FPGA設(shè)計(jì),北京航空航天大學(xué)出版社,2009年09月</p><p>  [12]ALTERA Corporat NIOSⅡSoftware Developer’s Handbook.2009</p>

90、<p>  [13]ALTERA Corporat NIOSⅡProcessor Reference Handbook.2009</p><p>  [15] Yang,YansiYang.Software design of SD card reder and image processor based on FPGA.Proceedings 2011 International Conferenc

91、e on Mechatronic Science,Electric Engineering and COmputer, MEC 2011,p 1864-1867,2011,Proceedings 2011 International Conference on Mechatronic Science,Electric Engineering and Computer, MEC 2011.</p><p><

92、b>  附錄:</b></p><p><b>  PS2.vhd</b></p><p>  library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;</p><p>  use IEEE.STD_LOGIC_ARITH.ALL;</p>

93、<p>  use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  entity ps2 is</p><p>  port (resetn: in std_logic; -- active low reset</p><p>  clock: in std_logic;

94、 -- system clock</p><p>  ps2_clk: in std_logic; -- PS/2 clock line</p><p>  ps2_dta: in std_logic; -- PS/2 data line</p><

95、p>  cs: out std_logic;</p><p>  ascii: out std_logic_vector(7 downto 0); -- LED outputs</p><p>  key:out integer range 0 to 7); </p><p><b>  end ps2;</b></p

96、><p>  architecture behavioral of ps2 is</p><p>  type state_type is (IDLE, START, DATA, PARITY); -- FSM states</p><p>  signal ps2_dv: std_logic; -- PS/2 dat

97、a valid</p><p>  signal prv_ps2_clk, act_ps2_clk: std_logic; -- auxiliary signals</p><p>  signal recdata: std_logic_vector(7 downto 0); -- read data</p><p>  signal shift

98、: std_logic; -- enable for shift reg.</p><p>  signal n_shift: std_logic; -- auxiliary signal</p><p>  signal latch: std_logic;

99、 -- latch read data</p><p>  signal n_latch: std_logic; -- auxiliary signal</p><p>  signal err: std_logic; -- parity or stop error</p&

100、gt;<p>  signal n_err: std_logic; -- auxiliary signal</p><p>  signal parset: std_logic; -- preset for parity check</p><p>  signal n_pars

101、et: std_logic; -- auxiliary signal</p><p>  signal c_state, n_state: state_type; -- current & next states</p><p>  signal zero: std_logic;

102、 -- counter is zero</p><p>  signal parbit: std_logic; -- odd parity of data</p><p>  signal leds:std_logic_vector(7 downto 0);</p><p>  signal hit:

103、std_logic;</p><p><b>  begin</b></p><p>  PS_CLK_SYNC: process(clock, resetn)</p><p><b>  begin</b></p><p>  if (resetn = '0') then</

104、p><p>  prv_ps2_clk <= '1';</p><p>  act_ps2_clk <= '1';</p><p>  act_ps2_clk <= ps2_clk;</p><p>  prv_ps2_clk <= act_ps2_clk;</p><p

105、><b>  end if;</b></p><p>  end process;</p><p>  ps2_dv <= (not act_ps2_clk) and prv_ps2_clk;</p><p>  SIPO: process(clock, resetn)</p><p><b>  

106、begin</b></p><p>  if (resetn = '0') then</p><p>  recdata <= (others => '0');</p><p>  elsif (clock'event and clock = '1') then</p>&

107、lt;p>  if (shift = '1') then</p><p>  recdata <= ps2_dta & recdata(7 downto 1);</p><p><b>  end if;</b></p><p><b>  end if;</b></p>

108、<p>  end process;</p><p>  COUNT8: process(resetn, clock)</p><p><b>  begin</b></p><p>  if (resetn = '0') then</p><p>  cntval <= (others

109、=> '0');</p><p>  elsif (clock'event and clock = '1') then</p><p>  if (shift = '1') then</p><p>  cntval <= cntval + 1;</p><p><b&

110、gt;  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  zero <= not (cntval(0) or cntval(1) or cntval(2));</p><p>  PARITY_CHECK: p

111、rocess(clock, parset)</p><p><b>  begin</b></p><p>  if (parset = '1') then</p><p>  parbit <= '1';</p><p>  elsif (clock'event and c

112、lock = '1') then</p><p>  if (shift = '1' and ps2_dta = '1') then</p><p>  parbit <= not parbit;</p><p><b>  end if;</b></p><p>&

113、lt;b>  end if;</b></p><p>  end process;</p><p><b>  begin</b></p><p>  if (resetn = '0') then</p><p>  c_state <= IDLE;</p><

114、p>  shift <= '0';</p><p>  latch <= '0';</p><p>  err <= '0';</p><p>  parset <= '1';</p><p>  elsif (clock'event and

115、 clock = '1') then</p><p>  c_state <= n_state;</p><p>  shift <= n_shift;</p><p>  latch <= n_latch;</p><p>  err <= n_err;</p><p>  p

116、arset <= n_parset;</p><p><b>  end if;</b></p><p>  end process;</p><p>  -- Combinatorial process of control state machine</p><p>  FSM_COMB: process(c_

117、state, ps2_dv, ps2_dta, zero)</p><p>  begin -- default values</p><p>  n_shift <= '0';</p><p>  case c_state is -- wait to receive data</

118、p><p>  when IDLE => if ((ps2_dv and (not ps2_dta)) = '1') then</p><p>  n_state <= START;</p><p>  n_parset <= '1';</p><p><b>  else</

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論