20220421——有限状态机fsm设计

一.有限状态机的基本结构和功能

  • FSM (Finite State Machine)是数字逻辑电路以及数字系统的重要组成部分,尤其应用于数字系统核心部件的设计,实现高效率高可靠性逻辑控制
  • 可替代MCU,或在MCU中做规范设计

时序逻辑:控制状态,需要时钟

两个基本功能:

  • 根据当前状态和输入条件完成内部状态转换
  • 根据当前状态和输入条件产生输出信号序列

用三进程状态机实现一个简单自动售货机控制电路,电路框图如下图有两个投币口(1元和5角),商品2元一件,不设找零ln[0]表示投入5角,ln[1]表示投入1元,Out表示是否提供货品

S0(00001):初始状态,未投币或已取商品

S1(00010):投币5角

S2(00100):投币1元

S3(01000):投币1.5元

S4(10000):2元及以上

独热码表示状态编码

二.状态机状态编码

  1. 二进制编码方式:用N位二进制数,表示M个工作状态,。3位二进制可表示不多于8个状态
  2. 一位热码编码方式:N位二进制数表示N个状态,每位编码对应一个触发器,每个状态由其中一个触发器的状态来表示 。3位二进制可表示不多于3个状态

三.有限状态机的技术优势

  • 设计方案相对固定,模式简单,可定义符号化枚举类型的状态
  • 状态机Verilog HDL 描述层次分明,结构清晰,易读易懂
  • 基于有限状态机设计技术的控制器工作速度大大优于CPU
  • 基于有限状态机设计技术的控制器可靠性也优于CPU

四.有限状态机的分类

 五.有限状态机的Verilog模式

 例:一般有限状态机设计及组成

module fsm_seq101(clk,clr,x,z);
input clk,clr,x;
output reg z;
reg[1:0] state,next_state;
parameter S0=2'b00,S1=2'b01,S2=2'b11,S3=2'b10;  //状态编码,格雷码

always@(posedge clk or posedge clr) //过程一,现态定义
begin
 if(clr)state<=S0;
 else state<=next_state;
end

always@(state or x)  //过程二,次态定义
begin
case(state)
 S0: begin if(x) next_state<=S1;
           else  next_state<=S0;
     end
 S1: begin if(x) next_state<=S1;
           else  next_state<=S2;
     end
 S2: begin if(x) next_state<=S3;
           else  next_state<=S0;
     end
 S3: begin if(x) next_state<=S1;
           else  next_state<=S2;
     end
default:  next_state<=S0;
endcase
end

always@(state) //过程三,输出组合逻辑
begin  case(state)
           S3:z=1'b1;
           default:z=1'b0;
       endcase
end
endmodule

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值