您的位置:技术中心首页 > 电路基础 >> Mealy和moore型状态机的主要区别

Mealy和moore型状态机的主要区别

作者:未知   时间:2005-12-18 00:15:38  来自:网上转载  浏览次数:599  文字大小:【】【】【
状态机一般分为三种类型:
Moore型状态机:次态=f(现状,输入),输出=f(现状);
Mealy型状态机:次态=f(现状,输入),输出=f(现状,输入);
混合型状态机。

Moore型与Mealy型两种状态机的不同点在于,Moore型状态机的输出信号是直接由状态寄存器译码得到,而Mealy型状态机则是以现时的输入信号结合即将变成次态的现态,编码成输出信号。


进一步的理解可以参考下面的典型VERILOG代码:

// Example of a 5-state Mealy FSM
module mealy (data_in, data_out, reset, clock);

output data_out;
input [1:0] data_in;
input reset, clock;

reg data_out;
reg [2:0] pres_state, next_state;

parameter st0=3'd0, st1=3'd1, st2=3'd2, st3=3'd3, st4=3'd4;

// FSM register
always @ (posedge clock or negedge reset)
begin: statereg
if(!reset)// asynchronous reset
  pres_state = st0;
else
  pres_state = next_state;
end // statereg

// FSM combinational block
always @(pres_state or data_in)
begin: fsm
case (pres_state)
  st0: case(data_in)
  2'b00:     next_state=st0;
  2'b01:     next_state=st4;
  2'b10:     next_state=st1;
  2'b11:     next_state=st2;
  endcase
  st1: case(data_in)
  2'b00:     next_state=st0;
  2'b10:     next_state=st2;
  default:   next_state=st1;
  endcase
  st2: case(data_in)
  2'b0x:     next_state=st1;
  2'b1x:     next_state=st3;
  endcase
  st3: case(data_in)
  2'bx1:     next_state=st4;
  default:   next_state=st3;
  endcase
  st4: case(data_in)
  2'b11:     next_state=st4;
  default:   next_state=st0;
  endcase
  default: next_state=st0;
endcase
end // fsm

// Mealy output definition using pres_state and data_in
always @(data_in or pres_state)
begin: outputs
case(pres_state)
  st0: case(data_in)
  2'b00:     data_out=1'b0;
  default:   data_out=1'b1;
  endcase
  st1: data_out=1'b0;
  st2: case(data_in)
  2'b0x:     data_out=1'b0;
  default:   data_out=1'b1;
  endcase
  st3: data_out=1'b1;
  st4: case(data_in)
  2'b1x:     data_out=1'b1;
  default:   data_out=1'b0;
  endcase
  default: data_out=1'b0;
endcase
end // outputs

endmodule


// Example of a 5-state Moore FSM
module moore (data_in, data_out, reset, clock);

output data_out;
input [1:0] data_in;
input reset, clock;

reg data_out;
reg [2:0] pres_state, next_state;

parameter st0=3'd0, st1=3'd1, st2=3'd2, st3=3'd3, st4=3'd4;

//FSM register
always @(posedge clock or negedge reset)
begin: statereg
if(!reset)
  pres_state = st0;
else
  pres_state = next_state;
end // statereg

// FSM combinational block
always @(pres_state or data_in)
begin: fsm
case (pres_state)
  st0: case(data_in)
  2'b00:     next_state=st0;
  2'b01:     next_state=st4;
  2'b10:     next_state=st1;
  2'b11:     next_state=st2;
  endcase
  st1: case(data_in)
  2'b00:     next_state=st0;
  2'b10:     next_state=st2;
  default:   next_state=st1;
  endcase
  st2: case(data_in)
  2'b0x:     next_state=st1;
  2'b1x:     next_state=st3;
  endcase
  st3: case(data_in)
  2'bx1:     next_state=st4;
  default:   next_state=st3;
  endcase
  st4: case(data_in)
  2'b11:     next_state=st4;
  default:   next_state=st0;
  endcase
  default: next_state=st0;
endcase
end // fsm

// Moore output definition using pres_state only
always @(pres_state)
begin: outputs
case(pres_state)
  st0:   data_out=1'b1;
  st1:   data_out=1'b0;
  st2:   data_out=1'b1;
  st3:   data_out=1'b0;
  st4:   data_out=1'b1;
  default: data_out=1'b0;
endcase
end // outputs

endmodule // Moore

责任编辑:5life

更多相关 Mealy moore 状态机 的文章

状态机性能考察 [2006-01-14]
本文共有0条评论,现在显示最新的5条。

栏目导航

电路基础
硬件语言
逻辑验证
电路综合
后端设计
可测设计
基本逻辑
制造工艺
书籍精选
说文解字
工具学习
数字滤波
趣闻逸事
数字锁相
设计杂项
低耗设计

站点最新

更多相关链接

  上拉电阻下拉电阻的总结
  场效应管与三极管的性能比较
  TTL电路
  TTL和CMOS电平总结
  状态机性能考察
  使用Verilog实现基于FPG...
  芯片设计中的IP技术
  认识IC Layout
  基本数字逻辑单元
  CMOS反向器版图

栏目最新

更多相关链接

  上拉电阻下拉电阻的总结
  场效应管与三极管的性能比较
  TTL电路
  TTL和CMOS电平总结
  状态机性能考察
  使用Verilog实现基于FPG...
  芯片设计中的IP技术
  认识IC Layout
  基本数字逻辑单元
  CMOS反向器版图

热点文章

更多相关链接