# Problem Set 8#

Source: DL_P8_Problem_Set_9_28_18.pdf Revision: n/a

## 1#

Complete the timing diagram below to illustrate the behavior of the counter.

This is a synchronous 4 bit binary counter because the counter begins at 0 and counts up to $$2^4-1$$. It has active high asynchronous reset and synchronous counter-enable signals.

After $$2^4-1$$ the counter will turn back to 0 and continue counting until the reset is active. After the cycle where the reset was active the value will be 1 and the counter will increment the counter if the counter-enable is active in the moment when the clock rises.

## 2#

Complete the circuit sketch for a four-bit counter by adding the required next-state logic gates in front of the flip-flops.

The truth table looks as follows:

q0

q1

q2

q0n

q1n

q2n

0

0

0

1

0

0

1

0

0

0

1

0

0

1

0

1

1

0

1

1

0

0

0

1

0

0

1

1

0

1

1

0

1

0

1

1

0

1

1

1

1

1

1

1

1

0

0

0

We observe:

• the least significant bit is toggled every time.

• After reset, a bit is set to 1 if all the less significant bits are set to 1. If the less significant bits are set to 1 again, then this bit is set to 0. In summary a bit is toggled if all the less significant bits are set to 1. But here we define only when a value should change and does not describe the next value combinationally.

• A bit only depends on the last value of itself and the bits which are less significant.

• q1n is 1 if (q0 & ~q1) | (~q0 & q1). This corresponds to the exclusive-or operator q0 ^ q1.

• q2n is 1 if:

( q0 &  q1 & ~q2) |
(~q0 & ~q1 &  q2) |
( q0 & ~q1 &  q2) |
(~q0 &  q1 &  q2)


We observe that q2 must be 0 if q0 and q1 are 1, q2 must be 1 in other conditions of q0 and q1. So either q2 is true or (q0 & q1). This corresponds to the exclusive-or operation: (q0 & q1) ^ q2.

We can generalize this formula for the further bits:

process @(posedge clk) begin
assign
q0 = 1 ^ q0;
q1 = q0 ^ q1;
q2 = (q0 & q1) ^ q2;
q3 = (q0 & q1 & q2) ^ q3;
end