Skip to content

Latest commit

 

History

History
95 lines (64 loc) · 2.33 KB

readme.md

File metadata and controls

95 lines (64 loc) · 2.33 KB

數位系統設計

期末作業報告


預期目標

SW="00000000"

一般時鐘功能 ->bt0切換24/12小時制

SW="00000001"

設定鬧鐘時間 鬧鐘時間到了發出脈衝(會有喇叭)

SW="00000010"

碼表(十個紀錄) ->bt0 reset ->bt1 record/display ->bt2 查看紀錄

SW="00000011"

計時器 ->bt0 調整秒(只能往上) ->bt1 調整分(只能往上) ->bt2 設定

最終成果

SW="00000000"

一般時鐘功能 ->bt2切換24/12小時制

SW="00000001"

設定時間 -> bt2切換24/12小時制 -> bt1 設定分鐘 -> bt0 設定小時

SW="00000010"

碼表(十個紀錄) ->bt2 reset ->bt1 record/display ->bt0 查看紀錄

SW="00000100"

設定鬧鐘時間 ->bt1 設定分鐘 ->bt0 設定小時

SW="00001000"

計時器 ->bt2 reset ->bt1 設定秒數(往上) ->bt0 開始倒數


架構

main.vhd             ->主程式
|-clokc.vhd          ->時鐘
|  |-todigits.vhd    ->時分秒轉四個數字
|  |-thtf.vhd        ->12/24進制切換
|-stopwatch.vhd      ->碼表
|  |-digits.vhd      ->四位數字轉四個數字
|-alarm.vhd          ->鬧鐘
|  |-todigits.vhd
|-countdown.vhd      ->計時器
|  |-digits.vhd
|-seven_dig.vhd      ->將四個數字轉成七段位顯示器

心得

這次數位系統設計我是選擇第二題時鐘來實作,過程中大概只有最一開始的clock模組我製作花比較多時間,因為我將該提的三個功能(12/24進制、調整時間、基礎時鐘)整合在同一個vhd檔,而且我剛設計完事一秒動一次(顯示分鐘的那兩格),因此我又加入了除頻器,同時想讓分時之間的點召秒數閃動,切到12進制時又希望能知道是下午,在處裡四個點時花了不少時間。

其他功能我實作花的時間就相對來的少了,比較花時間的是鬧鐘,因為要將時鐘的結果和鬧鐘裡的變數比較,而鬧鐘響時因為我原先是設計能外接喇叭,因此我除了閃爍外,他亮起來時的燈是以220Hz快速明暗(如果接喇叭會是220Hz脈衝波間格一秒叫一次),雖然從Demo看不出來但能從code看出來;另外計時器我原先也加入跟鬧鐘一樣能接喇叭,但他不知道為甚麼壞掉了,而導致像Demo影片中一樣只有亮著。

Demo

Demo