框图如下,pi_money是投递的一元硬币,三元出可乐,po_cola=1'b1时代表可乐出来,0时不出可乐
下面是状态图和波形图,总共三个状态
下面是rtl代码,状态机的编码这里采用的独热码(增加寄存器空间,减少逻辑资源使用),几个状态就需要几位寄存器。二进制码则是增加逻辑资源损耗,减小寄存器空间。格雷码只用于状态机非常多的时候。
module sample_fsm
(
input wire sys_clk,
input wire sys_rst_n,
input wire pi_money,
output reg po_cola
);
parameter IDLE = 3'b001;
parameter ONE = 3'b010;
parameter TWO = 3'b100;
reg [2:0] state;//独热玛,几个状态就需要几位的寄存器,类似的还有二进制码,格雷码等
always@(pos