台 灣 大 學 資 訊 工 程 學 倐 ntu csie digital circuit laboratory 數...

20
NTU CSIE Digital Circuit Laboratory 數位電路實驗 數位電路實驗 數位電路實驗 數位電路實驗 Final Project Project NameShooting Bird(小鳥 小鳥 小鳥 小鳥) 組:9 組:B97902019 蔡明驊 B97902028 王勝 B97902030 林運生 B97902074 張洺偉 指導教授 指導教授 指導教授 指導教授:甘宗左教授 指導教 指導教 指導教 指導教:薛名雄教 中華民國 100 01

Upload: others

Post on 17-Oct-2019

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

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

NTU CSIE Digital Circuit Laboratory

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

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

組別組別組別組別:9

組員組員組員組員:B97902019 蔡明驊

B97902028 王志勝

B97902030 林運生

B97902074 張洺偉

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

指導助教指導助教指導助教指導助教:薛名雄助教

中華民國 100年 01 月

Page 2: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

2

摘要摘要摘要摘要

這學期的數位電路實驗,我們開始接觸到一點硬體的東

西,從最原本的電壓、電阻和電流的量測,示波器的校準和

使用,最後摸到了 Altera DE2-70這塊板子,我們利用這塊板

子來操作一些邏輯閘的性質,實作加法、減法、多工器和簡

易 ALU。到了學期末,我們就被要求充分利用這塊板子,完

成我們無限的創意。

一開始我們進行討論,決定我們要做什麼?是要做實用

性目的,還是要做娛樂性目的。最後我們決定要做娛樂性目

的的射擊遊戲,接著我們便開始天馬行空地想像,把一切想

要的結果都歸納進來,緊接著是規劃期末時程表,按表操

課,過程中不斷遭遇各式各樣的難關,有些是可以解決的困

難,有些卻如同 P=NP般難題,雖不能說無解,但也是難度

頗高。最後,做的東西雖然和原本的設計理念有點不同,但

我們還是欣然接受,因為我們在過程中學到的東西遠比最後

呈現的簡單結果還多。

Page 3: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

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

Page 4: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

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可

供使用。

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

Page 5: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

5

(圖 1)

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

(圖 2)

Page 6: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

6

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

Quartus II使用 VHDL。VHDL(Very High Speed Integrated

Circuit Hardware Descrption Language的縮寫),顧名思義就是

硬體描述語言,是用來敘述硬體的行為特徵的語言。相關的

語法在這裡不做闡述,想要研究的人可以上網找相關資料或

者相關書籍。

Page 7: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

7

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

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

一開始我們四人不知道要做什麼好,所以決定每個人都

想一種,最後來投票,張洺偉想要做進階版的小朋友下樓

梯,就是會出現很多隨機的門,然後不知道走進去的門會通

到哪個門出來;蔡明驊想要做打磚塊,利用很多 OO 的概念;

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

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

丟東西的遊戲。

最後我們評估了一點發展可能性,決定要做射擊類的遊

戲,並且結合類似 Wii 的紅外線控制手槍來射擊物體,那時

候也想到如果最後做不出紅外線,也許可以來改造 PS/2的滑

鼠,因為 DE2-70也支援 PS/2接頭的鍵盤或滑鼠。

於是乎我們的主題就這麼定下來了,但是要射擊什麼物

體還沒決定,一開始也隨便講講,說要射蔡明驊或射什麼之

類的,沒想到開始構思程式的時候,就畫了一隻鳥,在螢幕

上面飛來飛去,感覺蠻合理的,就沿用到最後的 project主

題,所以我們就朝著射小鳥邁進,不過可惜的是,不但手槍

沒弄出來,連滑鼠也沒研究出來,還好還有個鍵盤,所以只

好改用鍵盤來代替。

Page 8: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

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 的結束畫面,接著就可以看分數,看你是不是

有進到我們的最高得分排行榜囉。

Page 9: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

9

(流程圖)

Page 10: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

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 種顏色,這感覺

相當不錯,原理也是平易近人,關鍵就是 X,代表十六進位

Page 11: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

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 次,可以說是非

常快,所以如果沒算好,咻一下就結束了,人眼也看不出來,

Page 12: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

12

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

了一秒。

Page 13: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

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即可重新再來。

Page 14: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

14

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

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

Page 15: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

15

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

遊戲結束的畫面:

Page 16: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

16

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

玩,得分 26):

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

開始遊戲。

Page 17: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

17

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

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

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

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

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

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

Page 18: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

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 輸

出,殘念。

Page 19: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

19

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

心路歷程:

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

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

筆。

2. 借的 DE2 板子似乎有點狀況,還好助教不畏辛勞,遠從

地球另一端伸出援手,即刻救援。

3. 第一次把雲和鳥印在上面,覺得世界非常奇妙,但是那

時候很陽春,配色也不全,正所謂鳥非鳥,雲是雲。

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

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

打鳥。

5. 進入無窮迴圈,於是想到了沒有子彈或時間倒數的限

制;加上了時間倒數,但是一開始跑太快了^^”,一下

子就結束,很是挫折,簡直盪到谷底。

6. 修正了時間倒數,完成了基本版,剩下時間幾乎都在研

究音效,但是還是搞不出來,彷彿剛看完明天過後,充

滿了無限悲傷。

7. 完成了某一些東西,就會再多想可以再多弄些什麼,結

果就是有點無限上綱,弄完了上色還不滿足,又弄了噴

血的畫面,又把時間倒數印在螢幕上,又….,導致最後

天天跨年,天天看日出。

Page 20: 台 灣 大 學 資 訊 工 程 學 倐 NTU CSIE Digital Circuit Laboratory 數 …b97030/Course/DCL/final/Report.pdf · 第一章 Altera DE2-70 介紹 在這次的實伿遊戲中,侷靽必須要先對所使用到的硬體

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