# BCD上數非同步計數器 ![](https://i.imgur.com/IofcDNi.png) * 班  級:資工二2 * 姓  名:黃柏諭 * 指導老師:林宏益 --- # 實驗內容 * **實驗目的:** 設計一個BCD上數計數器,且必須包含非同步清除功能。 * **運用軟體:** VS Code & GTKWAVE * **實驗步驟:** 1. 撰寫簡報RTL Code中,if的程式碼。 2. 按照輸入、輸出、時脈與rst,撰寫testbench。 3. 運用Makefile產生.vcd檔。 4. 使用GTKWAVE產生波形圖。 --- # 程式碼 * BCD_Counter.v {%gist 0d1662d6f1e4155c2b7022a66f353fd8 %} * BCD_Counter_tb.v {%gist 25f697fac01f6e0d67b90795b7035328 %} * Makefile {%gist a22cbda966a136aa782688c840e233d2 %} --- # 實驗結果 ![](https://i.imgur.com/c3Bnon2.png) --- # 結論心得 經過上次寫過testbench,有了經驗之後,感覺這次的作業變得挺容易了,而這次也運用到之前Blocking寫過的clk程式碼,而由於我目前沒有必要去改變設定好的值,因此我的週期直接給定常數。 比較需要注意的部分是在設定rst觸發的時機,因為我們是設計非同步清除,因此必須設定其在非正緣(依題目而定,有可能是負緣觸發)的情況下觸發,因此我才在BCD_Counter_tb.v第16行給定一個很隨便的數值。 如果剛好將值定在正緣處(16行改成#40),則會無法判斷是同步或非同步清除。 [GitHub](https://github.com/Midorante/BCD_Counter.git)