专栏首页根究FPGA序列检测一定要用状态机?

序列检测一定要用状态机?

那些年,你总是不停的说序列检测,每当有人谈到序列检测你便说自己会一、二、三段式moore、mealy型状态机,茴字有几种写法...

假设需要一个01101010比特流检测电路,并输出检测成果标志

当你开始考虑使用几个状态的时候,并好不容易写出以下代码的时候:

module detect2(
input clk,
input rst_n,
input din, 
output reg flag
);
 
//reg [2:0]state=3'b000;
parameter IDLE=3'b000,  //0
       state1=3'd1,  //1
       state2=3'd2,  //0
       state3=3'd3,  //1
       state4=3'd4,  //0
       state5=3'd5,  //1
       state6=3'd6,  //1
       state7=3'd7;  //0

reg [2:0]cur_state;
reg [2:0]nxt_state;
 
//第一个always块用于状态转移       
always@(posedge clk or negedge rst_n)
if(~rst_n)
 cur_state<=IDLE;
else 
 cur_state<=nxt_state;
 
/*
检测8'b01101010
*/       
always@(*) 
begin
 case(cur_state)
  IDLE:
   begin 
   if(din==1'b0)    
    nxt_state=state1; //0
   else 
    nxt_state=IDLE;
  end 
  state1: 
   begin
   if(1'b1==din)
     nxt_state=state2;  //10
   else 
     nxt_state=IDLE; 
   end 
  state2: 
   begin
    if(1'b0==din)
    nxt_state=state3;  //010
   else 
     nxt_state=IDLE; 
   end 
  state3: //有三个正确的接收数字
   begin
    if(1'b1==din)
    nxt_state<=state4;  //1010
   else 
     nxt_state=IDLE; 
   end 
  state4: 
   begin
    if(1'b0==din)
     nxt_state=state5;  //01010
   else 
     nxt_state=IDLE; 
   end 
  state5: 
   begin
    if(1'b1==din)
    nxt_state=state6;  //101010
   else 
     nxt_state=IDLE; 
   end 
  state6: 
   begin
    if(1'b1==din)
    nxt_state=state7;  //110_1010
   else             
     nxt_state<=state3;  //010
   end 
  state7: 
   begin
    nxt_state=IDLE;  
   end   
 default:;
 endcase 
end  

always@(posedge clk or negedge rst_n)
if(~rst_n)
 flag<=1'b0;
else if(cur_state==state7&&(1'b0==din))
 flag<=1'b1;
else 
 flag<=1'b0;

endmodule

答应我:下次试试移位寄存器可以吗?

module detect(
input clk,
input rst_n,
input din,
output flag
);
reg [7:0]bug;
always@(posedge clk or negedge rst_n)
if(~rst_n)
 bug<=8'hff;
else 
 bug<={din,bug[7:1]};

assign flag=bug==8'b0110_1010;
endmodule

一样的:

本文分享自微信公众号 - 根究FPGA(gh_08b5d93f8fa5),作者:叫什么好呢啊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • FPGA/数字IC笔试题——序列检测(FSM状态机)【状态机序列检测】

    FSM有限状态机,序列产生,序列检测,是FPGA和数字IC相关岗位必须要掌握的知识点,在笔试和面试中都非常常见。

    FPGA探索者
  • FPGA笔试题——序列检测(FSM状态机)

    FSM有限状态机,是FPGA和数字IC相关岗位必须要掌握的知识点,在笔试和面试中都非常常见。

    FPGA探索者
  • 脑机音乐接口,高效检测用户的情绪状态

    英国雷丁大学和普利茅斯大学的研究团队开发和评估了一个情感脑-机音乐接口(aBCMI),用来调节用户的情感状态。构造一个aBCMI来检测用户的当前情感状态并尝试调...

    脑机接口社区
  • 技术 | 如何在Python下生成用于时间序列预测的LSTM状态

    长短期记忆网络(LSTM)是一种强大的递归神经网络,能够学习长观察值序列。 LSTM的一大优势是它们能有效地预测时间序列,但是作这种用途时配置和使用起来却较为...

    AI科技大本营
  • 片状静止任意稀疏网络序列中所有可检测变化点的一致性检测和优化定位(社会和信息网络)

    我们考虑了在片状静止网络的背景下的离线变化点检测和定位问题,其中可观测的是一个有限的网络序列。我们开发了基于观测网络自适应修剪邻接矩阵的一些适当修改的CUSUM...

    Jillchen996
  • 利用动态纹理分析法对视频序列假脸进行检测(CS)

    在过去的几年中,涉及人物角色的可控多媒体内容的达到了空前的逼真度。为了在图像和视频中显示出合成的人脸,需要使用到自动化相关技术。本研究以表征和区分真序列和伪序列...

    Pamela_Lin
  • System Generator从入门到放弃(四)-利用MCode调用MATLAB代码

    System Generator是Xilinx公司进行数字信号处理开发的一种设计工具,它通过将Xilinx开发的一些模块嵌入到Simulink的库中,可以在Si...

    碎碎思
  • 计算机视觉与脑电数据等应用于驾驶员的疲劳状态检测综述

    今天Rose小哥分享一篇伍冬睿教授的关于驾驶员疲劳状态检测综述,主要包括非接触式例如计算机视觉以及接触式包括脑电等在驾驶员的疲劳状态检测!

    脑机接口社区
  • 不同机器互相调用WebService或者HTTP一定要telnet 测试

    ping的通不一定就telnet的通一定要#telnet 目标机器IP  目标机器端口 如果一...

    Java架构师必看
  • 基于机器学习的web异常检测

    Web防火墙是信息安全的第一道防线。随着网络技术的快速更新,新的黑客技术也层出不穷,为传统规则防火墙带来了挑战。传统web入侵检测技术通过维护规则集对入侵访问进...

    FB客服
  • 伪随机数生成算法

    伪随机数生成算法在计算机科学领域应用广泛,比如枪击游戏里子弹命中扰动、数据科学里对样本进行随机采样、密码设计、仿真领域等等,背后都会用到伪随机数生成算法。

    李拜六不开鑫
  • 包过滤技术,老生常谈,但是你不一定都能搞得明白!

    所谓包过滤就是对防火墙需要转发的数据包,先获取包头信息,然后和设定的规则进行比较,根据比较的结果对数据包进行转发或者丢弃的动作。

    网络技术联盟站
  • POF技术分享(二):POF交换机源码结构

    一:函数调用关系图 POF交换机先会进行基本配置的初始化、交换机资源初始化等,然后开启交换机与控制器通信进程,建立连接进行通信,最后开启基于流表的数据包匹配与处...

    SDNLAB
  • IC技术圈期刊 2021年第4期

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。...

    FPGA技术江湖
  • 基于马尔科夫链的产品评估预测

    马尔可夫链 1、建立转移概率矩阵:   马尔可夫链是一种时间离散、状态离散、带有记忆功能情况的随机过程,是预测中常用到的一种数学模型。如果数据的本身的每一时刻的...

    机器学习AI算法工程
  • 最新 | 基于回声状态网络预测股票价格(附代码)

    “There (is) order and even great beauty in what looks like total chaos. If we lo...

    量化投资与机器学习微信公众号
  • ​通路规划的行为树(自动驾驶)

    DeepAction八期飞跃计划还剩10个名额,联系小编,获取你的专属算法工程师学习计划(联系小编SIGAI_NO1)

    SIGAI学习与实践平台
  • 对于问题的简单定义

    学习此部分的目的:发现在没有单独的行动可以解决问题的时候,机器如何找到一个行动序列达到他的目标;在这部分中,通过讨论一些无信息的通用搜索算法,来比较各部分算法的...

    云时之间

扫码关注云+社区

领取腾讯云代金券