0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:根究FPGA 作者:叫什么好呢啊 2023-06-26 16:52 次阅读

那些年,你总是不停的说序列检测,每当有人谈到序列检测你便说自己会一、二、三段式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

一样的:

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 移位寄存器
    +关注

    关注

    3

    文章

    258

    浏览量

    22269
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27530
收藏 人收藏

    评论

    相关推荐

    状态机编程

    也可能伴随着状态的转移。在状态机中,时间序列也是非常重要的个因素,从硬件的角度看,时间序列如同
    发表于 07-10 18:00

    浅谈有限状态机FSM——以序列检测为例

    应用,往往需要让硬件来实现些具有一定顺序的工作,这就是要用状态机的思想。(以上摘自特权同学的《深入浅出玩转FPGA》书) 有限
    发表于 09-25 09:35

    状态机举例

    状态机举例 你可以指定状态寄存器和状态机状态。以下是个有四种状态的普通
    发表于 03-28 15:18 982次阅读

    状态机原理及用法

    状态机原理及用法状态机原理及用法状态机原理及用法
    发表于 03-15 15:25 0次下载

    流水线状态机20进制,101序列检测,8位加法器流水线的程序

    流水线状态机20进制,101序列检测,8位加法器流水线的程序
    发表于 05-24 14:40 0次下载

    简述使用QII状态机向导如何创建状态机

    如何使用QII状态机向导创建状态机
    的头像 发表于 06-20 00:11 4218次阅读
    简述使用QII<b class='flag-5'>状态机</b>向导如何创建<b class='flag-5'>一</b>个<b class='flag-5'>状态机</b>

    状态机概述 如何理解状态机

    本篇文章包括状态机的基本概述以及通过简单的实例理解状态机
    的头像 发表于 01-02 18:03 1w次阅读
    <b class='flag-5'>状态机</b>概述  如何理解<b class='flag-5'>状态机</b>

    如何使用FPGA实现序列检测有限状态机

    有限状态机是绝大部分控制电路的核心结构, 是表示有限个状态以及在这些状态之间转移和动作等行为的数学模型。有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路。
    发表于 11-04 17:17 12次下载
    如何使用FPGA实现<b class='flag-5'>序列</b><b class='flag-5'>检测</b>有限<b class='flag-5'>状态机</b>

    FPGA:状态机简述

    本文目录 前言 状态机简介 状态机分类 Mealy 型状态机 Moore 型状态机 状态机描述
    的头像 发表于 11-05 17:58 7377次阅读
    FPGA:<b class='flag-5'>状态机</b>简述

    如何使用Moore状态机设计一序列检测计实验的工程文件免费下载

    本文档的主要内容详细介绍的是如何使用Moore状态机设计一序列检测计实验的工程文件免费下载
    发表于 12-04 16:46 9次下载

    什么是状态机状态机5要素

    玩单片还可以,各个外设也都会驱动,但是如果让你完整的写套代码时,却无逻辑与框架可言。这说明编程还处于比较低的水平,你需要学会种好的编程框架或者种编程思想!比如模块化编程、
    的头像 发表于 07-27 11:23 2w次阅读
    什么是<b class='flag-5'>状态机</b>?<b class='flag-5'>状态机</b>5要素

    摩尔型状态机与米利型状态机的区别是什么

    FSM有限状态机序列产生,序列检测,是FPGA和数字IC相关岗位必须要掌握的知识点,在笔试和面试中都非常常见。
    的头像 发表于 03-14 17:42 1.7w次阅读

    如何在FPGA中实现状态机

    状态机往往是FPGA 开发的主力。选择合适的架构和实现方法将确保您获得款最佳解决方案。 FPGA 常常用于执行基于序列和控制的行动, 比如实现个简单的通信协议。对于设计人员来说,满
    的头像 发表于 07-18 16:05 1085次阅读
    如何在FPGA中实现<b class='flag-5'>状态机</b>

    基于FPGA的状态机设计

    状态机的基础知识依然强烈推荐mooc上华科的数字电路与逻辑设计,yyds!但是数电基础一定要和实际应用结合起来,理论才能发挥真正的价值。我们知道FPGA是并行执行的,如果我们想要处理具有前后顺序的事件就需要引入状态机
    的头像 发表于 07-28 10:02 999次阅读
    基于FPGA的<b class='flag-5'>状态机</b>设计

    什么是状态机状态机的种类与实现

    状态机,又称有限状态机(Finite State Machine,FSM)或米利状态机(Mealy Machine),是种描述系统状态变化
    的头像 发表于 10-19 10:27 9461次阅读