/*********************************************************************************
* 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. [HAOI2011] Problem b - 莫比乌斯反演

    复习一下莫比乌斯反演 首先很显然用一下容斥把它转化成求 \(ans=\sum_{i=1}^a \sum_{j=1}^b [{gcd(i,j)=d}]\) 我们可以定义 f(d) 和 F(d) 如下: ...

  2. liunx下安装Docker

    1.安装并启动docker 1.检查内核版本,必须是3.10及以上uname -r2.安装docker yum install docker命令安装(需要联网) [root@localhost ~]# ...

  3. 自定义Ribbon客户端策略

    说明   为了实现Ribbon细粒度的划分,让调用不同的微服务时采用不同的客户端负载均衡策略, 通常情况下我们会自定义配置策略.   本文以内容中心(content-center)调用户中心微服务(u ...

  4. Python之QRCode

    目录 一.基本介绍 介绍 QRCode二维码版本展示 QRCode方法 常用函数 二.安装QRCode 三.基本案例 生成普通二维码: 生成带有图片的二维码: 四.制作动态二维码 安装 myqr 和 ...

  5. 支持CSS3的高级CSS

    一.匹配部分字符串 在CSS2中,可以使用[ href='info.htm' ] 这样的属性选择器来匹配href属性中的字符,但是无法只匹配部分字符串.而CSS3给出了三个新的运算符:^ , $ 和 ...

  6. vscode中LaTeX的编写

    前言 在学习\(\mathrm{\LaTeX}\)的时候尝试过很多编辑器,但都被其复古的外观或者复杂的配置劝退.并且因为本身就在使用VScode写其他的一些语言,正好借此机会也学习一下怎么用VScod ...

  7. Java 在程序中输入输出

    本周主要学习了Java如何在程序中进行输入和输出,主要分为以下三种: 一.文本界面的输入与输出 1. 使用 javva.util.Scanner 类 2. 使用 in 及 out 二.图形界面的输入与 ...

  8. Django 初试水(一)

    2020年注定是一个不平凡的一年!坚持就是胜利,一起加油! 至于为什么使用 Django,也不想说太多.个人喜欢,这里不做介绍.直接进入主题.show me the code!!! python 的环 ...

  9. classification tips 01: npy file

    numpy array storation; npy/npz file. 文件存取的格式:二进制和文本.二进制格式的文件又分为NumPy专用的格式化二进制类型和无格式类型. numpy文件存取-npz ...

  10. 10行代码实现简易版的Promise

    实现之前,我们先看看Promise的调用 const src = 'https://img-ph-mirror.nosdn.127.net/sLP6rNBbQhy0OXFNYD9XIA==/79910 ...