一、设计要求
可乐机每次投1枚一块硬币,每瓶可乐3块钱,投3个硬币就可以出可乐。
二、模块设计
分析
一个简单的状态转移图,由此编写代码。
四、代码编写
module simple_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'b001;
parameter TWO = 3'b001;
reg [2:0] state ;
always@(posedge sys_clk or negedge sys_rst_n)
if(!sys_rst_n)
po_cola <= 1'b0 ;
else case(state)
IDLE : if(pi_money==1'b1)
state <= ONE ;
else
state <= IDLE ;
ONE : if(pi_money==1'b1)
state <= TWO ;
else
state <= ONE ;
TWO : if(pi_money==1'b1)
state <= IDLE ;
else
state <= TWO ;
default state <= IDLE ;
endcase
always@(posedge sys_clk or negedge sys_rst_n)
if(!sys_rst_n)
po_cola <= 1'b0 ;
else if((pi_money==1'b1)&&(state==TWO))
po_cola <= 1'b1 ;
else
po_cola <= 1'b0 ;
endmodule
五、RTL视图
这篇想找一个简单的状态机实例,没有找到,下一篇开始进一阶,数码管驱动。
不啻微芒,造炬成阳。