10010序列檢測器的verilog實現

2021-06-09 18:56:49 字數 2162 閱讀 1179

//模組功能:檢測到序列

"10010"

時立即輸出

1,這是個摩爾型電路

module seqdet(x,z,clk,rst);

input x,clk,rst;//x

為輸入序列

output z;

reg[2:0]state,nstate;//state

為當前狀態,

nstate

為下一狀態

parameteridle=3'd0,//

初始狀態

a=3'd1,//

狀態序列1

b=3'd2,//

狀態序列10

c=3'd3,//

狀態序列

100

d=3'd4,//

狀態序列

1001

e=3'd5;//

狀態序列

10010

always@(x,state)

case(state)

idle:if(x==1) nstate=a;

else

nstate=idle;

a:if(x==0) nstate=b;

else

nstate=a;

b:if(x==0) nstate=c;

else

nstate=a;

c:if(x==1) nstate=d;

else

nstate=idle;

d:if(x==0)nstate=e;

else

nstate=a;

e:if(x==0) nstate=c;

elsenstate=a;

default:

nstate<=idle;

endcase

///always@(posedge clk,negedge rst)

if(!rst)

state<=idle;

elsestate<=nstate; //

assign z=(state==e);//z

輸出為1

的條件,

z只和狀態有關,所以為摩爾型

/endmodule

//模組功能:檢測到序列"10010"時立即輸出1,這是個公尺利型電路

module seqdet(x,z,clk,rst);

input x,clk,rst;              //x為輸入序列

output z;                        

reg[2:0]state,nstate;        //state為當前狀態,nstate為下一狀態

parameter  idle=3'd0,    //初始狀態

a=3'd1,    //狀態序列1

b=3'd2,    //狀態序列10

c=3'd3,    //狀態序列100

d=3'd4,    //狀態序列1001

e=3'd5;    //狀態序列10010        

always@(x,state)

case(state)

idle:if(x==1) nstate=a;

else     nstate=idle;

a:   if(x==0) nstate=b;

else     nstate=a;

b:   if(x==0) nstate=c;

else     nstate=a;

c:   if(x==1) nstate=d;

else     nstate=idle;

d:   if(x==0) nstate=e;

else     nstate=a;

e:   if(x==0) nstate=c;

else     nstate=a;

default:      nstate<=idle;

endcase

///    

always@(posedge clk,negedge rst)

if(!rst) state<=idle;

else     state<=nstate; //

assign z=(state==d) && (x==0);  // z既和狀態有關又和輸入有關,所以為公尺利型/

endmodule

序列檢測器

序列檢測器是在數字碼流中檢測特定序列,利用同步狀態機的方式可以較容易的實現。比如設計乙個檢測序列為10010的檢測器。st1 確定狀態機的狀態數亮 st2 確定每個狀態下的變數的值 st3 狀態之間切換的條件 st4 觸發狀態機的條件 module xulie x,z,clk,rst input x...

序列檢測器

用狀態機設計乙個二進位制序列檢測器,其功能是檢測乙個4位二進位制序列 1111 及輸入序列中如果有四個或四個以上連續的 1 出現,輸出為1,其他情況下,輸出為0。其輸入 輸出如下所示 輸入x 000 101 010 110 111 101 111 110 101 輸出z 000 000 000 00...

原創 Verilog編寫 「1101 序列檢測器

序列檢測器是時序數位電路中非常常見的設計之一。它的主要功能是將乙個指定的序列從數字碼流中識別出來。這裡給出乙個 1101 序列檢測器的verilog實現和testbench 設計目標 1101 序列檢測器 eda quartus 15.0 軟體 modelsim 10.1c 本序列檢測器共有4個bi...