seqdet2.v

来自「状态机实现序列检测VerilogHDL及其仿真」· Verilog 代码 · 共 86 行

V
86
字号
module seqdet2(z,x,clk,rst);
output z;
input x,clk,rst;
reg[3:0] state;
wire z;

parameter IDLE=4'b0,
          A=4'd1,
          B=4'd2,
          C=4'd3,
          D=4'd4,
          E=4'd5,
          F=4'd6,
          G=4'd7,
          H=4'd8,
          I=4'd9,
          J=4'd10,
          K=4'd11,
          L=4'd12;
assign z=(state==H&&x==1)?1:0;

always @(posedge clk or negedge rst)
  if(!rst)
    begin
     state<=IDLE;
    end
else
   case(state)
IDLE:if(x==1)
       state<=A;
       else
     state<=IDLE;
A:if(x==1)
   state<=B;
  else
   state<=J;
B:if(x==1)
  state<=C;
  else
  state<=K;
C:if(x==0)
   state<=D;
 else
  state<=C;
D:if(x==0)
   state<=E;
   else 
 state<=A;
E:if(x==0)
  state<=F;
  else
 state<=A;
F:if(x==1)
  state<=G;
  else
  state<=IDLE;
G:if(x==0)
   state<=H;
  else
  state<=B;
H:if(x==1)
  state<=I;
 else
  state<=L;
I:if(x==0)
   state<=J;
  else
 state<=B;
J:if(x==0)
  state<=L;
  else
   state<=A;
K:if(x==0)
   state<=L;
   else
  state<=A;
L:if(x==1)
  state<=A;
  else
  state<=IDLE;
default:state<=IDLE;

  endcase
endmodule

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?