【基于Verilog的自动售货机】
2017-04-16 本文已影响403人
大魔王是本人
【基础要求】
设计一个简单的自动售饮料机的逻辑电路。它的投币口每次只能投入一枚五角或一元的硬币。投入一元五角钱硬币后机器自动给出一杯饮料。投入两元(两枚一元)硬币后,在给出饮料的同时找出一枚五角的硬币)。
【顶层描述】
流程图【时钟分频及松手检测】
A.原理阐述:
按键按下时,电平突变时会有⼀一个明显的抖动期,⽽而且按键按下时间⼤大概会有60毫秒左右的持续时间。所以对按键的检测不能在板⼦晶振的上升沿检测按键点位是否为⾼高,⽽而应对时钟分频使得其约为25ms左右,跨过抖动区,且以松⼿手检测取代电平⾼高低检测,防⽌止按键按下时⻓比一时钟周期⻓长导致⼀一次按键,多次误判。
B.关键代码:
【按键】
首先,按键按下,电平突变时会有一个明显的抖动期,大约持续几个微秒。其次,按键按下时间大概会有60毫秒左右的持续时间,所以对按键的检测不能按照clk上升沿检测按键点位,而应进行松手检测。(如果不需要持续按下持续变动的功能)
【算法分析】
分频器把50MHz分频为大约40Hz,保证跳过抖动期。
【关键代码】
分频器 按键防抖&松手检测