原创 [博客大赛]moore状态机和mealy状态机

2013-4-24 17:19 1215 11 12 分类: FPGA/CPLD

状态机分为moore状态机和mealy状态机。  

 Mealy状态机的输出信号是当前状态和所有输入信号的函数,mealy状态机的输出时在输入变化后立即发生变化,且输入变化可能出现在时钟周期的任何时候,mealy型状态机对输入的响应比moore型状态机对输入的响应早一个时钟周期。

    Moore型状态机的输出只与当前状态有关,而与输入无关,moore型状态机时钟跳变后的有限个门延迟之后,输出达到稳定值,输出会在一个完整的周期内稳定,即使在该时钟周期内输入信号有变化,输出也不会变化。输入对输出的影响要到下个周期才能反映出来。

下面以序列检测程序11010011

moore型状态机

 

module SCHK(input clk,input din,input rst,output sout);

  parameter s0=0,s1=1,s2=2,s3=3,

            s4=4,s5=5,s6=6,s7=7,s8=8;

 

reg[8:0] st,nst;

  always@(posedge clk,posedge rst)

   if(rst) st<=s0;

   else st<=nst;

       

  always@(st,din)

   begin

     case (st)

       s0:if(din==1'b1) nst<=s1;else nst<=s0;

       s1:if(din==1'b1) nst<=s2;else nst<=s0;

       s2:if(din==1'b0) nst<=s3;else nst<=s0;

       s3:if(din==1'b1) nst<=s4;else nst<=s0;

       s4:if(din==1'b0) nst<=s5;else nst<=s0;

       s5:if(din==1'b0) nst<=s6;else nst<=s0;

       s6:if(din==1'b1) nst<=s7;else nst<=s0;

       s7:if(din==1'b1) nst<=s8;else nst<=s0;

       s8:if(din==1'b0) nst<=s3;else nst<=s0;

       default :nst<=s0;

     endcase

   end

   assign sout=(st==8);

 endmodule

 

mealy状态机

 

module test1(input clk,input din,input rst,output reg sout);

  parameter s0=0,s1=1,s2=2,s3=3,

            s4=4,s5=5,s6=6,s7=7,s8=8;

 reg[8:0] st,nst;

 

  always@(posedge clk,posedge rst)

   if(rst) st<=s0;

   else st<=nst;

  always@(st,din)

   begin

   sout=0;

     case (st)

       s0:if(din==1'b1) nst<=s1;else nst<=s0;

       s1:if(din==1'b1) nst<=s2;else nst<=s0;

       s2:if(din==1'b0) nst<=s3;else nst<=s0;

       s3:if(din==1'b1) nst<=s4;else nst<=s0;

       s4:if(din==1'b0) nst<=s5;else nst<=s0;

       s5:if(din==1'b0) nst<=s6;else nst<=s0;

       s6:if(din==1'b1) nst<=s7;else nst<=s0;

       s7:if(din==1'b1) begin sout=1;

               nst<=s8;end

 

              else nst<=s0;

       s8:if(din==1'b0) nst<=s3;else nst<=s0;

       default :nst<=s0;

     endcase

   end

 endmodule

 

 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1673212 2013-5-2 12:38

mealy型往往比moore型更浩触发器资源,我更喜欢用moore型描述。
相关推荐阅读
用户436722 2014-12-31 09:45
makefile 中赋值符号的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为: ifdef DEFINE_VRE  ...
用户436722 2014-11-06 14:48
评论:@IC后端设计 布局布线面试题 博客中提到的“逻辑设计:Fanout与Skew”
分析的很翔实...
用户436722 2014-10-16 09:40
FPGA与ASIC、CPLD的比较
FPGA与ASIC、CPLD的比较 1、FPGA与ASIC ASIC相对于FPGA的优势:(1) 功耗更低:ASIC由于其门控时钟结构和异步电路设计方...
用户436722 2014-10-11 09:32
TCL 与Perl 在IC 设计中的应用
TCL 与Perl 在IC 设计中的应用   论坛上看到关于tcl和perl的应用,做个备份。 就TCL 而言,主要是因为synopsys 以这个语言为基础,在...
用户436722 2014-09-17 19:36
锁存器与寄存器的区别
首先应该明确锁存器和触发器也是由与非门之类的东西构成。尤其是锁存器,虽说数字电路定义含有锁存器或触发器的电路叫时序电路,但锁存器有很多组合电路的特性。 组合电路就是一个真值表,一个函数,一组输...
用户436722 2014-08-06 16:43
VHDL与Verilog在参数传递与端口映射的总结
最近在准备找工作,复习了一下VHDL与Verilog的语法知识,以前大多用Verilog写代码,突然写VHDL总是有点不适应,特别在运算符,操作符上,两种语言差别比较大,还有一些常用的语句,比如i...
EE直播间
更多
我要评论
1
11
关闭 站长推荐上一条 /3 下一条