111序列检测器

  • 有限状态机简介
    • 电路结构
  • '111'序列检测器
    • Moore状态机
      • 代码实现
    • Mealy状态机
      • 代码实现
  • 有关三段式和两段式的对比
  • 有关可重叠和不可重叠序列的对比

有限状态机简介

电路结构

由组合逻辑电路和存储电路组成。组合逻辑可以分为C1和C2部分。

经典状态机结构示意图

'111’序列检测器

设计一个“111”序列检测器,当输入三个或三个以上的“1”时,电路输出为1,否则为0。

Moore状态机

Moore状态机的输出仅依赖于当前状态而与输入无关。

有限状态机的结构

状态转移图

代码实现

功能模块:
三段式

// seqdata_moore
module seqdata_moore (output  reg   dout,input   wire  clk,input   wire  rst,input   wire  din
);reg [1:0] curr_state;reg [1:0] next_state;parameter IDLE  = 2'b 00;parameter S1    = 2'b 01;parameter S2    = 2'b 10;parameter S3    = 2'b 11;always @ (posedge clk or negedge rst) beginif (!rst)curr_state  <=  IDLE;elsecurr_state  <=  next_state;endalways @ (*) begincase (curr_state)IDLE: if (din == 1)  next_state <=  S1;else           next_state  <=  IDLE;S1:if (din == 1)  next_state <=  S2;else           next_state  <=  IDLE;S2:if (din == 1)  next_state <=  S3;else           next_state  <=  IDLE;S3: if (din == 1)  next_state <=  S3;else           next_state  <=  IDLE;default:next_state  <=  IDLE;endcaseend// 体现了Moore机的特点:输出由当前状态决定always @ (*) beginif (curr_state == S3) dout <=  1;else                  dout <=  0;endendmodule

两段式

// seqdata_moore
module seqdata_moore (output  reg   dout,input   wire  clk,input   wire  rst,input   wire  din
);reg [1:0] curr_state;reg [1:0] next_state;parameter IDLE  = 2'b 00;parameter S1    = 2'b 01;parameter S2    = 2'b 10;parameter S3    = 2'b 11;always @ (posedge clk or negedge rst) beginif (!rst)curr_state  <=  IDLE;elsecurr_state  <=  next_state;end// 将组合逻辑合成一段always @ (*) begincase (curr_state)IDLE: if (din == 1)  begin  next_state <=  S1;    dout <= 0;  endelse           begin  next_state <=  IDLE;  dout <= 0;  endS1:if (din == 1)  begin  next_state <=  S2;    dout <= 0;  endelse           begin  next_state <=  IDLE;  dout <= 0;  endS2:if (din == 1)  begin  next_state <=  S3;    dout <= 0;  endelse           begin  next_state <=  IDLE;  dout <= 0;  endS3: if (din == 1)  begin  next_state <=  S3;    dout <= 1;  endelse           begin  next_state <=  IDLE;  dout <= 1;  enddefault:  begin  next_state <=  IDLE;  dout  <= 0;  endendcaseendendmodule

测试模块:

// testbench of 'seqdata_moore'
module seqdata_tb ();wire  dout;reg   clk;reg  rst;reg   din;seqdata_moore seqdata_moore0 (.dout(dout), .clk(clk), .rst(rst), .din(din));always #10 clk = ~clk;initial beginclk = 0;rst = 0;din = 0;#50 rst = 1;#20 din = 1;#20 din = 0;#20 din = 1;#40 din = 0;#20 din = 1;#60 din = 0;#20 din = 1;endendmodule

仿真波形:

Mealy状态机

Mealy状态机的输出与当前状态和输入有关。

有限状态机的结构

状态转移图

代码实现

功能代码:

module seqdata_mealy (output  reg   dout,input   wire  clk,input   wire  rst,input   wire  din
);reg [1:0] curr_state;reg [1:0] next_state;parameter IDLE  = 2'b 00;parameter S1    = 2'b 01;parameter S2    = 2'b 11;always @ (posedge clk or negedge rst) beginif (!rst)curr_state  <=  IDLE;elsecurr_state  <=  next_state;endalways @ (*) begincase (curr_state)IDLE:if (din == 1) begin next_state <= S1;   dout <= 0;  end  else          begin next_state <= IDLE; dout <= 0;  endS1:if (din == 1) begin next_state <= S2;   dout <= 0;  end  else          begin next_state <= IDLE; dout <= 0;  endS2:if (din == 1) begin next_state <= S2;   dout <= 1;  end  else          begin next_state <= IDLE; dout <= 0;  end default:  begin next_state <= IDLE; dout <= 0;  endendcase       end
endmodule

测试代码同Moore

有关三段式和两段式的对比

  • 三段式:状态转移由一个always块实现,根据当前状态来确定输出有另一个always块实现
  • 两段式:状态转移和输出在一个always块中实现
  • 三段式并不是一定要写三个always块。如果状态机更为复杂,always块也会相应增加
    (例如交通灯状态机:交通灯状态机)

有关可重叠和不可重叠序列的对比

  • 该处"111"序列检测的摩尔机和米利机都是可重叠序列检测
    (有关不可重叠和可重叠的举例:链接: 101序列检测器.)

Verilog 实现111序列检测器——Moore和Mealy型状态机实现相关推荐

  1. 【 FPGA 】状态机的模型之Mealy型状态机

    上篇博文讲了:Moore型状态机,这篇博文和上篇博文思路一致,如果读懂了上篇博文,这篇博文就很容易理解了. 如果一个状态机的输出是由现态和输入共同决定的,那么它就是一个Mealy型的状态机.而按照驱动 ...

  2. FSM mealy型状态机实现

    FSM mealy型状态机实现 FSM 状态机的概念 FSM 状态 FSM 状态机 FSM 输入信号处理&状态切换 FSM 状态的行为 FSM(finite-state machine) 有限 ...

  3. 序列检测器(moore、mealy、独热码三种写法)

    序列检测器:检测110101 目的:检测一个序列中是不是有序列110101 Moore型状态机实现 Moore型状态机:输出只由当前状态决定,即次态=f(现状,输入),输出=f(现状): 状态转移图: ...

  4. 【状态机设计】Moore、Mealy状态机、三段式、二段式、一段式状态机书写规范

    目录 状态机介绍 状态机类型 Moore 型状态机 Mealy 型状态机 状态机设计流程 自动售卖机 状态机设计:3 段式(推荐) 实例 实例 状态机修改:2 段式 实例 状态机修改:1 段式(慎用) ...

  5. 【 FPGA 】状态机的模型之Moore型状态机

    上篇博文:状态机,FPGA的灵魂,说到了状态机的基础知识,讲到了状态机的组成六要素,工作四要素. 这篇博文来讲状态机的模型之Moore状态机,从标题也能看出,状态机的知识并没有结束,后面还会提到Mea ...

  6. 【 FPGA 】序列检测器的Mealy状态机实现

    上篇博文讲了使用Moore状态机来设计一个序列检测器:序列检测器的Moore状态机实现 原理一致,这里只不过采用了Mealy状态机实现,快速给出: 状态转移图如下:被检测序列为1101,也就是说,如果 ...

  7. Verilog实现状态机与状态机经典示例——序列检测器、自动饮料售卖机

    原文链接:https://blog.csdn.net/qq_34070723/article/details/100737225 作者:King阿金 目录 1.状态机原理与三段式状态机 2.状态机示例 ...

  8. 【 FPGA 】序列检测器的Moore状态机实现

    设计一个序列检测器,检测序列1101,检测到输出1,否则输出0. 用状态机来实现序列检测器是非常合适的,下面先给出状态转移图,之后用Moore状态机来实现这个序列检测器: (注:此处所画为无重叠检测, ...

  9. [FPGA入门笔记](九):序列检测实验,Moore和Mealy状态机对比

    简介 今天购买了AXLINX AX7020的开发板,从今天开始每一个例程都要做文档记录,为自己加油. 本实验,基于ALINX AX7020开发板,芯片为xc7z020clg400-2.开发板输入时钟为 ...

最新文章

  1. 如何提升科研能力?以下这点最重要!
  2. MyEclipse中jsp编码设置
  3. 简单的js文本框提示语
  4. SAP 主生产计划(MPS)
  5. EasyUI中放置Droppable的使用以及实现拖拽排序
  6. Insider Dev Tour 2019 全球巡演 苏州站
  7. 超详细图解!【MySQL进阶篇】MySQL事务和锁
  8. 【kali】kali设置burpsuite抓包dvwa
  9. 数据结构实验之二叉树五:层序遍历
  10. 一个简单的Java EEDocker示例
  11. 免費工具 - PDF转换成Flipbook, 并把它放在漂亮的书架上
  12. php 拉丁文转中文,拉丁文在线翻译_拉丁语在线翻译
  13. 百度富文本ueditor实现导入word并将内容显示到编辑器中
  14. 项目管理-----整合项目资源
  15. 计算机前沿的英语词汇,计算机行业常用英语词汇
  16. 鲤鱼鱼竿豆荚 - 建议做出正确的选择
  17. Ubuntu18修改系统语言为英文
  18. Java二维码的一些简介、功能
  19. 【数据结构与算法分析】第一章、第二章总结
  20. 【tensorflow学习之路】如何使用gpu进行运算

热门文章

  1. 国外研发创新印刷传感器改变轮胎控制市场:成本可低至一美分
  2. unicode--乱码转换
  3. c++ 中map 的find 用法
  4. SpringBoot集成阿里EasyExcel导出excel高级实战
  5. 如师通语言学习软件(罗赛塔石碑)/Rosetta Stone 安装方法
  6. 怎么写好你的求职信!
  7. 关闭手机相机声音教程(理论支持所有S60V3)
  8. 三国之赵云java,真三国赵云传java
  9. 《国富论》阅读笔记04
  10. 安装Django4.0最详细教程 pip总是报错怎么办