• 沒有找到結果。

台台台台

N/A
N/A
Protected

Academic year: 2022

Share "台台台台"

Copied!
20
0
0

加載中.... (立即查看全文)

全文

(1)

台 台 台

台 灣 灣 灣 灣 大 大 大 大 學 學 學 學 資 資 資 資 訊 訊 訊 訊 工 工 工 工 程 程 程 程 學 學 學 學 系 系 系 NTU CSIE

Digital Circuit Laboratory 數位電路實驗

數位電路實驗 數位電路實驗 數位電路實驗

Final Project

Project Name::Shooting Bird(射小鳥 : 射小鳥 射小鳥) 射小鳥

組別 組別 組別

組別:9 組員

組員 組員

組員:B97902019 蔡明驊

B97902028 王志勝 B97902030 林運生 B97902074 張洺偉 指導教授

指導教授 指導教授

指導教授:甘宗左教授 指導助教

指導助教 指導助教

指導助教:薛名雄助教

中華民國 100 年 01 月

(2)

摘要 摘要 摘要 摘要

這學期的數位電路實驗,我們開始接觸到一點硬體的東 西,從最原本的電壓、電阻和電流的量測,示波器的校準和 使用,最後摸到了 Altera DE2-70 這塊板子,我們利用這塊板 子來操作一些邏輯閘的性質,實作加法、減法、多工器和簡 易 ALU。到了學期末,我們就被要求充分利用這塊板子,完 成我們無限的創意。

一開始我們進行討論,決定我們要做什麼?是要做實用 性目的,還是要做娛樂性目的。最後我們決定要做娛樂性目 的的射擊遊戲,接著我們便開始天馬行空地想像,把一切想 要的結果都歸納進來,緊接著是規劃期末時程表,按表操 課,過程中不斷遭遇各式各樣的難關,有些是可以解決的困 難,有些卻如同 P=NP 般難題,雖不能說無解,但也是難度 頗高。最後,做的東西雖然和原本的設計理念有點不同,但 我們還是欣然接受,因為我們在過程中學到的東西遠比最後 呈現的簡單結果還多。

(3)

目錄 目錄 目錄 目錄

摘要………..………….2

目錄………..….3

第一章 Altera DE2-70 介紹………4~6 1-1. 硬體介紹………4~5 1-2. 軟體介紹………6

第二章 遊戲介紹……….7~9 2-1. 設計動機……….7

2-2. 遊戲流程……….8~9 第三章 遊戲實作……….…….10~13 3-1. VGA……….……10~11 3-2. 鍵盤………...12

3-3. 七段顯示器………...12

3-4. 倒數計時器……….12~13 第四章 實作結果……….13~16 4-1. 操作說明………...13

4-2. 遊戲畫面……….14~16 第五章 工作分配………17

第六章 討論與總結………..18~19 6-1. 遇到的困難………18

6-2. 解決方法………18

6-3. 心得………19

第七章 參考資料……….20

(4)

第一章 第一章 第一章

第一章 Altera DE2-70 介紹 介紹 介紹 介紹

在這次的實作遊戲中,我們必須要先對所使用到的硬體 和軟體有其基本的認識,這樣我們才能充分利用我們所擁有 的條件,進一步達成目標。首先 DE2-70 繼承了 Altera 一系 列的開發軟體,如 Quartus II 和 Nios II 等。硬體方面,我們 這次使用的是 DE2-70 的這塊板子;軟體方面,我們使用 Quartus II 搭配 VHDL 語言,來控制我們的 DE2-70。

1-1. 硬體介紹 硬體介紹 硬體介紹 硬體介紹

DE2-70 發展板,其上有很多功能,例如:提供強大的多 媒體和網路、紅外線等連結點,可以供應使用者多元發展。

在板子上有 18 個 Switch,可以用來控制輸入訊號;有 4 個 按鈕的輸入控制,因為按下去訊號為 0,所以要利用負緣觸 發來偵測按下去的動作;本身也有 8MB 的 Flash memory 可 供使用。

以下是這塊板子的外觀圖:

(5)

(圖 1)

裡面的功能介紹和下面這張圖顯示的一樣:

(圖 2)

(6)

1-2. 軟體介紹 軟體介紹 軟體介紹 軟體介紹

Quartus II 使用 VHDL。VHDL(Very High Speed Integrated Circuit Hardware Descrption Language 的縮寫),顧名思義就是 硬體描述語言,是用來敘述硬體的行為特徵的語言。相關的 語法在這裡不做闡述,想要研究的人可以上網找相關資料或 者相關書籍。

(7)

第二章 第二章 第二章

第二章 遊戲介紹 遊戲介紹 遊戲介紹 遊戲介紹

2-1. 設計動機 設計動機 設計動機 設計動機

一開始我們四人不知道要做什麼好,所以決定每個人都 想一種,最後來投票,張洺偉想要做進階版的小朋友下樓 梯,就是會出現很多隨機的門,然後不知道走進去的門會通 到哪個門出來;蔡明驊想要做打磚塊,利用很多 OO 的概念;

王志勝則是上網找了很多影片來看,想要朝搖桿方面努力;

林運生則是想要做貓狗大戰的遊戲,就是一隻貓和一隻狗互 丟東西的遊戲。

最後我們評估了一點發展可能性,決定要做射擊類的遊 戲,並且結合類似 Wii 的紅外線控制手槍來射擊物體,那時 候也想到如果最後做不出紅外線,也許可以來改造 PS/2 的滑 鼠,因為 DE2-70 也支援 PS/2 接頭的鍵盤或滑鼠。

於是乎我們的主題就這麼定下來了,但是要射擊什麼物 體還沒決定,一開始也隨便講講,說要射蔡明驊或射什麼之 類的,沒想到開始構思程式的時候,就畫了一隻鳥,在螢幕 上面飛來飛去,感覺蠻合理的,就沿用到最後的 project 主 題,所以我們就朝著射小鳥邁進,不過可惜的是,不但手槍 沒弄出來,連滑鼠也沒研究出來,還好還有個鍵盤,所以只 好改用鍵盤來代替。

(8)

2-2. 遊戲流程 遊戲流程 遊戲流程 遊戲流程

首先把程式 compile 好,燒錄到 DE2-70 的板子上面,同 時板子要先連接好 PS/2 的鍵盤和螢幕,而且 SW[14]~SW[17]

先設定好計時器的時間,SW[0]~SW[3]設定為 logic 0,之後 就會看到螢幕上面顯示三朵雲和四隻鳥飛來飛去,一個十字 瞄準器代表手槍,以及時間倒數的時間顯示在螢幕中間。

接著就利用鍵盤的 ijkl(上左下右)和 A(射擊)來進行遊 戲,進行遊戲前,要先按一次 pushbutton[0](KEY[0])來 reset 全部環境因子(諸如分數或鳥、瞄準器的位置),再按下

SW[2](遊戲開始,時間開始倒數),就可以開始遊戲了。

遊戲過程中,時間不斷倒數,時間部份會顯示兩個地方,

第一是板子上面最左邊的兩個七段顯示器,第二是螢幕上 面,當時間剩下三秒時,會以紅字來提示,此外都是黑字;

分數部份也有差別,打中大隻鳥會得一分,因為大隻鳥比較 大隻,飛得比較慢,打中小隻鳥會得三分,因為小隻鳥比較 小隻,飛得比較慢,然後分數部份統一顯示在板子的中間部 份的兩個七段顯示器,在這裡要說明一下,打中鳥時,會有 鳥噴汁的畫面,有些同學試玩後都說我們有點血腥,但是我 們要澄清的是,那不是血跡,而是長得像血的紅色星星,不 過意思好像差不多。

最後時間倒數到零的時候,就會停止一切動作,只會秀 出 TIME UP 的結束畫面,接著就可以看分數,看你是不是 有進到我們的最高得分排行榜囉。

(9)

(流程圖)

(10)

第三章 第三章 第三章

第三章 遊戲實作 遊戲實作 遊戲實作 遊戲實作

3-1. VGA

裡面控制了螢幕的各項輸入內容,包括三朵雲、四隻鳥 和十字瞄準器,背景天空顏色,時間的倒數,還有分數的計 算及遊戲結束畫面,可以說是 code 部份最多的地方。

VGA 的畫面顯示原理,是它會利用我們 assign 的系統 clock(50MHz)來跑變數 hsync 和 vsync,分別為水平同步和垂 直同步,具體解釋就是一行行地掃描螢幕,這行的水平 x 掃 完,就把 y+1,掃下一行的 x,如此不斷重複下去,當掃到 最後一行時,再重頭開始,如此反覆下去,這裡的螢幕大小 是 640*480。

物體的移動可以分為靜態和動態,靜態物件例如:雲和 不會動的時間數字,我們只要控制要在什麼地方、什麼時候 秀出來即可;麻煩的是動態物件,例如:鳥和十字瞄準器,

我們要設兩個移動方向的變數,分別表示垂直和水平方向的 移動,變數值範圍為(-1), 0 和 1,(-1)代表此刻物件的座標 向左或向上移動,1 則相反,然後可以有個係數來做倍數擴 增,控制移動的速度。

最後值得一提的就是配色,一開始我們採用單純二進位 的 0 和 1 來表示顏色色彩,這樣的複雜度最多只有兩種顏色 可以提供一個物件使用,雖說已經要滿足了,但是效果不是 很好,剛好此時我們的革命同志陳彥豪同學出現,他說配色 可以有另一種方式,就是用 0~f 來表示 16 種顏色,這感覺

(11)

表示法。

3-2. 鍵盤 鍵盤 鍵盤 鍵盤

實作部份只有一點需要注意,就是鍵盤的讀入很奇妙,

試從電路的角度來分析,當你按下一個按鍵時,會送出一個 signal,之後這個 signal 就會一直持續下去,即使你把按鍵放 掉也是一樣。

要克服這個問題,就要利用另外一種訊息的讀取,break code(F0),這是一種 signal,當你放掉鍵盤按鍵時,才會產生,

而我們要記得去讀取這個 signal,當讀取這個 signal 時,取 消按下的 signal 訊息。

3-3. 七段顯示器 七段顯示器 七段顯示器 七段顯示器

最簡易的部份就是七段顯示器了,但是這裡也有一個地 方需要注意,就是宣告方式和最後 assign pin 腳方式的差別,

0..6 和 6..0 是不一樣的。

3-4. 倒數計時器 倒數計時器 倒數計時器 倒數計時器

一開始這部份搞了很久,都以為失敗了,但是其實是 clock 沒算好。以 50MHz 來說,它一秒震盪 50M 次,可以說是非

(12)

我們可以設一個變數來紀錄,當它數到 50M,就代表已經過 了一秒。

(13)

第四章 第四章 第四章

第四章 實作結果 實作結果 實作結果 實作結果

4-1. 操作說明 操作說明 操作說明 操作說明

KEY[0]是 reset all。

SW[2]是遊戲開始。

SW[3]是時間暫停。

SW[17]~SW[14]是設定時間,例如:1101 代表 13。

鍵盤 ijkl 代表上左下右 鍵盤 A 代表射擊。

當遊戲結束想要再玩一次時,先把 SW[2]調回 logic 0,再 按 KEY[0]reset 即可重新再來。

(14)

4-2. 遊戲畫面 遊戲畫面 遊戲畫面 遊戲畫面

開始畫面(舊版,尚未新增螢幕上的時間倒數):

(15)

遊戲進行中畫面(時間倒數從 15 跑到 10):

遊戲結束的畫面:

(16)

DE2 板子的顯示畫面(時間設定為 15 秒,尚未開始,玩家試 玩,得分 26):

最後要正式開始時,只要 reset 即可重置分數,然後按下 SW[2]

開始遊戲。

(17)

第五章 第五章 第五章

第五章 工作分配 工作分配 工作分配 工作分配

蔡明驊:時間倒數計時器,買早餐。

王志勝:鍵盤部份,買午餐。

林運生:VGA 部份,買晚餐。

張洺偉:VGA 部份,買宵夜。

共同部份:report 和 wiki 和程式架構和音效(失敗)。

(18)

第六章 第六章 第六章

第六章 討論與總結 討論與總結 討論與總結 討論與總結

6-1. 遇到的困難 遇到的困難 遇到的困難 遇到的困難

1. 一開始借到的 DE2 板子都怪怪的。

2. VGA 的 RGB 配色,是 10-bit 和外面常用的 8-bit 色不一 樣,差了四倍,同時也要注意陣列的元素宣告順序和 pin 腳 assign 的順序。

3. VGA 如何生圖。

4. 鍵盤的輸入會卡鍵。

5. 倒數計時器咻一下就跑完了,當下以為失敗了。

6. 音效弄不出來。

6-2. 解決方法 解決方法 解決方法 解決方法

1. 特別感謝助教的 DE2 板子救援,沒有昨日的助教,就沒 有今日的我們。

2. VGA 和鍵盤的 code,就是參考 DCL 網頁的範例 code。

3. 另外 co 了一個 program 去 run 小畫家畫出來的圖。

4. 因為 if 的判斷順序,導致鍵盤輸入有點卡。

5. 倒數計時器,深刻體會到 clock 的快速。

6. 音效部分,最後還是沒研究出來…,主要還是對於 AUD pin 腳的不認識,有想過把 wav 寫成死的,針對 DAC 輸 出,殘念。

(19)

6-3. 心得 心得 心得 心得

心路歷程:

1. 一開始不知道要做什麼主題好,於是組員們隨意開

spec,猶如初生之犢不畏虎,為日後的搞不出來埋下伏 筆。

2. 借的 DE2 板子似乎有點狀況,還好助教不畏辛勞,遠從 地球另一端伸出援手,即刻救援。

3. 第一次把雲和鳥印在上面,覺得世界非常奇妙,但是那 時候很陽春,配色也不全,正所謂鳥非鳥,雲是雲。

4. 把鍵盤和分數的部分搞定,可以控制十字瞄準器打鳥,

很是高興,猶如早起的鳥兒看到蟲兒般雀躍,開始瘋狂 打鳥。

5. 進入無窮迴圈,於是想到了沒有子彈或時間倒數的限 制;加上了時間倒數,但是一開始跑太快了^^”,一下 子就結束,很是挫折,簡直盪到谷底。

6. 修正了時間倒數,完成了基本版,剩下時間幾乎都在研 究音效,但是還是搞不出來,彷彿剛看完明天過後,充 滿了無限悲傷。

7. 完成了某一些東西,就會再多想可以再多弄些什麼,結 果就是有點無限上綱,弄完了上色還不滿足,又弄了噴 血的畫面,又把時間倒數印在螢幕上,又….,導致最後 天天跨年,天天看日出。

(20)

第七章 第七章 第七章

第七章 參考資料 參考資料 參考資料 參考資料

圖 1:

http://www.altera.com.cn/education/univ/materials/boards/unv-d e2-board.html

圖 2:

http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=E nglish&CategoryNo=53&No=226&PartNo=3

DCL 課程網:http://eraser.csie.ntu.edu.tw/courses/dcl/99/

DCL wiki:

http://eraser.csie.ntu.edu.tw/courses/dcl/99/wiki/doku.php

參考文獻

相關文件

使用 BibTEX 的 L A TEX 文件, 編譯過程有時有點讓人困惑。我們這裡假設以 foo.tex 為我們的 L A TEX 檔 (BibTEX 檔叫什麼無妨, 只要我們在文中引用

在 abelian group 最好用的性質就是其每個 subgroup 都 是 normal subgroup, 所以每次碰到有關 abelian group 的性質時, 我們都可先找一個 nontrivial subgroup 再利用其為

我一開始對這門課的目標只是想單純上課認真抄筆記、作業好好 寫、絕不早退外,還從未想過會上台報告。雖然我是老師點到要

 Definition: A problem exhibits  optimal substructure if an ..

張愛玲說:「我們對於生活的體驗往往是第二輪的。」這句話應

中文科 宗教教育科 文化/社會層面 個人層面 文化知識和反思

Windows/ Linux/ Mac 各種平台的開發套件,使我們能夠透過各種平台來開發 Android 軟體,所有的 Android 應用程式都是使用 Java

針對 WPAN 802.15.3 系統之適應性柵狀碼調變/解調,我們以此 DSP/FPGA 硬體實現與模擬測試平台進行效能模擬、以及硬體電路設計、實現與測試,其測 試平台如圖 5.1、圖