【 FPGA 】序列检测器的Mealy状态机实现
上篇博文讲了使用Moore状态机来设计一个序列检测器:序列检测器的Moore状态机实现
原理一致,这里只不过采用了Mealy状态机实现,快速给出:
状态转移图如下:被检测序列为1101,也就是说,如果出现1101序列,则输出为1,否则输出为0。
Verilog HDL代码为:
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2019/01/04 20:34:06
// Design Name:
// Module Name: seq_det_mealy
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module seq_det_mealy(input clk,input reset,input din,output reg dout);localparam [1:0]s0 = 2'b00,s1 = 2'b01,s2 = 2'b10,s3 = 2'b11;reg [1:0] current_state,next_state;always @(posedge clk, posedge reset)beginif(reset)current_state <= s0;elsecurrent_state <= next_state;endalways @ *begincase(current_state)s0:if(din == 1'b1) next_state = s1;else next_state = s0;s1: if(din == 1'b1) next_state = s2;else next_state = s1;s2:if(din == 1'b0) next_state = s3;else next_state = s2;s3: next_state = s0;default: next_state = s0;endcaseendalways @ *beginif(reset) dout = 1'b0;else if( (current_state == s3)&&(din == 1'b1) ) dout = 1'b1;else dout = 1'b0;endendmodule
用上篇博文的测试代码:
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2019/01/04 15:24:59
// Design Name:
// Module Name: seq_det_moore_tb
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module seq_det_mealy_tb;reg clk,reset;reg din;wire dout;reg [20:0] din_mid;integer i;// Note: CLK must be defined as a reg when using this methodparameter PERIOD = 10;always beginclk = 1'b0;#(PERIOD/2) clk = 1'b1;#(PERIOD/2);end initial beginreset = 1'b1;din_mid = 21'b110111010110100101101;# 20reset = 1'b0;din = 1'b0;for(i = 0;i < 21;i = i + 1)begin#PERIODdin = din_mid[i];endendseq_det_mealy uu1(.clk(clk),.reset(reset),.din(din),.dout(dout));endmodule
行为仿真波形图:
这篇博文是在上篇博文的基础上改的,相对而言, 意义就没有那篇博文有意义!
【 FPGA 】序列检测器的Mealy状态机实现相关推荐
- 【 FPGA 】序列检测器的Moore状态机实现
设计一个序列检测器,检测序列1101,检测到输出1,否则输出0. 用状态机来实现序列检测器是非常合适的,下面先给出状态转移图,之后用Moore状态机来实现这个序列检测器: (注:此处所画为无重叠检测, ...
- Moore状态机和Mealy状态机的区别
直接给出结论: 根据状态机的输出是否与输入条件相关来区分Moore状态机和Mealy状态机. Moore状态机:输出仅仅与当前状态有关: 如下实例,如三段式写法来写的一个序列检测的状态机([ FPGA ...
- Verilog 实现111序列检测器——Moore和Mealy型状态机实现
111序列检测器 有限状态机简介 电路结构 '111'序列检测器 Moore状态机 代码实现 Mealy状态机 代码实现 有关三段式和两段式的对比 有关可重叠和不可重叠序列的对比 有限状态机简介 电路 ...
- [FPGA入门笔记](九):序列检测实验,Moore和Mealy状态机对比
简介 今天购买了AXLINX AX7020的开发板,从今天开始每一个例程都要做文档记录,为自己加油. 本实验,基于ALINX AX7020开发板,芯片为xc7z020clg400-2.开发板输入时钟为 ...
- IC/FPGA校招笔试题分析(四)再看Moore状态机实现序列检测器
参加了几次笔试,发现序列检测器是常考的内容,而之前认为序列检测器真的很简单,但是这次X疆的笔试题做完之后,我怀疑自己了. 画状态转移图的时候,我开始犹豫了,我怕我会没考虑全,甚至有点晕. 人家又问: ...
- Verilog实现状态机与状态机经典示例——序列检测器、自动饮料售卖机
原文链接:https://blog.csdn.net/qq_34070723/article/details/100737225 作者:King阿金 目录 1.状态机原理与三段式状态机 2.状态机示例 ...
- 实验十五 摩尔状态机序列检测器“1101”
实验十五 摩尔状态机序列检测器 按键消抖模块debounce_button: 由于实际的拨码开关和按键开关都是机械式的设备,开关动作来回抖动多次后才能稳定下来,这个过程就会使得信号产生==抖动==.因 ...
- 序列检测器(moore、mealy、独热码三种写法)
序列检测器:检测110101 目的:检测一个序列中是不是有序列110101 Moore型状态机实现 Moore型状态机:输出只由当前状态决定,即次态=f(现状,输入),输出=f(现状): 状态转移图: ...
- 重迭式三段式状态机序列检测器-检测10110110
重迭式三段式状态机序列检测器-检测10110110 要求:序列检测器 clk input clock input rst_n input asynchronous reset, low active ...
最新文章
- Android Training - Volley(Lesson 0 - 序言)
- Tomcat介绍及性能优化
- RequestMapping || @RequestMapping 模糊匹配功能
- Android之SwipeRefreshLayout
- pacman 查询_掌握pacman包管理工具,玩转Arch Linux
- lua io.read()
- 再读《SAP德国造》
- 常见Web安全漏洞及测试方法(转载)
- 测试实践:华为测试流程总结
- Linux性能分析命令
- 499服务器响应,一边制造,一边讲解http状态码502|504|499|500
- FireFox必备插件(一)
- Samsung S4卡屏卡在开机画面的不拆机恢复照片一例
- iOS开发底层之KVO探索下 -18
- 新冠疫情防控背后有哪些鲜为人知的技术?
- 子域名查询 端口信息
- c# Winform 程序嵌入PPT
- Linux全盘按名搜索文件
- window下Java诊断工具arthas 实操心得
- MATLAB 数组合并
热门文章
- ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)
- 软件工程 之 动物世界
- 【译】详解Asp.net MVC DropDownLists
- php 自学 经验,学习PHP:PHP学习的几个问题经验总结
- vue 封装dialog_element-ui 封装dialog组件
- matlab 变参数 方程组,解带参数方程组 运行结果竟然自己带了新参数z
- mysql的windows安装步骤_window mysql安装详细步骤
- TEASOFT辅助服务程序UDPCopy 功能介绍
- ACS712模块 ACS712ELCTR-05A电流传感器模块
- 我们也铺好了新赛道啦!!!