/*********************************************************************************
* Company :
* Engineer : 空气微凉
*
* Create Date : 00:00:00 22/03/2013
* Design Name :
* Module Name :
* Project Name :
* Target Devices :
* Tool versions :
* Description :
* http://www.cnblogs.com/kongqiweiliang/
* Dependencies :
*
* Revision :
* Revision : 0.01 - File Created
* Additional Comments : 基础实验_12_有限状态机 :Moore型序列检测器
********************************************************************************/
`timescale 1ns/1ps
`define UD #
/*******************************************************************************/
module SEQ_REC_MOORE
(
//system interface
input iCLK_50 ,//50MHz
input iRESET ,//system interface
//Interface package
input iDAT_EN ,//
input iDAT ,//
output oDAT //
);
//-------------------------------------------------------------------------------
parameter FSM_IDLE = 'h0;
parameter FSM_0 = 'h1;
parameter FSM_1 = 'h2;
parameter FSM_2 = 'h3;
parameter FSM_3 = 'h4; reg [:] FSM_CS;
reg [:] FSM_NS; // Moore状态机的输出只与有限状态机的当前状态有关,与输入信号的当前
// 值无关。 Moore有限状态机在时钟CLOCK脉冲的有效边沿后的有限个门延后,
// 输出达到稳定值。即使在一个时钟周期内输入信号发生变化,输出也会在一个
// 完整的时钟周期内保持稳定值而不变。输入对输出的影响要到下一个时钟周期
// 才能反映出来。   
// Moore有限状态机最重要的特点就是将输入与输出信号隔离开来。 // 序列检测的作用是,先根据要检测的序列设计好状机的跳转,状态机会去匹配
// 指定的序列,在检测到符合要求后,保持一个CLK的脉冲
always@(posedge iCLK_50 or negedge iRESET)begin
if(!iRESET)
FSM_CS <= FSM_IDLE;
else
FSM_CS <= FSM_NS;
end
always@(*)begin
case(FSM_CS)
FSM_IDLE :
if(iDAT_EN && iDAT) FSM_NS = FSM_1;
else if(iDAT_EN && (!iDAT)) FSM_NS = FSM_0;
else FSM_NS = FSM_IDLE;
FSM_0 :
if(!iDAT) FSM_NS = FSM_0;
else if(iDAT) FSM_NS = FSM_1;
else FSM_NS = FSM_IDLE;
FSM_1 :
if(!iDAT) FSM_NS = FSM_0;
else if(iDAT) FSM_NS = FSM_2;
else FSM_NS = FSM_IDLE;
FSM_2 ,
FSM_3 :
if(!iDAT) FSM_NS = FSM_0;
else if(iDAT) FSM_NS = FSM_3;
else FSM_NS = FSM_IDLE;
default :
FSM_NS = FSM_IDLE;
endcase
end assign oDAT = (FSM_CS == FSM_3) ? 'h1 : 1'h0;
//-------------------------------------------------------------------------------
endmodule

每天进步一点点------基础实验_12_有限状态机 :Moore型序列检测器的更多相关文章

  1. 每天进步一点点------基础实验_13_有限状态机 :Mealy型序列检测器

    /********************************************************************************* * Company : * Eng ...

  2. 每天进步一点点------基础实验_08_触发器 :D、T触发器各一

    /********************************************************************************* * Company : * Eng ...

  3. [nRF51822] 12、基础实验代码解析大全 · 实验19 - PWM

    一.PWM概述: PWM(Pulse Width Modulation):脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形. PWM 的几个基本概念: 1) 占空比:占空比是指 ...

  4. [nRF51822] 11、基础实验代码解析大全 · 实验16 - 内部FLASH读写

     一.实验内容: 通过串口发送单个字符到NRF51822,NRF51822 接收到字符后将其写入到FLASH 的最后一页,之后将其读出并通过串口打印出数据. 二.nRF51822芯片内部flash知识 ...

  5. [nRF51822] 10、基础实验代码解析大全 · 实验15 - RTC

    一.实验内容: 配置NRF51822 的RTC0 的TICK 频率为8Hz,COMPARE0 匹配事件触发周期为3 秒,并使能了TICK 和COMPARE0 中断. TICK 中断中驱动指示灯D1 翻 ...

  6. [nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC

    一.本实验ADC 配置 分辨率:10 位. 输入通道:5,即使用输入通道AIN5 检测电位器的电压. ADC 基准电压:1.2V. 二.NRF51822 ADC 管脚分布 NRF51822 的ADC ...

  7. [nRF51822] 8、基础实验代码解析大全 · 实验11 - PPI

    前一篇分析了前十个基础实验的代码,从这里开始分析后十个~ 一.PPI原理: PPI(Programmable Peripheral Interconnect),中文翻译为可编程外设互连. 在nRF51 ...

  8. 20145338 《网络对抗》逆向及Bof基础实验

    逆向及Bof基础实验 实践目标 ·本次实践的对象是一个名为pwn1的linux可执行文件. ·该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ·该程序同时包含 ...

  9. 20155209林虹宇逆向及Bof基础实验报告

    20155209林虹宇逆向及Bof基础实验报告 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符 ...

随机推荐

  1. Wannafly Camp 2020 Day 2A 托米的字符串

    #include <bits/stdc++.h> using namespace std; const int N = 1000005; int n; char str[N]; int a ...

  2. [HNOI2003] 消防局的设立 - 树形dp

    仍然是点覆盖集问题,但覆盖半径变成了\(2\) 延续上一题的思路,只是式子更加复杂了 想体验一下min_element大法于是不想优化了 #include <bits/stdc++.h> ...

  3. Python中pip的使用

    1.pip安装模块 pip install 模块名称 -i 安装源 pip install requests -i https://mirrors.aliyun.com/pypi/simple/

  4. 设置Eclipse中的字符集为UTF-8

    Eclipse 修改字符集 默认情况下 Eclipse 字符集为 GBK,但现在很多项目采用的是 UTF-8,这是我们就需要设置我们的 Eclipse 开发环境字符集为 UTF-8, 设置步骤如下: ...

  5. bootstrap-datatimepicker插件的使用

    1.引入相关的css.js文件(因为是bootstrap的,首先应该引入bootstrap.css和bootstrap.js): <link rel="stylesheet" ...

  6. navicat连接mysql8.0+版本报错2059

    ERROR 2059 : Authentication plugin 'caching_sha2_password' cannot be loaded 问题: 连接Docker启动的mysql出现:E ...

  7. Linux之温故知新1

    1.touch命令的使用 2.使用(cd -)可以在上次使用的目录来回切换 3.ls通配符的使用*代表任意字符和任意个字符, ?代表任意一个字符, [12345]中的任意一个字符, [1-5]中的任意 ...

  8. 将用户名密码邮箱制成表格,以用户名为q结束

    print("输入用户名.密码.邮箱长度不能超过20个") s="" while True: v = input("用户名:") if v= ...

  9. websocket+node建立聊天室简单使用

    1.建立新的文件夹dome 2.执行 npm init加载package.json文件 3.node不支持websocket所以npm install  ws 下载 ws插件 4.建立index.ht ...

  10. detach() 使用和.detach()和.data的区别 、cpu()函数的作用

    detach() 使用和.detach()和.data的区别 .cpu()函数的作用 待办 detach使用 https://blog.csdn.net/qq_27825451/article/det ...