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