首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

verilog语言设计有限状态机练习题

2013-10-01 
verilog语言设计有限状态机习题module seqdet(x,z,clk,rst,state)input x,clk,rstoutput zoutput[2:0]

verilog语言设计有限状态机习题

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

input x,clk,rst;

output z;

output[2:0] state;

reg[2:0] state;

wire z;

parameter IDLE='d0, A='d1, B='d2,

C='d3, D='d4,

E='d5;

assign z = ( state==D)? 1 : 0; //?x=0???????E?

//???D??x??1???

//???1????? state==E && x==0 ??

always @(posedge clk)

if(!rst)

begin

state <= IDLE;

end

else

casex(state)

IDLE : if(x==1)

begin

state <= A;

end

A:if(x==1)

begin

state <= B;

end

else

begin

state <= E;

end

B: if(x==1)

begin

state <= C;

end

else

begin

state <= E;

end

C: if(x==1)

begin

state <= D;

end

else

begin

state <= E;

end

D: if(x==0)

begin

state <= E;

end

E: if(x==1)

begin

state <= A;

end

if(x==0)

begin

state <=E;

end

default:state=IDLE; //??????????

endcase

endmodule

 

 

 

 

测试程序

`timescale 1ns/1ns

`include "ztj.v"

module seqdet_Top;

reg clk,rst;

reg[23:0] data;

wire[2:0] state;

wire z,x;

assign x=data[23];

always #10 clk = ~clk;

always @(posedge clk)

data={data[22:0],data[23]};

initial

 

begin

clk=0;

rst=1;

#2 rst=0;

#30 rst=1;

data ='b1111_0111_1110_1111;

//#500 $stop;

end

seqdet m(x,z,clk,rst,state);

endmodule

 

 

热点排行