# 第22組邏輯設計期末專案: Tatsujin **E94116148 蘇凡誠 E94114073 張哲維 E94111059 許評詔 E94116180 陳柏元** ## 一、專題構想 聖翔有天突然就在想,要是家裡就能打太鼓達人那該有多好,這樣在無聊的暑假就不用出門找樂子了。於是為了滿足弟弟的需求,凡誠就設計了一個陽春版”RGB點陣 ”的太鼓達人,並用按鈕代替了鼓和另外找尋了三首歌設計在其中。 ## 二、預期目標 #### 用verilog寫出一個模仿太鼓達人的遊戲,用外接的三個大按鈕模擬鼓面當作輸入。遊戲分成關卡選取畫面、遊玩畫面以及分數結算畫面,每個畫面都有各自的動畫。 1. **關卡選取畫面** : 利用紅色藍色按鈕切換要挑戰的關卡,黃色按鈕確認並開始遊戲。螢幕上會顯示關卡名稱,並且會提示如何操作。 2. **遊玩畫面** : 分成上下兩個部分。上半部是顯示目前累積分數,下半部為音符顯示的地方。玩家要在紅或藍色的音符靠近判斷線時按下對應按鈕,越接近判斷線則分數越高,並且連續正確打擊會有分數加成。 3. **分數結算畫面** : 將玩家的最終分數顯示在螢幕上,且提示按下黃色按鈕可以返回關卡選取畫面重新遊玩。 ## 三、設計思路 - **邏輯設計**:使用FSM控制遊戲的狀態 (開始, 選擇曲目, 遊戲進行, 結束狀態)。 - **點陣渲染**:利用case來儲存每個畫面的輸出數據,並在不同的狀態呈現在點陣上。 - **顯示鼓點**:使用偏移量來產生平滑的移動效果。 - **得分系統**:根據玩家擊打的準確度和連擊來計算得分,實現即時反饋。 ## 四、實作方法 用 verilog 來設計電路並利用PYNQ-Z2、三個大按鈕、全彩LED點矩陣以及麵包板來實現太鼓達人遊戲。 細部內容如下: 1. **樂譜紀錄**:用兩bit來記錄一個音符,00代表沒有音符,01代表紅色,10代表藍色。 2. **畫面顯示**:依據當前畫面連接畫面資料,若有音符則會從暫存中讀取音符的圖像,並依據偏移量畫到正確的位置,之後再按照顯示板的規格逐格將畫面資料輸入緩衝區。 3. **計分機制**:當按鈕按下的時候判斷當前偵測位置是否有音符,並透過偏移量來決定獲得分數,並消除該音符。 4. **狀態機**:透過一個state_button的module控制狀態在 START, MENU, PLAY, FINISH輪替,並將狀態分享給其他模組。 ___ ## 使用方法 1. **啟動遊戲** - 按下任何一顆按鈕從開始頁面進入歌曲選單 - 紅色按鈕為選擇上一首;藍色為下一首;黃色為確認歌曲 - 共有三首曲目可供選擇:瑞克搖、最後一夜、晚安大小姐 ![開始畫面](https://hackmd.io/_uploads/HyH5DDHIA.png) ![選歌畫面](https://hackmd.io/_uploads/SyHH_vrUA.png) 2. **遊戲介面介紹** - 進入遊戲後,您將看到以下界面: - **分數介面**:顯示目前點擊累積的分數 - **鼓點介面**:顯示太鼓音節的位置 ![遊玩畫面](https://hackmd.io/_uploads/S1B-75r8A.jpg) 3. **遊戲操作** - 根據提示擊打對應的按鍵。 - 使用藍色和紅色按鈕敲擊對應的音節。 - 隨著音樂節奏準確擊打以獲得高分。 4. **結束遊戲** - 遊戲結束後,系統會顯示您的得分。 - 您可以按下黃色按鈕重新開始遊戲。 ![結束畫面](https://hackmd.io/_uploads/BkQE7qrUA.jpg) ## Architecture 1. **submodule** - Shift_Load - state_button - Draw_main_scene - Draw_node - Draw_score - Score_Counter - Button_judge - clk_div - Output_penel ![architeture](https://hackmd.io/_uploads/rJyVCISIR.jpg) ___ ## vivado模擬波型 以下是程式的部分截圖展示: ![shift_load](https://hackmd.io/_uploads/SJTwbTHUR.png) ![Output_penel](https://hackmd.io/_uploads/HJ_C_DSUR.png) ## Project_Summary ![Summary](https://hackmd.io/_uploads/Hyipy6r8C.png) ## 未來展望 - 增加更多音樂曲目選擇。 - 優化圖形界面,提供更好的視覺效果,e.g使用PWM增加渲染顏色、結算畫面。 - 連接喇叭合併音樂撥放和打擊音效功能。 ## 分工表 --- Github連結: https://github.com/KendellHsu/Tatsujin/tree/TATSUJIN demo影片:https://youtu.be/zIhieWhzpes?si=CBGIvg19b6d27xWo 希望這個專案能夠讓您體驗到太鼓達人遊戲的樂趣,也期待您的寶貴意見來改進我們的設計! Email: kendellhsu@gmail.com