《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的乒乓球游戲的設計與實現
基于FPGA的乒乓球游戲的設計與實現
摘要: FPGA(FieldProgrammableGateArray),現場可編程門陣列。它是繼PAL、GAL、CPLD等可編程器件的基礎上進一步發展的成果。它作為專用集成電路(ASIC)領域中的一種半定制電路,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點
關鍵詞: SoPC FPGA 乒乓球游戲
Abstract:
Key words :

0引言

FPGA(FieldProgrammableGateArray),現場可編程門陣列。它是繼PAL、GAL、CPLD等可編程器件的基礎上進一步發展的成果。它作為專用集成電路(ASIC)領域中的一種半定制電路,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。作為一種可編程器件,FPGA與傳統的數字電路和門電路相比,它采用邏輯單元陣列的模式,內部包含有可配置邏輯模塊、輸出輸入模塊和內部連線三個部分。通過硬件描述語言(如VHDL語言)完成的電路設計,可以通過綜合與布局,快速燒錄至FPGA芯片上進行測試。

SOPC(SystemOnProgrammableChip),可編程片上系統。它是用可編程邏輯技術把整個系統放到一塊硅片上,用于從事嵌入式系統的系統研究和電子測量處理等領域。SOPC是一種特殊的嵌入式系統,它既是片上系統(SOC),即由單個芯片完成整個系統的主要邏輯功能,但它又不是簡單的SOC,也是可編程系統,具有靈活的設計方式,可裁剪、可擴充、可升級,并具備軟硬件在系統可編程的功能。

1乒乓球游戲玩法介紹

將雙通道示波器作為顯示屏。將兩路信號輸入示波器中,讓示波器工作在X/Y模式。
單片機實驗板上的兩個按鈕作為控制鍵分別用于左擊球和右擊球,當小球接近屏幕左邊時按下左擊球可將球擊回右側,右側擊球亦然。小球可以按照一定的拋物線軌跡自動在屏幕上左右運動,連續按下兩次擊球鍵能夠擊出高拋球,使球飛行距離增高。當球接觸到屏幕邊沿而未按下擊球鍵則被判定為輸球。

2實驗器件

CycloneIII(EP3C10E144C8)FPGA實驗板,單片機P89V51實驗板(含按鍵顯示屏等),電阻導線若干。
Altera公司生產的CycloneIIIFPGA芯片具有低功耗、低成本和高性能等特點。其體系結構包括高達120K的垂直排列邏輯單元(LE)、以9-Kbit(M9K)模塊構成的4Mbits嵌入式存儲器、200個18x18的嵌入式乘法器。利用TSMC的65nm低功耗(LP)工藝,CycloneⅢFPGA芯片提供豐富的邏輯、存儲器和DSP功能,功耗更低。在可編程邏輯發展歷史中,CycloneIIIFPGA比其他低成本FPGA系列能夠支持實現更多的應用。

3實驗原理及模塊詳解

用方波發生器生成兩個占空比可變的方波,方波經過低通濾波器生成兩個通道的直流信號用于控制小球在X軸和Y軸的位置。通過改變方波占空比從而改變直流信號的值。用SOPC與單片機通訊實現按鍵對小球運動的控制。



3.1方波發生器生成原理

VHDL語言編寫的方波產生tennis模塊代碼的關鍵部分:

代碼分析:

每當輸入時鐘clk_in變化時進程被觸發。在進程中,每一個時鐘上升沿計數器變量c0dutytmp加一,在一個周期內,計數器小于預設值時輸出低電平,大于預設值時輸出高電平。在設計中,我選用的預設值為8位,所以在0到255之間給定任意一個數作為輸入就可以設置它的占空比。占空比。而通過SOPCbuilder生成的SOPC控制c0duty便可以間接控制其占空比。以上代碼完成了一條通道的控制,另一個數據通道方法類似。

3.2直流信號生成方法

生成直流信號的方法很多。在此論述幾種常見方法。

第一種是通過D/A芯片。市場上D/A芯片較多,如DAC0832,DAC0809等。這種方法原理簡單,只需給定恒定的數字值便可以輕松控制輸出直流波形的電壓值。出于成本考慮,我們轉而另一種方法。

第二種方法是低通濾波法。例如當方波占空比為100%時可當作是直流高電平信號。而占空比為0表示零電平。將一定占空比的直流信號經過低通濾波器,經過計算可知占空比對于輸出信號的電平高低成線性關系。所以我們可以利用這點來完成電平控制。

3.3擊球控制

運用單片機與FPGA實驗板之間的通訊完成擊球命令的傳遞。常見的通訊方法:串口通訊和并口通訊。
并口通訊雖然使用簡單,但是速度較慢,占用管腳較多,實現功能受到位數限制,可以完成的指令較少。于是利用串口通訊。在Quartus軟件下運行SOPCBuilder生成SOPC并為其添加UART功能。設置波特率為9600。利用SOPC的txd和rxd兩個端口與單片機的串口端相連接。于是便可以在程序中加入串口接收中斷并且在中斷服務函數中完成大量工作。以下編碼全部用C語言完成。

SOPC內部中斷服務函數:


代碼分析:

首先簡單介紹Avalon總線。SOPCBuilder自動生成的Avalon交換架構是針對系統處理器和外設的專用互聯需求進行優化。Avalon總線可以連接許多外部設備,如定時器/計數器,外部三態橋接,外部SRAM接口,UART,LCD接口,用戶邏輯接口JTAG,UARTC,并行I/O等。代碼中,IOWR_ALTERA_AVALON_UART_STATUS()函數可以完成向串口發送數據的任務,IOWR_ALTERA_AVALON_PIO_DATA()函數則可以給內部工程發送并行數據,控制占空比的值。

在中斷服務函數中,通過設置標志位變量flag辨別是否為雙擊命令。在確定擊球方式后生成cmd的四種狀態。cmd為全局變量,在main()函數中實現狀態的選擇。

3.4小球運動程序

程序分析:

該段程序是主函數main()的關鍵部分,其中數組xlabel[50]是小球在X軸方向的運動軌跡,軌跡方程是xlabel=i×5。數組ylabel[50]和ylabel2[50]是小球在Y方向的兩個軌跡,軌跡方程分別為ylabel=-0.007i2+1.792i和ylabel2=-0.013i2+3.328i,其中i是小球運動的變量,在for循環函數中勻速增加或減小。當出現break時小球運動方向改變。當i=0或者i=49時,說明小球觸壁卻沒能遭到有效擊球,判定一方得分,通過UART發送指令在單片機上顯示比分。delay()函數用來控制小球的運動速度。

4實驗結果

將程序燒寫到FPGA芯片內部,在NiosII開發環境下運行RunasNiosⅡHardware。把低通濾波器的兩個輸出通道分別接到雙蹤示波器的輸入端。觀察到示波器上顯示出小球沿著拋物線軌跡來回運動,并可以通過按鍵實現擊球命令改變小球運動。

5結束語
本實驗可以進行適當改進。比如小球軌跡可以選用三個或三個以上更加豐富的軌道碼表,這樣小球的運動軌跡將更加多樣。還可以設立對游戲難度的設置,改變對小球的運動速度,這個想法可以在中斷服務函數通過對delay()函數進行實參的變換而實現。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
在线观看日韩国产| 一区二区三区精品| 国产精品不卡在线| 欧美黄色免费| 欧美成人在线网站| 久久免费视频网站| 久久久久9999亚洲精品| 欧美在线观看www| 香港成人在线视频| 欧美一级电影久久| 欧美一区视频| 欧美一区二区在线播放| 亚洲欧美日韩天堂| 午夜欧美大片免费观看| 午夜精品久久久久久久久久久| 亚洲综合另类| 亚洲欧美视频一区| 午夜日韩电影| 久久国产精品久久精品国产| 欧美一区二区三区另类| 欧美在线短视频| 久久久国际精品| 久久免费的精品国产v∧| 久久久亚洲午夜电影| 久久青青草原一区二区| 美女精品一区| 欧美激情国产日韩精品一区18| 欧美激情网站在线观看| 欧美另类极品videosbest最新版本| 欧美激情一区二区| 欧美日韩国产一区二区三区| 欧美激情影院| 欧美午夜精品久久久久久孕妇 | 久久免费视频在线观看| 久久综合中文| 欧美人与性动交cc0o| 欧美日韩精品免费看| 国产精品v片在线观看不卡| 国产精品一区二区男女羞羞无遮挡| 国产欧美婷婷中文| 在线观看视频一区二区欧美日韩| 亚洲精品在线视频| 亚洲天堂av在线免费观看| 亚洲欧美日韩精品久久久久| 亚洲福利久久| 99精品国产在热久久| 亚洲欧美激情精品一区二区| 久久精品在线观看| 欧美1区2区视频| 欧美日韩精品一区视频| 国产精品羞羞答答xxdd| 伊人久久婷婷色综合98网| 最近中文字幕日韩精品 | 亚洲国产欧美不卡在线观看| 99国产精品国产精品久久| 亚洲字幕在线观看| 久久野战av| 国产精品xxxav免费视频| 国产一区二区三区的电影 | 亚洲美女黄网| 欧美一区二区播放| 999亚洲国产精| 欧美一区二区大片| 欧美精品v国产精品v日韩精品| 国产精品久久91| 在线观看欧美激情| 亚洲一区二区三区精品视频| 亚洲国产高清一区| 亚洲欧美日本另类| 欧美高清视频一区二区| 国产欧美精品| 99亚洲精品| 亚洲国产精品欧美一二99| 亚洲午夜一区二区| 免费国产一区二区| 国产日韩视频| 夜夜嗨av一区二区三区四季av| 久久黄色影院| 亚洲欧美日韩综合国产aⅴ| 欧美成人国产va精品日本一级| 国产农村妇女精品一二区| 亚洲欧洲另类| 亚洲国产成人精品久久| 午夜精品视频| 欧美日韩国产首页在线观看| 伊人春色精品| 欧美一区二区视频免费观看| 亚洲视频在线看| 欧美**人妖| 国产在线拍揄自揄视频不卡99| 在线亚洲免费| 亚洲毛片在线看| 麻豆精品在线播放| 国产日韩欧美二区| 一区二区动漫| 欧美日韩久久久久久| 精品成人一区二区| 狠狠色综合播放一区二区| 亚洲视频欧美在线| 日韩视频在线观看| 老司机一区二区三区| 国产亚洲亚洲| 亚洲一区二区动漫| 亚洲视频网站在线观看| 欧美精品不卡| 亚洲国产精品va在线看黑人| 欧美专区日韩专区| 欧美中文在线字幕| 国产精品私房写真福利视频| 99re6这里只有精品视频在线观看| 亚洲精品国产精品久久清纯直播| 久久躁狠狠躁夜夜爽| 国产伊人精品| 欧美在线一级va免费观看| 久久国产精品一区二区三区| 国产九区一区在线| 亚洲一区免费视频| 亚洲综合不卡| 国产精品九色蝌蚪自拍| 亚洲图片欧美午夜| 亚洲欧美视频在线观看视频| 国产精品久久久久久影视| 亚洲香蕉视频| 午夜一区二区三视频在线观看| 国产精品久久久一本精品| 亚洲午夜精品| 性久久久久久久久久久久| 国产精品视频yy9099| 亚洲一区二区三区激情| 午夜精品视频在线观看| 国产女同一区二区| 午夜精品一区二区三区四区 | 1769国产精品| 亚洲精品一区二区三区樱花| 男同欧美伦乱| 亚洲精品免费在线观看| 99国产精品自拍| 欧美色视频一区| 亚洲视频香蕉人妖| 午夜一级久久| 国产最新精品精品你懂的| 亚洲大片在线| 欧美电影在线观看完整版| 亚洲三级视频| 亚洲欧美精品suv| 国产欧美日韩一区| 亚洲成人在线网| 欧美激情综合| 亚洲一区二区三区三| 久久久精品五月天| 亚洲韩国青草视频| 中文在线不卡| 国产九区一区在线| 亚洲国产精品国自产拍av秋霞| 欧美激情一区二区三级高清视频| 日韩亚洲欧美成人一区| 性色一区二区三区| 在线播放不卡| 亚洲午夜国产一区99re久久| 国产女优一区| 亚洲日本va午夜在线电影| 欧美午夜一区| 久久激情五月婷婷| 欧美日韩mp4| 香蕉久久a毛片| 欧美激情精品久久久久久免费印度 | 亚洲午夜一区| 国产一区二区三区丝袜| 亚洲免费观看| 国产麻豆一精品一av一免费| 亚洲国产综合91精品麻豆| 欧美日韩一区在线观看视频| 欧美伊人久久| 欧美激情精品久久久久久免费印度| 亚洲视频在线看| 久久一综合视频| 亚洲视频www| 免费观看日韩av| 亚洲一卡久久| 欧美1区2区| 亚洲欧美视频在线观看| 欧美激情综合色| 欧美影院视频| 欧美视频在线不卡| 亚洲国产欧美不卡在线观看| 国产精品老牛| 亚洲精品中文字幕在线| 国产日韩专区| 在线视频精品一| 狠狠色狠狠色综合| 午夜视频在线观看一区二区| 亚洲高清成人| 久久精品网址| 夜夜嗨av一区二区三区四区| 老司机免费视频一区二区三区| 亚洲一区二区在| 欧美激情一区二区三区在线| 香蕉久久精品日日躁夜夜躁| 国产精品草莓在线免费观看| 亚洲人成在线观看网站高清|