Combinational vs. Sequential Circuits.

Basically, sequential circuits have memory and combinational circuits do not.

Here is a basic depiction of a sequential circuit. All sequential circuits contain combinational logic in addition to the memory elements.

We now consider the analysis and design of sequential circuits.

Finite State Machines: Notation

In this course, we represent sequential circuits as finite state machines.

A Finite State Machine (FSM) is a circuit that can exist in a finite number of states, usually a rather small number.  Finite State Machines with more than 32 states are rare.

The FSM has a memory that stores its state.

If the FSM has N states, then its memory can be implemented with P flip–flops where

2P–1 < N £ 2P

Typical values:               3 states    2 flip–flops

4 states    2 flip–flops

5 states    3 flip–flops

8 states    3 flip–flops

Tools to describe finite states machines include

1)     The state diagram

2)     The state table

3)     The transition table

State Diagram for a Sequence Detector NOTE:    We have five states, labeled “A”, “B”, “C”, “D”, and “E”.

We have labeled edges connecting the states.  Each is labeled Input / Output.

This is a directed graph with labeled edges and loops.

More Notes on the State Diagram

1.     The main function of the state diagram for the FSM is to indicate what the
next state will be given the present state and input.

2.     Here the input is labeled X.  Were the input two bits at a time,
the input would be labeled as X1 X0, with X1 the more significant bit.

3.     The labeling of the arcs between the states indicates that there is output
associated with each transition.  Not all Finite State Machines have
output associated with the transition.  This one does.

4.     This and all typical FSM represents a synchronous machine.
Transitions between states and production of output (if any) takes place at a fixed
phase of the clock, depending on the flip–flops used to implement the circuit.

5.     Were we pressed to be more specific, we would associate the transitions
with the rising edge of the clock.  This is usually an unnecessary detail.

State Diagram for a Modulo–4 Counter

Here is the state diagram for a modulo–4 counter.

There is no input but the clock.  It just counts clock pulses.

Note the direction of the arrows; this is an up–counter. State Tables

The state table is a tabular form of the state diagram.  It is easier to work with.

Here is the state table for the sequence detector.

 Present State Next State / Output X = 0 X = 1 A A / 0 B / 0 B A / 0 C / 0 C D / 0 C / 0 D A / 0 E / 0 E A / 0 C / 1

Here is the state table for the modulo–4 counter.

 Present State Next State 0 1 1 2 2 3 3 0

Transition Tables

Transition tables are just state tables in which the labels have been replaced by binary numbers.  Often the labels are retained to facilitate translation to binary.

Here is the transition table for the sequence detector.

 Present State Next State / Output X = 0 X = 1 A = 000 000 / 0 001 / 0 B = 001 000 / 0 010 / 0 C = 010 011 / 0 010 / 0 D = 011 000 / 0 100 / 0 E = 100 000 / 0 010 / 1

Here is the transition table for the modulo–4 counter.  There is no output table.

 Present State Next State 0 = 0 0 0 1 1 = 0 1 1 0 2 = 1 0 1 1 3 = 1 1 0 0

Sample Circuit for Analysis The analysis of such a circuit follows a fixed set of steps.

1)     Determine the inputs and outputs of the circuit.  Assign variables to represent these.

2)     Characterize the inputs and outputs of the flip-flops.  Show as Boolean expressions.

3)     Construct the Next State and Output Tables.

4)     Construct the State Diagram.

5)     If possible, identify the circuit.  There are no good rules for this step.

Step 1: Determine the inputs and outputs of the circuit.

The circuit has one input and one output, with one internal variable of interest. The input is labeled as X.

The output is labeled as Z.

The internal line that is fed back into the flip–flop is labeled as Y.

NOTE:    There is output associated with the input because we see the gate producing
Z based on the input X.

Step 2: Show the inputs and outputs as Boolean expressions. Input:                              X

Output:                            Z = X Å Y

Input to Flip–Flop:         D = X +Y

Output of Flip–Flop:       Y

Step 3: Construct the Next State and Output Tables

Here is the next state table.

 X Q(t) = Y D = X + Y Q(t+1) 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1

We know the present state of the flip–flop; call it Y.

Given Y and X, the input, we can compute D.  This determines the next state.

Here is the output table.  It depends on the input and present state.

 X Y = Q(t) Z 0 0 0 0 1 1 1 0 1 1 1 0

Step 3A: Construct the Next State / Output Table

Just combine the two tables into one table.

 X Q(t) = Y D = X + Y Q(t+1) / Z 0 0 0 0 / 0 0 1 1 1 / 1 1 0 1 1 / 1 1 1 1 1 / 0

We then put the table into a standard form that will lead to the state diagram.

 Present State Next State/Output X = 0 X = 1 0 0 / 0 1 / 1 1 1 / 1 1 / 0

We use this to build a state diagram.  The two states are Q = 0 and Q = 1.
The outputs are associated with the transitions.

Step 4: Construct the State Diagram.

Here again is the state table with output.

 Present State Next State/Output X = 0 X = 1 0 0 / 0 1 / 1 1 1 / 1 1 / 0

Here is the state diagram. Step 5: Identify the Circuit if Possible

This is often hard to do.

The key here is that the circuit stays in state 0 until the first 1 is input.
When the first 1 is input it goes to state 1 and stays there for all input.

We now characterize the output as a function of the input for each of the two states.

Input   Q(T)   Output

0          0           0           For Q(t) = 0, the output is X

1          0           1

0          1           1           For Q(t) = 1, the output is .

1          1           0

It can be shown that this is a serial generator for a two’s–complement.

The binary integer is read from Least Significant Bit to Most Significant Bit.

Up to and including the first (least significant) 1, the input is copied.

After that it is complemented.

0001 1100       becomes 1110 0100
0010 1101       becomes 1101 0011.               Try this, it works.

Design of a Sequential Circuit

We begin with the rules for a simple procedure to do the design.

1)     Derive the state diagram and state table for the circuit.

2)     Count the number of states in the state diagram (call it N) and calculate the
number of flip-flops needed (call it P) by solving the equation
2P–1 < N
£ 2P.  This is best solved by guessing the value of P.

3)     Assign a unique P-bit binary number (state vector) to each state.
Often, the first state = 0, the next state = 1, etc.

4)     Derive the state transition table and the output table.

5)     Separate the state transition table into P tables, one for each flip-flop.
WARNING: Things can get messy here; neatness counts.

6)     Decide on the types of flip-flops to use.  When in doubt, use all JK’s.

7)     Derive the input table for each flip-flop using the excitation tables for the type.

8)     Derive the input equations for each flip-flop based as functions of the input
and current state of all flip-flops.

9)     Summarize the equations by writing them in one place.

10)   Draw the circuit diagram.  Most homework assignments will not go this far,
as the circuit diagrams are hard to draw neatly.

Design a Modulo–4 Counter

Step 1: Derive the state diagram and state table for the circuit.

Here is the state diagram.  Note that it is quite simple and involves no input. Here is the state table for the modulo–4 counter

 Present State Next State 0 1 1 2 2 3 3 0

Step 2: Count the Number of States

Obviously, there are only four states, numbered 0 through 3.

Determine the number of flip–flops needed.

Solve 2P–1 < N £ 2P.  If N = 4, we have P = 2 and 21 < 4 £ 22.

We need two flip–flops for this design.  Number them 1 and 0.

Their states will be Q1 and Q0 or Y1 and Y0, depending on the context.

Remember: 21 = 2, 22 = 4, 23 = 8, 24 = 16, 25 = 32, 26 = 64, 27 = 128, etc.

Step 3 Assign a unique P-bit binary number (state vector)
to each state.

Here P = 2, so we assign a unique 2–bit number to each state.

For a number of reasons the first state, state 0, must be assigned Y1 = 0 and Y0 = 0.

For a counter, there is only one assignment that is not complete nonsense.

 State 2-bit Vector 0 0 0 1 0 1 2 1 0 3 1 1

The 2–bit vectors are just the unsigned binary equivalent of the decimal state numbers.

Step 4 Derive the state transition table.

 Present State Next State 0 00 01 1 01 10 2 10 11 3 11 00

Strictly speaking, we should have dropped the decimal labels in this step.

However, this representation is often useful for giving the binary numbers.

The state transition table tells us what the required next state will be
for each present state.

Step 5 Separate the state transition table into P tables,
one for each flip-flop.

Here P = 2, so we need two tables.

 Flip-Flop 1 Flip-Flop 0 Present State Next State Present State Next State Y1 Y0 Y1( t+1 ) Y1 Y0 Y0( t+1 ) 0    0 0 0    0 1 0    1 1 0    1 0 1    0 1 1    0 1 1    1 0 1    1 0

Each flip–flop is represented with the complete present state and its own next state.

Step 6 Decide on the types of flip-flops to use.
When in doubt, use all JK’s.

Our design will use JK flip–flops.

For design work, it is important that we remember the excitation table.

Here it is.

 Q( t ) Q( t+1 ) J K 0 0 0 d 0 1 1 d 1 0 d 1 1 1 d 0

Step 7 Derive the input table for each flip-flop using the excitation tables for the type.

Here is the table for flip–flop 1.

 PS NS Input Y1 Y0 Y1 J1 K1 0 0 0 0 d 0 1 1 1 d 1 0 1 d 0 1 1 0 d 1

Here is the table for flip–flop 0.

 PS NS Input Y1 Y0 Y0 J0 K0 0 0 1 1 d 0 1 0 d 1 1 0 1 1 d 1 1 0 d 1

Step 8 Derive the input equations for each flip-flop

I use a set of intuitive rules based on observation and not on formal methods.

1)     If a column does not have a 0 in it, match it to the constant value 1.

If a column does not have a 1 in it, match it to the constant value 0.

2)     If the column has both 0’s and 1’s in it, try to match it to a single variable,
which must be part of the present state.  Only the 0’s and 1’s in a column
must match the suggested function.

3)     If every 0 and 1 in the column is a mismatch, match to the complement
of a function or a variable in the present state.

4)     If all the above fails, try for simple combinations of the present state.

NOTE:    The use of the complement of a state in step 3 is due to the fact that
each flip–flop outputs both its state and the complement of its state.

Step 8 Derive the input equations for each flip-flop

Here is the input table for Flip–Flop 1

 PS NS Input Y1 Y0 Y1 J1 K1 0 0 0 0 d 0 1 1 1 d 1 0 1 d 0 1 1 0 d 1

J1 = Y0      K1 = Y0

Here is the input table for Flip–Flop 0

 PS NS Input Y1 Y0 Y0 J0 K0 0 0 1 1 d 0 1 0 d 1 1 0 1 1 d 1 1 0 d 1

J0 = 1        K0 = 1

Step 9 Summarize the equations by writing them in one place.

Here they are.

J1 = Y0             K1 = Y0

J0 = 1               K0 = 1

For homework and tests, this is required so that I can easily find the answers.

Step 10   Draw the circuit diagram. But note that each flip–flop has input J = K.  This suggests a simplification.

Step 10A   Draw the circuit diagram again.

Here is a simpler version.
{"ft_lang_label":"__label__en","ft_lang_prob":0.7711256,"math_prob":0.9910351,"size":11493,"snap":"2023-40-2023-50","text_gpt3_token_len":3804,"char_repetition_ratio":0.17851858,"word_repetition_ratio":0.27525058,"special_character_ratio":0.34159923,"punctuation_ratio":0.09054163,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.99621314,"pos_list":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],"im_url_duplicate_count":[null,4,null,4,null,4,null,4,null,8,null,8,null,4,null,4,null,4,null,4,null,4,null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2023-09-30T11:48:11Z\",\"WARC-Record-ID\":\"<urn:uuid:74bf5d61-7975-455c-827d-ea240da8963f>\",\"Content-Length\":\"198238\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:5d25df53-951c-459c-b228-712752db92e4>\",\"WARC-Concurrent-To\":\"<urn:uuid:25129290-df8a-4d01-a2fe-7a3c33032305>\",\"WARC-IP-Address\":\"216.180.158.17\",\"WARC-Target-URI\":\"http://edwardbosworth.com/My5155_Slides/Chapter07/SequentialCircuits.htm\",\"WARC-Payload-Digest\":\"sha1:SEDJTPYX4LPBKWL5R5LKWBMCWONG27BV\",\"WARC-Block-Digest\":\"sha1:YIDRDQI6P4DMKX276JTFQIDRIV24DWAK\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2023/CC-MAIN-2023-40/CC-MAIN-2023-40_segments_1695233510676.40_warc_CC-MAIN-20230930113949-20230930143949-00389.warc.gz\"}"}