/*********************************************************************************
* 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. Redis 数据总结 (2.命令实现逻辑)

    1.通过合理的Redis数据分布,实现逻辑的简化,即将部分逻辑纳入redis 连个sort表的合并,相关的资料见 http://www.redis.net.cn/order/3613.html ZIN ...

  2. Python基础教程-02

    <Python基础教程> 第3章 使用字符串 字符串方法find返回的并非布尔值.如果find像这样返回0,就意味着它在索引0处找到 了指定的子串 join可合并一个字符串列表,不能合并数 ...

  3. 【动态规划】【C/C++】简单的背包问题

    简单的背包问题 背包问题动态规划中非常经典的一个问题,本文只包含01背包,完全背包和多重背包.更加详尽的背包问题的讲解请参考崔添翼大神的<背包九讲> 简单的01背包 问题导入:新年到了,m ...

  4. jQuery实现隔行变色、悬停变色 ( CSS3伪类选择器:nth-child() )

    <title>实现隔行变色</title> <script src="Js/jquery-1.8.0.min.js" type="text/ ...

  5. OWASP安装

    下载网址:https://sourceforge.net/projects/owaspbwa/files/1.0rc2/ 下载完之后解压 解压之后 打开虚拟机 然后 虚拟机中菜单栏 文件---打开-- ...

  6. BBR在实时音视频领域的应用

    小议BBR算法 BBR全称Bottleneck Bandwidth and RTT,它是谷歌在2016年推出的全新的网络拥塞控制算法.要说明BBR算法,就不能不提TCP拥塞算法. 传统的TCP拥塞控制 ...

  7. centos7安装谷歌浏览器

    1. 安装: 考虑到国内无法访问Google,所以需要自己配置yum源: 1.在目录 /etc/yum.repos.d/ 下新建google-chrome.repo文件,命令如下: 1.cd /ect ...

  8. wcf接口输出为json格式

    接口定义: [OperationContract] [WebInvoke(UriTemplate = "AddTask?taskId={taskId}&processGuid={pr ...

  9. mac环境下,pycharm2018 配置 anaconda。

    2018版的pycharm与之前的版本在配置anaconda上流程略有不同.直接上图 1.新建工程,展开会看到系统默认的编译环境名叫virtualenv,是基于python3.5的环境(如果没有安装过 ...

  10. redis 的安装和使用

    一.套用别人的话: redis 很牛叉,能将不同类型的数据存到内存,存到内存取出的时候就快了.所以,他很受欢迎.还有一个很牛叉的叫memcache ,但是他存的数据类型很有限,只能存入string 类 ...