數位電路實驗 – 交大修課心得
課程資料
數位電路實驗
開課:陳健老師
修課年度:99資工系
這門課是教如何利用 Verilog 硬體描述語言來設計數位電路。感覺前半段很偏向數位電路設計的部份,一直關注 gate level。接著主要的主題是 finite-state machine。後來上機課開始使用 FPGA ,透過 Verilog 來設計並合成許多遊戲類的電路。最後上課的內容則是 coding style,debug 經驗談,以及一些 Intel 設計 CPU 的小故事等等。
主要教科書是《Digital Design》,但大體上除了最後有一個作業以外,幾乎是不會用上。不過感覺裡頭的 Verilog 練習題應該能提供不錯的訓練(寫完該作業後的心得)。
參考教科書有數本
- 《Verilog HDL》
- 《The Verilog Hardware Description Language》
- 《Verilog HDL Synthesis, A Practical Primer》
我看過的有第一和第三本,第一本是相當不錯的 Verilog 語言教材,第三本有些枯燥,不過看完對合成能有更多了解。基本上每本書內容都不多,Verilog 語言的語法會用到的部份其實是相當的少。
其他關於數位電路實驗的議題可參考:〈數位電路實驗〉。
上課方式
上課是用投影片教學,一部分是《Digital Design》 的投影片,另一部分據稱是據稱是 MIT 的講義。最後還會有另一系列的投影片後來才出現。
助教會在上課時先公佈下週要 demo 的作業。而晚上是上機課,要在下課前 demo 上週派的作業。
考試作業
這學期的上機有 10 個:
Lab 0 是熟悉 Xilinx ISE 軟體的使用,只要複製助教的 code 即可。
Lab 1 是熟悉 FPGA 板的使用,它看起來很像一般的網路卡等等,上面有 LED 燈、按鈕、還有螢幕、滑鼠、鍵盤接頭。用上面的開關當作輸入,LED 當作輸出,實做一個 2-bit decoder。剛拿到板子真的很興奮,和跑軟體模擬感覺大不同。
Lab 2 是要用 gate level (直接用 and, or, not 等 gates) 來設計一個 4-bit comparator。
Lab 3 是做一個 Stack,和另一班的範例很像。
Lab 4 是用板子的 LED 燈顯示各種不同的閃燈,還可以切換速度!這裡一直遇到板子的問題,按鈕常常沒有反應,一直要換板子,懷疑怎麼有那麼多壞板子。到後來的 lab 6 助教提供 ucf 設定檔後,才不易再遇到同樣問題。
Lab 5 是撲克牌遊戲機,抽排比大小,用軟體模擬的方式檢查是否正確。
Lab 6 則是把 lab 5 小小修改使其可以合成到 FPGA 板上,讓兩個人能抽牌比大小。用板上的 LED 燈顯示排大小和勝負,用板上的按鈕決定是否抽牌。其實玩比大小也可以玩得很開心。
Lab 7 是利用板子上的旋鈕和 VGA 接頭,在螢幕上輸出一個可被旋鈕控制的圓圈。旋鈕的輸入助教都幫我們寫好了,只要直接讀取它的值就知道是左轉還是右轉。螢幕的輸出也是,只要讀取就能知道目前的座標,再給該座標應該輸出什麼顏色就行了。
VGA 的原理可參考〈Pong Game〉
Lab 8 是 OOXX 遊戲,也是透過螢幕輸出。這次最主要的主題是如何從 ROM 中讀取圈和叉的圖像並輸出至正確的位置。
Lab 9 是打磚塊遊戲。將之前 labs 所有技巧都用上,總分加倍,很多 bonus 的最後專題。
筆者當初的期末專題打磚塊遊戲已開放原始碼於 ArkanoidOnVerilog @ github,其中也包含了我們整個修改的歷史,歡迎參考。
考試方面有三次上機考,第一次上機是用 gate level 寫,考你如何把複雜的邏輯化簡成容易實做的邏輯。(會這麼說是因為筆者覺得時間非常短,光打字就很趕了)第二次上機難度降低,是 State Machine。第三次上機考的比較久,是用 FPGA 板,考 VGA 的使用,也是寫遊戲。
除此之外還有紙筆測驗期中考。期中考意外的出了很多算的上是「數位電路設計」那堂課的範疇,像是 State transition table 等等。本來有期末考,但取消了。
期末時派了幾題 Digital Design 課本的 Verilog 習題,老實說不是很好寫,我幾乎花了寫打磚塊一半的時間才完成。上課曾經小考過一還兩次,還有幾次是寫建議問題算是點名吧。
結語
有時有外籍生問老師問題後老師就會維持用英語授課一段時間,大家都會心一笑。偶而有小考或寫問題心得不會事先通知。
感覺修數位電路設計的時候就順便玩玩 Xilinx ISE 好像也不錯,在網站上就可以下載了:〈Xilinx Downloads〉。
這門課要讀的東西不多但寫作業很花時間。實做類的課程就是多練習就有進步。
文章作者 Shaform
上次更新 2019-01-17
授權條款 保留所有權利