国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的俄羅斯方塊游戲設計與實現(xiàn)

2022-01-24 08:38呂兆承
通化師范學院學報 2022年2期
關鍵詞:框圖方塊按鍵

李 營,呂兆承,施 勇

俄羅斯方塊游戲是一款難易程度適中、操作方便的游戲,深受人們喜歡.常見的俄羅斯方塊硬件游戲多由專用集成芯片或者單片機設計實現(xiàn),而FPGA芯片具有高速并行計算、可編程,實現(xiàn)的游戲系統(tǒng)功能易拓展等特點,鑒于此本文根據(jù)VGA時序顯示原理和俄羅斯方塊游戲工作原理,在QuartusⅡ13.1環(huán)境下利用Verilog硬件描述語言和層次化建模思想設計實現(xiàn)硬件俄羅斯方塊游戲系統(tǒng)[1].

1 俄羅斯方塊游戲系統(tǒng)工作原理

本文俄羅斯方塊游戲系統(tǒng)選用Altera公司Cyclone V系列的5CSXFC6D6F31C6芯片設計實現(xiàn)相應功能,由VGA顯示器、FPGA芯片等構成.俄羅斯方塊游戲的規(guī)則是當游戲開始初始化后,隨機產(chǎn)生一個方塊,當其下落過程中根據(jù)不同按鍵進行操作,比如當點擊旋轉按鈕時將方塊旋轉,點擊LEFT_KEY時向左移動,一旦下落到底并且滿行時消除該行,當最新方塊掉落行置頂時游戲結束.具體的游戲算法流程圖如圖1所示[2].

圖1 俄羅斯方塊游戲算法流程圖

2 系統(tǒng)總體實現(xiàn)

采用自頂向下層次化建模思想設計實現(xiàn)俄羅斯方塊系統(tǒng)各功能模塊.系統(tǒng)的功能框圖如圖2所示.由圖2可知,系統(tǒng)底層包含:按鍵輸入處理模塊(key.v)、方塊移動控制模塊(game_control.v)、數(shù)據(jù)路徑模塊(datapath.v)、游戲界面輸出模塊(merge.v)、VGA時序控制模塊(vga_top)[3].

圖2 系統(tǒng)設計思路和實現(xiàn)功能框圖

2.1 按鍵輸入處理模塊

該模塊的功能是對輸入系統(tǒng)的各種控制信號進行上升沿檢測及消抖,其接口框圖如圖3所示,圖中輸入按鍵UP_KEY、LEFT_KEY、RIGHT_KEY、DOWN_KEY分別用來控制方塊旋轉、方塊向左、向右、向下移動[4],其對應消抖后輸出信號為rotate、left、right、down.若UP_KEY按下1次,方塊旋轉1次,其他按鍵功能類似,此處不再列出.

圖3 按鍵輸入處理模塊接口框圖

2.2 方塊移動控制模塊

該模塊的功能是:①根據(jù)游戲規(guī)則定義了10個狀態(tài),并采用有限狀態(tài)機設計實現(xiàn)[5].②接收按鍵輸入處理模塊信號,將其控制輸出后送至數(shù)據(jù)路徑模塊.

該模塊的狀態(tài)遷移圖如圖4所示.各狀態(tài)的含義如下:

圖4 系統(tǒng)狀態(tài)遷移圖

①空閑狀態(tài)S_idle:點擊系統(tǒng)復位按鍵rst_n后進入該狀態(tài).

②新的俄羅斯方塊產(chǎn)生狀態(tài)S_new.

③保持狀態(tài)S_hold:在該狀態(tài)中計時到固定時間后,轉到下移狀態(tài)S_down狀態(tài);或者根據(jù)不同輸入信號指令轉到下移或者移動狀態(tài).

④下移狀態(tài)S_down:判斷當前俄羅斯方塊能否下移一格.若是則轉到S_remove_1狀態(tài),否則轉到S_shift狀態(tài).

⑤移動狀態(tài)判斷S_move:判斷當前俄羅斯方塊是否能夠按照按鍵信號進行移動,若是轉到S_shift狀態(tài),若不是轉到S_remove_1狀態(tài).

⑥更新方塊坐標狀態(tài)S_shift:更新俄羅斯方塊的坐標信息,返回S_hold狀態(tài).

⑦更新屏幕狀態(tài)S_remove_1.

⑧消除行判斷狀態(tài)S_remove_2:重復判斷,若無可消除的行跳轉S_isdie狀態(tài).

⑨游戲結束判斷狀態(tài)S_isdie:若結束跳轉到S_stop,否則跳轉到S_new.

⑩清除屏幕狀態(tài)S_stop.

2.3 數(shù)據(jù)路徑模塊

該模塊主要功能是:根據(jù)方塊移動控制模塊給出的信號,對方塊當前的狀態(tài)進行判斷,更新游戲背景[6].具體功能如下:

(1)游戲背景定義.背景R是24行10列的寄存器組,負責保存非活動方塊坐標(①所有之前下落的方塊;②下落后方塊消除之后的結果).背景R中任一位置,如方塊存在,則該位置為1,否則為0.

(2)數(shù)據(jù)交換.完成本模塊與方塊移動控制模塊game_control間的控制.

(3)方塊模型定義.定義了七種形狀方塊模型,如圖5所示,圖中陰影部分為固定點,即方塊旋轉時不變的格點.

圖5 方塊模型示意圖

(4)方塊運動.指活動方塊的運動,所謂活動方塊為當前下落中的方塊,通過活動方塊坐標表示.俄羅斯方塊的運動包括4種:①方塊隨機產(chǎn)生;②方塊旋轉、下落、向左、向右四種移動方式;③方塊停止與消除由S_remove1和S_remove2兩個狀態(tài)完成.④死亡判定.該模塊的接口框圖如圖6所示,圖中各端口含義如下:

圖6 數(shù)據(jù)路徑模塊接口框圖

輸入端口.信號MOVE、DOWN、DIE、SHIFT、REMOVE_1、REMOVE_2、NEW、STOP、AUTODOWN、KEYBOARD等信號均連接方塊移動控制模塊相應輸出.

輸出端口.信號n、m指向當前活動方塊固定點位置.信號BLOCK[6:0]指方塊類型,由7位編碼構成.信號MOVE_ABLE、SHIFT_FINISH、DOWN_ABLE、REMOVE_2_FINISH分別連接方塊移動控制模塊相應信號.M_OUT[239:0]指活動和非活動方塊數(shù)據(jù)在背景數(shù)據(jù)輸出.

2.4 游戲界面輸出模塊

該模塊主要完成游戲界面最終輸出功能,其接口框圖如圖7所示.圖中各端口的含義如下:游戲界面背景ROW為20行,COL為10列,即非活動矩陣數(shù)據(jù)data_in[239:0],活動方塊形狀數(shù)據(jù)shape[6:0],活動方塊的固定點位置坐標是x_pos[3:0]和y_pos[3:0],最終游戲界面數(shù)據(jù)data_out[ROW*COL-1:0],即data_out[199:0].

圖7 游戲輸出界面模塊接口框圖

2.5 VGA驅動控制模塊

該模塊的功能是接收游戲界面輸出模塊數(shù)據(jù),將結果通過VGA接口在顯示屏端顯示[7].其接口框圖如圖8所示.

圖8 VGA驅動控制模塊接口框圖

圖中各端口的含義如下:

輸入端口.num[199:0]連接游戲輸出界面模塊的data_out[199:0]信號.

輸出端口.紅色、綠色、藍色三基色信號分別指OUTRed[3:0]、OUTGreen[3:0]、OUTBlue[3:0].hsync_r和vsync_r分別是行、場同步 信 號.圖 中VGA_BLANKn、VGA_SYNCn、DAC_CLK均是 其DE2-115的VGA驅動 所需的3根 線,其中VGA_BLANKn和VGA_SYNCn分別設置為1和0,DAC_CLK連接25MHz驅動時鐘.

2.6 系統(tǒng)頂層模塊

將上述各模塊連接完成后構成頂層模塊,其核心代碼如下:

3 系統(tǒng)仿真結果

3.1 系統(tǒng)軟件仿真

系統(tǒng)設計完成后生成的RTL圖如圖9所示,由圖可知各個功能模塊與圖2系統(tǒng)設計思路和功能框圖一致[1],說明系統(tǒng)設計思路正確.

圖9 系統(tǒng)RTL圖

3.2 系統(tǒng)硬件顯示效果

FPGA作為處理器讀取DE10開發(fā)板鍵盤發(fā)送的按鍵信息后,通過VGA接口顯示俄羅斯方塊游戲運行界面.系統(tǒng)通過start按鍵控制游戲開始,通過其他四個按鍵分別控制方塊旋轉、向下、向左、向右移動.結果達到了系統(tǒng)設計要求,其硬件顯示效果如圖10所示[8].

圖10 硬件顯示效果圖

4 結語

在640*480@60Hz的VGA分辨率下,基于Cyclone V系列 的5CSXFC6D6F31C6 FPGA芯片進行了俄羅斯方塊系統(tǒng)硬件驗證.文章提出的俄羅斯方塊游戲系統(tǒng)設計思路是利用FPGA芯片開發(fā)游戲的有效嘗試,相對于傳統(tǒng)的硬件游戲系統(tǒng),本系統(tǒng)功能更易拓展,如添加PS2鍵盤、LCD液晶顯示等設備,系統(tǒng)有一定的工業(yè)應用前景[9].

猜你喜歡
框圖方塊按鍵
有多少個方塊
不一樣的方塊橋
基于有限狀態(tài)機的按鍵檢測程序設計
謎題方塊
捷豹I-PACE純電動汽車高壓蓄電池充電系統(tǒng)(三)
按鍵消抖在單片機和FPGA實驗教學中的應用
電路圖2017年凱迪拉克XT5
算法框圖的補全
一種多方向導光按鍵結構設計
基于圖表法構建《萬有引力定律與航天》知識網(wǎng)絡