【Verilog】时序逻辑电路 -- 有限同步状态机[补充]

有限同步状态机

  • 在我上一篇博客中,我有对有限同步状态做简单的举例说明,在这个地方有一个极小的细节需要注意:状态机的是否需要考虑已有状态
接收110111的有限同步状态机
  • 状态设计
    • parameter S0 = 3’b000; //初始状态
    • parameter S1 = 3’b001; //接收到1的状态
    • parameter S2 = 3’b010; //接收到11的状态
    • parameter S3 = 3’b011; //接收到110的状态
    • parameter S4 = 3’b100; //接收到1101的状态
    • parameter S5 = 3’b101; //接收到11011的状态
    • parameter S6 = 3’b110; //接收到110111的状态
不考虑已有状态
  • 状态转移图
    不考虑之前状态

  • 转移图解释:

    • 在S2状态时,已接收到数据11
      • 当下一个接收数据为0则跳到状态S3;
      • 当下一个接收数据为1时,此时收到数据为111,由于不考虑之前数据状态,故有效数据为1,跳转到S1状态
    • 在S3、S4、S5状态时
      • 当下一个接收数据为1则跳转到当前状态的下一个有效状态
        • S3 -> S4
        • S4 -> S5
        • S5 -> S6
      • 当下一个接收数据为0,由于不考虑之前数据状态,故此时有效数据只有0,跳转到初始状态S0
    • 在S6状态时,已接收到数据110111,对于不考虑之前数据状态而言,此时无有效数据
      • 当下一个数据为0则跳转到初始状态S0;
      • 当下一个数据为1则跳转到有效状态为1的S1
考虑已有状态
  • 状态转移图
    考虑之前状态

  • 转移图解释:

    • 在S2状态时,已接收到数据11
      • 当下一个接收数据为0则跳到状态S3;
      • 当下一个接收数据为1时,不直接跳转到初始状态,而是保持在S2状态(下一个跳转的状态依然为S2);
    • 在S5状态时,已接收到数据11011
      • 当下一个接收数据为1则跳转到状态S6;
      • 当下一个接收数据为0,此时收到的数据为110110,有效数据为110,故下一状态跳转到S3,而不是直接跳转到初始状态;
    • 在S6状态时,已接收到数据110111
      • 对于不考虑已有状态的情况,已接收到有效数据,下一数据收到0会跳转到初始状态S0,下一数据收到1会跳转到状态S1;
      • 对于考虑已有状态的情况,下一数据收到0,收到数据为1101110,有效数据为110,会跳转到状态S3,下一个数据收到1,收到数据为1101111,有效数据为11,会跳转到状态S2
两者区别
思维逻辑区别
  • 两者从思维逻辑上最简单的区别就是:在某一状态有新数据到来时,是否考虑已接收到的数据
  • 对于检验某数据中是否有给定序列时,
    • 考虑已接收到数据,不仅会大大降低检验所需的时间,更重要的是在检测中不会漏掉每一块该被检测的数据;
    • 而不考虑已接收到数据有一定机会会漏掉数据,从而得到错误的结果
一个小例子
  • 以上文中所给的数据相同,需检测"110111"数据是否存在在所接收数据"11011011111"中
    • 首先根据已知进行判断,接收数据中存在需检测序列"110111" -> 11011011011111

    • 接着用状态机逻辑进行验证:
      对比例子

      • 考虑已有数据状态:
        • 在检测到11011011111时,下一个接收到的数据为0,不满足110111的检验序列,此时有效数据为110,11011011111,跳转到状态S3;
        • 在检验到11011011111时,下一个接收到的数据为1,满足110111的检验序列,此时输出结果z = 1表示检验到数据110111
        • 得出结果:存在需检验序列110111
      • 不考虑已有状态:
        • 在检测到11011011111时,下一个接收到的数据为0,不满足110111的检验序列,此时有效数据为0,跳转到状态S0;
        • 在检验到11011011111时,无下一个数据,不满足110111检验序列,此时输出结果z = 0表示未检验到序列110111
        • 得出结果:不存在需检验序列110111
      • 显而易见:不考虑已有状态会得出错误结果
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值