为了锐捷网络杯B组赛题,进行FPGA的学习,并最终完成基于FPGA的温控风扇的实现。
第二天
状态机:描述时序系统的状态,简称为FSM(Finite State Machine),全称同步有限状态机。同 步指状态的变化只发生在时钟的上升沿或下降沿,有限指状态的数量有限。
分类:Moore型、Mealy型。
Moore型:输出只与状态有关,与输入无关。
Mealy型:输出既与状态有关,又与输入有关。
一个简单的例子:自助可乐贩卖机
一台贩卖售价为3元的可乐贩卖机,每次可投入1元硬币,投入三枚时出一瓶可乐。
首先分析它的输入输出和状态
输入:是否投入1元硬币(0表示没投,1表示投了)
输出:是否出可乐(0表示不出,1表示出)
状态:初始状态、有1元、有2元、有3元(等效于初始状态)
然后分析状态转换条件(画出状态转换图)
最后根据状态转换图编程、调试
程序及仿真代码
module simple_fsm (
input wire sys_clk ,
input wire sys_rst_n ,
input wire pi_one ,
output reg po_cola
);
parameter IDLE = 3'b001,
ONE = 3'b010,
TWO = 3'b100;
reg [2:0] state;
always@(posedge sys_clk or negedge sys_rst_n) begin
if(sys_rst_n == 1'b0)
state <= IDLE;
else case (state)
IDLE : state <= (pi_one == 1'b1 ? ONE : IDLE);
ONE : state <= (pi_one == 1'b1 ? TWO : ONE );
TWO : state <= (pi_one == 1'b1 ? IDLE : TWO );
default : state <= IDLE;
endcase
end
always@(posedge sy