状态机也称为同步有限状态机,分为more型状态机(最后的输出只与当前状态有关,而与输入无关)和mealy型状态机(最后的输出不仅与当前状态有关,还与输入有),适合用来表示事件发生有先后顺序的情况。这里以可乐机为背景,可乐售价为3元/瓶,一元一元投币,每投入到3元自动出一瓶可乐。
这里设置的输入信号包括时钟sys_clk,复位sys_rst_n以及投币信号pi_money,输出为是否有可乐投出po_cola。
首先绘制一个状态转移图,在状态转移图上可以清楚地表达出各状态的输入输出,跳转的条件和功能,一个完整的状态转移图需要包含三要素:一是输入,二是输出,三是状态。在可乐机中输入为一元硬币,输出是出可乐或者不出可乐,状态是投入0元,投入1元,投入2元,投入3元。
斜线左边表示是否有钱投入,0表示没有钱投入,1表示有钱投入;右边是是否有可乐输出,0表示没有,1表示有,即0/0表示不投钱,不输出可乐,继续维持在IDEL初始状态。若投入1元钱,则跳转到ONE状态,但是仍然没有可乐输出,从IDEL状态跳转到ONE状态跳转条件