Skip to content

Repository files navigation

DE2-115 Lunar Lander

FPGA 登月小艇遊戲

本專案是一個基於 Altera DE2-115 開發板(Cyclone IV E FPGA)登月小艇(Lunar Lander) 遊戲。
玩家需使用 紅外線遙控器 控制飛船,在有限燃料下抵抗重力、避開隨機生成的障礙物,並安全降落。


目錄

  • 專案簡介
  • 硬體需求
  • 遊戲玩法與操作
  • 模組架構
  • 安裝與編譯
  • 難度設定
  • 常見問題

專案簡介

本專案使用 Verilog HDL 實作,包含完整的物理模擬與周邊硬體控制。

主要功能

  • 物理引擎:模擬重力加速度、噴射推進反作用力與慣性
  • 紅外線控制:支援 NEC 協定,含長按重複訊號(Repeat Code)處理
  • VGA 顯示:640×480 解析度,顯示飛船、地形與障礙物
  • LCD 狀態顯示:即時顯示燃料(Fuel)與遊戲狀態(Win / Fail)
  • 隨機障礙物:使用 LFSR(線性回饋移位暫存器) 產生
  • 難度分級:以指撥開關調整重力與安全降落速度
  • LED 儀表板:LEDR / LEDG 即時顯示速度是否安全

硬體需求

  • FPGA 開發板:Terasic DE2-115(Cyclone IV EP4CE115F29C7)
  • 顯示輸出:VGA 螢幕
  • 輸入裝置:DE2-115 原廠紅外線遙控器(或其他 NEC 協定遙控器)
  • 電源:12V DC Adapter

遊戲玩法與操作

遊戲目標

控制飛船從螢幕上方緩慢降落至底部平台。
著陸時:

  • 垂直速度必須低於「安全速限」
  • 不可撞擊隨機生成的障礙物

控制方式(紅外線遙控器)

按鍵 功能說明
▲(CH+) 噴射推進(消耗燃料、產生向上推力)
◀(<<) 左移
▶(>>) 右移
MENU 重置遊戲(Win / Fail 畫面時使用)

狀態顯示

  • VGA 螢幕
    顯示飛船、地面、障礙物與結果文字(LANDED / GAME OVER
  • LCD 螢幕
Fuel: 50
State: P
  • State:I Idle / P Play / W Win / F Fail
  • LED 儀表板
  • 綠燈亮:速度安全
  • 紅燈亮:速度過快,需減速

模組架構

檔案名稱 功能描述
lunar_lander.v Top Module,連接所有子模組與 FPGA 腳位
Game_Control_Unit.v 遊戲核心(FSM、物理運算、碰撞偵測、燃料管理、LFSR)
IR_Receiver.v NEC 紅外線解碼,支援 Repeat Code
LCD_Display.v LCD 驅動與 ASCII 顯示
VGA_Controller.v VGA 同步訊號與畫面繪製
SEG7_LUT.v 七段顯示解碼
Clock_Divider.v 50MHz → 25MHz(VGA)/ 60Hz(遊戲邏輯)

難度設定

使用 SW[1:0] 指撥開關調整難度,HEX0 / HEX1 顯示設定值。

SW[1] SW[0] 難度 重力 安全速限 障礙物
0 0 簡單 小(1) 寬鬆(8)
0 1 普通 小(1) 嚴格(5)
1 0 困難 小(1) 嚴格(5)
1 1 地獄 大(2) 極嚴(3)

安裝與編譯

  1. 開啟 Quartus II(建議 13.0sp1 以上)
  2. 建立新專案,選擇裝置 EP4CE115F29C7
  3. 將所有 .v 檔加入專案
  4. 匯入 Pin Assignmentpins.csv
  5. 點擊 Start Compilation
  6. 使用 Programmer.sof 燒錄至開發板

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages