原创 Verilog 序列检测器--010

2010-10-6 17:11 3720 6 6 分类: FPGA/CPLD

module FSMproj(clk,rst,datain,dataout);
input clk;
input rst;
input datain;
output dataout;
reg dataout;


reg[1:0] state;
parameter   idle=2'b00,
   start=2'b01,
   second=2'b10,
   third=2'b11;


always@(posedge clk or negedge rst)
 if(!rst)
  state<=idle;
 else
  case(state)
  idle:
   begin
   state<=start;
   dataout<=1'b0;   
   end
  start:
   begin
   dataout<=1'b0;
   if(1'b0==datain)// 检测第一位
    state<=second;//相等的时候,检测第二位
   else
    state<=start;//不相等的时候,继续检测第一位
   end
  second:
   begin
   if(1'b1==datain)// 检测第二位
    state<=third;//相等的时候,检测第二位
   else
    state<=second;//不相等的时候,继续检测第二位
   end
  third:
   begin
   if(1'b0==datain)// 检测第三位
    begin
    dataout<=1'b1;
    state<=start;
    end
   else
    begin
    dataout<=1'b0;
    state<=start;
    end
   end
  default:state<=idle;
  endcase
  
endmodule


 


仿真如下


e1e320e1-39ae-4bb1-9277-08a4899cc4d1.jpg


 


ee086fe2-c7d8-46ea-966b-7460e2792a69.jpg


 


对于多位的检测 只是状态机复杂些 原理一样

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /1 下一条