Homework 7 Solution


1. 

module GrayCodeCounter(CLK, EN, RESET, Q2, Q1, Q0);

input CLK, EN, RESET;
output Q2, Q1, Q0;

reg Q2, Q1, Q0;
req [2:0]state;

'define s0 3'b000
'define s1 3'b001
'define s2 3'b010
'define s3 3'b011
'define s4 3'b100
'define s5 3'b101
'define s6 3'b110
'define s7 3'b111

assign Q0 = state[0];
assign Q1 = state[1];
assign Q2 = state[2];

always @(posedge CLK) begin
if(RESET)
state = 's0;
else if(EN)
case(state)
's0: state = 's1;
's1: state = 's2;
's2: state = 's3;
's3: state = 's4;
's4: state = 's5;
's5: state = 's6;
's6: state = 's7;
's7: state = 's0;
endcase
end
endmodule

 

2.

3a.

3b.   Verilog Code - 3bsol.txt

3c.