状态机——序列检测
作者:互联网
每三个时钟周期中检测输入w,若w的高电平个数恰好为2,则输出一个高电平。
module top_module ( input clk, input reset, // Synchronous reset input s, input w, output z ); reg [3:0]cs,ns; parameter A=4'b0001,B=3'b0010,C=3'b0100,D=4'b1000; reg [1:0]cnt; always@(posedge clk) if(reset) cs<=A; else cs<=ns; always@(*)begin case(cs) A:ns=s?B:A; B:ns=C; C:ns=D; D:ns=B; default:ns=A; endcase end always@(posedge clk)begin if(reset) cnt<=0; else case(cs) B:cnt<=w; C,D:cnt<=cnt+w; default:cnt<=0; endcase end assign z=(cs==B&&cnt==2); endmodule
标签:reset,高电平,检测,clk,module,状态机,cs,序列,input 来源: https://www.cnblogs.com/x-zstu/p/16320447.html