<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的乒乓球游戲的設(shè)計與實現(xiàn)

          基于FPGA的乒乓球游戲的設(shè)計與實現(xiàn)

          作者: 時間:2012-02-27 來源:網(wǎng)絡(luò) 收藏

          代碼分析:

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

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

          3.4小球運(yùn)動程序

          41.jpg

          程序分析:

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

          4實驗結(jié)果

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

          5結(jié)束語

          本實驗可以進(jìn)行適當(dāng)改進(jìn)。比如小球軌跡可以選用三個或三個以上更加豐富的軌道碼表,這樣小球的運(yùn)動軌跡將更加多樣。還可以設(shè)立對游戲難度的設(shè)置,改變對小球的運(yùn)動速度,這個想法可以在中斷服務(wù)函數(shù)通過對delay()函數(shù)進(jìn)行實參的變換而實現(xiàn)。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: FPGA

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();