.


:




:

































 

 

 

 


˳ ̳




module mealy

(

input wire CLOCK_50,

input wire [1: 0] SW, //data_in

input wire [0: 0] KEY, //reset

output wire [17: 0] LEDR, //data_out

output reg [0: 0] LEDG, // 2

 

//7-

output reg [7: 0] HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7

);

 

//,

wire reset;

 

// , SW[0] SW[1]

wire [1: 0] data_in;

 

// , LEDR[17]

reg data_out;

 

 

reg [2: 0] pres_state, next_state, clock;

integer timer, item;

 

always @(posedge CLOCK_50)

begin

 

//

timer = timer - 1;

if(!timer)

begin

timer = 25000000;

clock = clock? 0: 1;

end

//

 

// 7- :

//...

HEX7 = pres_state == 0? 7'b100_0000:

pres_state == 1? 7'b111_1001:

pres_state == 2? 7'b010_0100:

pres_state == 3? 7'b011_0000:

pres_state == 4? 7'b001_1001: 7'b011_1111;

 

//...

HEX0 = next_state == 0? 7'b100_0000:

next_state == 1? 7'b111_1001:

next_state == 2? 7'b010_0100:

next_state == 3? 7'b011_0000:

next_state == 4? 7'b001_1001: 7'b011_1111;

end

 

//

// 2

always @(posedge clock)

begin

LEDG[0] = LEDG[0]? 0: 1;

end

 

initial

begin

timer = 25000000;

clock = 1;

pres_state = st0;

 

// 7-

//

for(item = 0; item < 8; item = item + 1)

begin

HEX1[item] = 1'b1;

HEX2[item] = 1'b1;

HEX3[item] = 1'b1;

HEX4[item] = 1'b1;

HEX5[item] = 1'b1;

HEX6[item] = 1'b1;

HEX7[item] = 1'b1;

HEX0[item] = 1'b1;

end

end

 

assign reset = KEY[0];

assign LEDR[17] = data_out;

assign data_in = SW;

 

parameter st0=3'd0, st1=3'd1, st2=3'd2, st3=3'd3, st4=3'd4;

 

// FSM register ( )

always @(posedge clock or negedge reset)

begin: statereg

if(!reset)//

pres_state = st0;

else

pres_state = next_state;

end // statereg

 

// FSM combinational block ( )

always @(pres_state or data_in)

begin: fsm

case (pres_state)

st0: case(data_in)

2'b00: next_state=st0;

2'b01: next_state=st4;

2'b10: next_state=st1;

2'b11: next_state=st2;

endcase

st1: case(data_in)

2'b00: next_state=st0;

2'b10: next_state=st2;

default: next_state=st1;

endcase

st2: case(data_in)

2'b0x: next_state=st1;

2'b1x: next_state=st3;

endcase

st3: case(data_in)

2'bx1: next_state=st4;

default: next_state=st3;

endcase

st4: case(data_in)

2'b11: next_state=st4;

default: next_state=st0;

endcase

default: next_state=st0;

endcase

end // fsm

 

// ̳ pres_state w/ data_in

always @(data_in or pres_state)

begin: outputs

case (pres_state)

st0: case(data_in)

2'b00: data_out=1'b0;

default: data_out=1'b1;

endcase

st1: data_out=1'b0;

st2: case(data_in)

2'b0x: data_out=1'b0;

default: data_out=1'b1;

endcase

st3: data_out=1'b1;

st4: case(data_in)

2'b1x: data_out=1'b1;

default: data_out=1'b0;

endcase

default: data_out=1'b0;

endcase

end // outputs

 

endmodule

 

:

=0, =1, =2, =3, =4, =5, =6, =7, =8, =9.

( ):

=000, =001, =010, =011, =100, =101, =110, =111.

( ):

=000, =001, =010, =011, =100, =101, =110, =111.

 

 

 

1

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

3

 

 

 

 




:


: 2017-02-24; !; : 258 |


:

:

- , , .
==> ...

1591 - | 1391 -


© 2015-2024 lektsii.org - -

: 0.031 .