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

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

一款磨刀机直流无刷电机软起动技术设计方案
相差400元的游戏手机,黑鲨2和黑鲨2 Pro该如何选?
智能手表到底有多贴心
33600A系列波形/函数发生器介绍
韦尔股份收购芯能投资案获新进展 若竞买成功本次交易将构成新的重大资产重组
序列检测一定要用状态机吗?
空中客车在北京航展上展出了A350-1000飞机A330neo飞机和A220飞机
2018年物联网IoT和雾计算的3件事
Amazfit米动健康手表高清图集
一文读懂陀螺仪传感器和加速度传感器异同
格力全新5G手机销量如何?
嵌入式:听说,嵌入式这个行业未来十年都不会卷?
富士通FlexRa控制器双通道速率达10Mbps
松下LumixG9旗舰评测 可谓一机多能
运算放大器和受控源
华为已率先完成了5GVoNR语音+视频业务及互操作测试
关于行程开关的接线方法
美国洞察号探测器成功登陆火星带了哪些仪器
Arm Development Studio 2020.1版本下载更新
怎么去计算LED芯片的电阻呢