【基礎要求】
設計一個簡單的自動售飲料機的邏輯電路。它的投幣口每次只能投入一枚五角或一元的硬幣。投入一元五角錢硬幣后機器自動給出一杯飲料。投入兩元(兩枚一元)硬幣后,在給出飲料的同時找出一枚五角的硬幣)。
【頂層描述】
流程圖
【時鐘分頻及松手檢測】
A.原理闡述:
按鍵按下時,電平突變時會有?一個明顯的抖動期,?而且按鍵按下時間?大概會有60毫秒左右的持續時間。所以對按鍵的檢測不能在板?晶振的上升沿檢測按鍵點位是否為?高,?而應對時鐘分頻使得其約為25ms左右,跨過抖動區,且以松?手檢測取代電平?高低檢測,防?止按鍵按下時?比一時鐘周期?長導致?一次按鍵,多次誤判。
B.關鍵代碼:
【按鍵】
首先,按鍵按下,電平突變時會有一個明顯的抖動期,大約持續幾個微秒。其次,按鍵按下時間大概會有60毫秒左右的持續時間,所以對按鍵的檢測不能按照clk上升沿檢測按鍵點位,而應進行松手檢測。(如果不需要持續按下持續變動的功能)
【算法分析】
分頻器把50MHz分頻為大約40Hz,保證跳過抖動期。
【關鍵代碼】
分頻器
按鍵防抖&松手檢測