zoukankan      html  css  js  c++  java
  • 每天进步一点点------基础实验_12_有限状态机 :Moore型序列检测器

     1 /*********************************************************************************
     2 * Company                    : 
     3 * Engineer                    : 空气微凉
     4 * 
     5 * Create Date                : 00:00:00 22/03/2013 
     6 * Design Name                : 
     7 * Module Name                :         
     8 * Project Name                :  
     9 * Target Devices            : 
    10 * Tool versions            : 
    11 * Description                :  
    12 *                       http://www.cnblogs.com/kongqiweiliang/             
    13 * Dependencies                : 
    14 *
    15 * Revision                    : 
    16 * Revision                    : 0.01 - File Created
    17 * Additional Comments    : 基础实验_12_有限状态机 :Moore型序列检测器
    18 ********************************************************************************/
    19 `timescale 1ns/1ps
    20 `define    UD  #1
    21 /*******************************************************************************/
    22 module SEQ_REC_MOORE    
    23 ( 
    24     //system interface
    25     input                                     iCLK_50        ,//50MHz
    26     input                                     iRESET         ,//system interface
    27     //Interface package
    28     input                                     iDAT_EN        ,//
    29     input                                     iDAT            ,//
    30     output                                oDAT             //
    31 );  
    32 //-------------------------------------------------------------------------------
    33 parameter   FSM_IDLE    =    3'h0;
    34 parameter   FSM_0        =    3'h1;
    35 parameter   FSM_1        =    3'h2;
    36 parameter   FSM_2        =    3'h3;
    37 parameter   FSM_3        =    3'h4;
    38 
    39 reg  [2:0]  FSM_CS;
    40 reg  [2:0]  FSM_NS;
    41 
    42 // Moore状态机的输出只与有限状态机的当前状态有关,与输入信号的当前
    43 // 值无关。 Moore有限状态机在时钟CLOCK脉冲的有效边沿后的有限个门延后,
    44 // 输出达到稳定值。即使在一个时钟周期内输入信号发生变化,输出也会在一个
    45 // 完整的时钟周期内保持稳定值而不变。输入对输出的影响要到下一个时钟周期
    46 // 才能反映出来。   
    47 // Moore有限状态机最重要的特点就是将输入与输出信号隔离开来。
    48 
    49 // 序列检测的作用是,先根据要检测的序列设计好状机的跳转,状态机会去匹配
    50 // 指定的序列,在检测到符合要求后,保持一个CLK的脉冲
    51 always@(posedge iCLK_50 or negedge iRESET)begin
    52     if(!iRESET)
    53         FSM_CS <= FSM_IDLE;
    54     else
    55         FSM_CS <= FSM_NS;
    56 end
    57 always@(*)begin
    58     case(FSM_CS)
    59         FSM_IDLE    : 
    60                         if(iDAT_EN && iDAT)                FSM_NS = FSM_1;
    61                         else if(iDAT_EN && (!iDAT))      FSM_NS = FSM_0;
    62                         else                                  FSM_NS = FSM_IDLE;
    63         FSM_0        :
    64                         if(!iDAT)                              FSM_NS = FSM_0; 
    65                         else if(iDAT)                         FSM_NS = FSM_1; 
    66                         else                                  FSM_NS = FSM_IDLE;
    67         FSM_1        :
    68                         if(!iDAT)                              FSM_NS = FSM_0; 
    69                         else if(iDAT)                         FSM_NS = FSM_2; 
    70                         else                                  FSM_NS = FSM_IDLE;
    71         FSM_2        ,
    72         FSM_3        :
    73                         if(!iDAT)                              FSM_NS = FSM_0; 
    74                         else if(iDAT)                         FSM_NS = FSM_3; 
    75                         else                                  FSM_NS = FSM_IDLE;
    76         default  : 
    77                          FSM_NS = FSM_IDLE;
    78     endcase
    79 end
    80 
    81 assign oDAT = (FSM_CS == FSM_3) ? 1'h1 : 1'h0;
    82 //-------------------------------------------------------------------------------
    83 endmodule 
  • 相关阅读:
    10 个迅速提升你 Git 水平的提示
    git-自动补全
    Andriod Atom x86模拟器启动报错
    Android SDK Manager 无法更新SDK
    tiny4412 解决内核编译版本号问题
    Move resources allocated using unmanaged interface to managed devm interface
    原理图学习
    解决tiny4412在win7 64位上adb无法使用失败的问题
    popcount 算法分析
    linux中断申请之request_threaded_irq
  • 原文地址:https://www.cnblogs.com/kongqiweiliang/p/3246501.html
Copyright © 2011-2022 走看看