zoukankan      html  css  js  c++  java
  • Verilog -- 序列检测器及其最小状态数

    Verilog -- 序列检测器及其最小状态数

    笔试题:序列检测器检测11011001序列,最少需要几个状态?

    Mearly 型:

    StateInput 0 1
    IDLE 0 1
    0 0 1
    1 0 11
    11 110 11
    110 0 1101
    1101 0 11011
    11011 110110 11
    110110 1101100 1101
    1101100 0 110110011
    11011001 0 11

    表格中的值代表:nextstateoutput
    化简:
    下面的状态可以合并:IDLE / 0 /
    所以最少的状态数=9.
    因为mearly型的输出与输入和当前态都有关,所以可以做到序列最后一位进入状态机匹配后立即产生高电平。

    注意

    这里的最后一个状态在输入1的时候可以跳转到11状态,实际上,在某个输入下不匹配序列或者已经匹配完一整串序列时,都应该检查将这一输入拼接到串里后,序列中是否会出现能够匹配上面某个状态序列的子串,如果存在,则将这一输入对应的状态跳转到匹配的最长子串所表示的状态中。

    moore型

    StateInput 0 1 output
    IDLE 0 1 0
    0 0 1 0
    1 0 11 0
    11 110 11 0
    110 0 1101 0
    1101 0 11011 0
    11011 110110 11 0
    110110 1101100 1101 0
    1101100 0 11011001 0
    11011001 0 11 1

    表格中的值代表:nextstate
    化简:
    下面的状态可以合并:IDLE / 0
    所以最少的状态数:8+1=9.
    因为moore型的输出只与当前态都有关,所以序列最后一位进入状态机匹配后还要等待一个周期进入最后的状态才能输出高电平。

    总结

    • 对于Mearly型描述的序列检测器,序列长度为(n),对于最少需要的状态数,需要看最后一个状态是否能跳转到除了起始状态的其他状态,如果不能,则最少需要的状态就是(n)(因为可以和初始状态合并),如果可以,则最少需要的状态就是(n+1)
    • 对于Moore型描述的序列检测器,序列长度为(n),则最少需要的状态数就是(n+1)
    • mearly型的输出在序列的最后一个比特输入完后立即产生
    • moore型的输出因为无法根据输入改变而改变,所以其输出会比mearly型慢一拍。

    ps:仿真代码有时间再写吧。。。

  • 相关阅读:
    Swift网络库Alamofire的导入
    iOS书摘之Objective-C编程之道 iOS设计模式解析
    Crash日志分析
    自动布局库--Masonry使用
    Xcode Ghost
    Xcode8-beat升级需谨慎
    UIView剖析之Draw、Size、Layout方法
    Xcode警告忽略
    属性(property)与成员变量(ivar)
    sql server分页存储过程
  • 原文地址:https://www.cnblogs.com/lyc-seu/p/12581415.html
Copyright © 2011-2022 走看看