Lecture Notes For Digital Electronics
Lecture Notes For Digital Electronics
com
The convention for naming these states is illustrated in Fig. 1. The “positive true” case
is illustrated. The relationship between the logic state and label (in this case “switch open”)
at some point in the circuit can be summarized with the following:
The labelled voltage is High (Low) when the label’s stated function is True (False).
In the figure, the stated function is certainly true (switch open), and this does correspond to
a high voltage at the labelled point. (Recall that with the switch open, Ohm’s Law implies
that with zero current, the voltage difference across the “pull up” resistor is zero, so that
1
mywbut.com
the labelled point is at +5 Volts. With a closed switch, the labelled point is connected to
ground, with a 5 Volt drop across the resistor and a current of I = V /R = 5 mA through
it.)
+5 V
1k
switch open
With the convention known as “negative true”, the label would be changed to “switch
closed” with a bar over it: switch closed. Our statement becomes:
The labelled voltage is Low (High) when the label’s stated function is True (False).
So in the figure, the stated function (switch closed) is true when the voltage is low. The bar
is meant to envoke the boolean inversion operation: T̄ = F, F̄ = T, T̄¯ = T, and so forth.
2
mywbut.com
Yet another convention is Gray code. You have a homework problem to practice this.
This is less commonly used.
2. Add some number to −2MSB to get the number you want. For 4-bit numbers an
example of finding the 2’s complement of 5 is −5 = −8 + 3 = 1000 + 0011 = 1011.
3
mywbut.com
All of the logical gate functions, as well as the Boolean relations discussed in the next
section, follow from the truth tables for the AND and OR gates. We reproduce these below.
We also show the XOR truth table, because it comes up quite often, although, as we shall see,
it is not elemental.
4
mywbut.com
A B Q
A
Q 0 0 0
B 1 0 0
0 1 0
1 1 1
Figure 3: AND gate.
A B Q
A 0 0 0
Q 1 0 1
B
0 1 1
1 1 1
Figure 4: OR gate.
A B Q
0 0 0
A
Q 1 0 1
B 0 1 1
1 1 0
5
mywbut.com
Recall that the text sometimes uses an apostrophe for inversion (A0 ). We use the standard
overbar notation (A).
We can use algebraic expressions to complete our definitions of the basic logic gates
we began above. Note that the Boolean operations of “multiplication” and “addition” are
defined by the truth tables for the AND and OR gates given above in Figs. 3 and 4. Using
these definitions, we can define all of the logic gates algebraically. The truth tables can also
be constructed from these relations, if necessary. See Fig. 2 for the gate symbols.
• NAND: Q = AB
• NOR: Q = A + B
• INV: Q = A
• BUF: Q = A
We see that this truth table is identical to the one for the XOR operation. Therefore, we
can write
A ⊕ B = AB + AB (1)
A schematic of this expression in terms of gates is given in Fig. 6 (as well as Fig. 8.25 of
the text). Recall that the open circles at the output or input of a gate represent inversion.
6
mywbut.com
A
Q = Q
B
2.2.3 DeMorgan
Perhaps the most interesting of the Boolean identities are the two known as DeMorgan’s
Theorems:
A + B = ĀB̄ (or, A + B = ĀB̄) (2)
AB = A + B (or, AB = A + B) (3)
These expressions turn out to be quite useful, and we shall use them often.
An example of algebraic logic manipulation follows. It is the one mentioned at the end
of Lab 1. One is to show that an XOR gate can be composed of 4 NAND gates. From the
section above we know A ⊕ B = AB + AB. Since AA = 0 and BB = 0, we can add these,
rearrange, and apply the two DeMorgan relations to give
A ⊕ B = A(A + B) + B(A + B) = A(AB) + B(AB) = A(AB) B(AB)
7
mywbut.com
1. Write down an expression directly from the truth table. Use Boolean algebra, if desired,
to simplify.
2. Use Karnaugh mapping (“K-map”). This is only applicable if there are ≤ 4 inputs.
In our example above, we can use two different ways of writin down a result directly from
the truth table. We can write down all TRUE terms and OR the result. This gives
Q = ĀB̄ + ĀB + AB
While correct, without further simplification this expression would involve 3 2-input AND
gates, 2 inverters, and 1 3-input OR gate.
Alternatively, one can write down an expression for all of the FALSE states of the truth
table. This is simpler in this case:
Q = AB̄ → Q = AB̄ = Ā + B
where the last step results from Eqn. 3. Presumably, the two expressions can be found to
be equivalent with some algebra. Certainly, the 2nd is simpler, and involves only an inverter
and one 2-input OR gate.
8
mywbut.com
Finally, one can try a K-map solution. The first step is to write out the truth table in
the form below, with the input states the headings of rows and columns of a table, and the
corresponding outputs within, as shown below.
Q = Ā + B
Q = a1 a0 + a2 a0 = a0 (a1 + a2 )
9
mywbut.com
10
mywbut.com
ai a
S Si
bi b Σ
Cout Cout
Cin Cin i
i
Figure 7: Block schematic of full adder. (We name our adder the “Σ chip”).
The scheme for the full adder is outlined in Fig. 7. Imagine that we are adding two n-bit
binary numbers. Let the inputs ai and bi be the i-th bits of the two numbers. The carry in
bit Cini represents any carry from the sum of the neighboring less significant bits at position
i − 1. That is, Cini = 1 if ai−1 = bi−1 = 1, and is 0 otherwise. The sum Si at position i is
therefore the sum of ai , bi , and Cini . (Note that this is an arithmetic sum, not a Boolean
OR.) A carry for this sum sets the carry out bit, Couti = 1, which then can be applied to the
sum of the i + 1 bits. The truth table is given below.
Cini ai bi Si Couti
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
With Cini = 0, we see that the output sum Si is just given by the XOR operation, ai ⊕ bi .
And with Cini = 1, then Si = ai ⊕ bi . Perhaps the simplest way to express this relationship
is the following:
Si = Cini ⊕ (ai ⊕ bi )
To determine a relatively simple expression for Couti , we will use a K-map:
Cini \ai bi 00 01 11 10
0 0 0 1 0
1 0 1 1 1
11
mywbut.com
This yields
Couti = ai bi + Cini ai + Cini bi = ai bi + Cini (ai + bi )
which in hardware would be 2 2-input OR gates and 2 2-input AND gates.
As stated above, the carry bits allow our adder to be expanded to add any number of
bits. As an example, a 4-bit adder circuit is depicted in Fig. 8. The sum can be 5 bits, where
the MSB is formed by the final carry out. (Sometimes this is referred to as an “overflow”
bit.)
a3 a2 a1 a0
b3 b2 b1 b0
a b a b a b a b
Cout Σ Cin Cout Σ Cin Cout Σ Cin Cout Σ Cin
S S S S
S S S S S
4 3 2 1 0
2.5 Multiplexing
A multiplexer (MUX) is a device which selects one of many inputs to a single output. The
selection is done by using an input address. Hence, a MUX can take many data bits and
put them, one at a time, on a single output data line in a particular sequence. This is an
example of transforming parallel data to serial data. A demultiplexer (DEMUX) performs
the inverse operation, taking one input and sending it to one of many possible outputs.
Again the output line is selected using an address.
A MUX-DEMUX pair can be used to convert data to serial form for transmission, thus
reducing the number of required transmission lines. The address bits are shared by the MUX
and DEMUX at each end. If n data bits are to be transmitted, then after multiplexing, the
number of separate lines required is log2 n + 1, compared to n without the conversion to
serial. Hence for large n the saving can be substantial. In Lab 2, you will build such a
system.
Multiplexers consist of two functionally separate components, a decoder and some switches
or gates. The decoder interprets the input address to select a single data bit. We use the
example of a 4-bit MUX in the following section to illustrate how this works.
12
mywbut.com
an (optional) enable bit E which is used for expansion (discussed later). First we will design
the decoder.
E MUX
D3
D2 GATES Q
D1 /SWITCHES
D0
C3 C2 C1 C0
A1
DECODER
A0
We need m address bits to specify 2m data bits. So in our example, we have 2 address
bits. The truth table for our decoder is straightforward:
A1 A0 C0 C1 C2 C3
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1
The implementation of the truth table with standard gates is also straightforward, as
given in Fig. 10.
C3 C2 C1 C0
A1
A0
For the “gates/switches” part of the MUX, the design depends upon whether the input
data lines carry digital or analog signals. We will discuss the analog possibility later. The
digital case is the usual and simplest case. Here, the data routing can be accomplished
13
mywbut.com
simply by forming 2-input ANDs of the decoder outputs with the corresponding data input,
and then forming an OR of these terms. Explicitly,
Q = C0 D0 + C1 D1 + C2 D2 + C3 D3
Finally, if an ENABLE line E is included, it is simply ANDed with the righthand side of this
expression. This can be used to switch the entire MUX IC off/on, and is useful for expansion
to more bits. as we shall see.
14
mywbut.com
S S
Q Q
Q Q
R R
S
Q
Q
R
The state described by the last row is clearly problematic, since Q and Q should not be
the same value. Thus, the S = R = 1 inputs should be avoided.
From the truth table, we can develop a sequence such as the following:
15
mywbut.com
1. R = 0, S = 1 ⇒ Q = 1 (set)
3. R = 1, S = 0 ⇒ Q = 0 (reset)
4. R = 0, S = 0 ⇒ Q = 0 (Q = 0 state retained)
In alternative language, the first operation “writes” a true state into one bit of memory.
It can subsequently be “read” until it is erased by the reset operation of the third line.
+5 V
1k
1k
+5 V
A B Q
1 0 0
0 1 1
1 1 retains previous
0 0 not allowed
16
mywbut.com
S
Q
R Q
CLK
Sn Rn Qn
1 0 1
0 1 0
0 0 Qn−1
1 1 avoid
We are now set to make a subtle transition for our next version of the clocked flip-flop.
The flip-flop memory is being used to retain the state between clock pulses. In fact, the
state set up by the S and R inputs can be represented by a single input we call “data”, or
17
mywbut.com
D. This is shown in Fig. 15. Note that we have explicitly eliminated the bad S = R = 1
state with this configuration.
We can override this data input and clock sychronization scheme by including the “jam
set” (S) and “jam reset” (R) inputs shown in Fig. 15. These function just as before with
the unclocked SR flip-flop. Note that these “jam” inputs go by various names. So sometimes
the set is called “preset” and reset is called “clear”, for example.
_
S
D
Q
_
CLK R
Figure 15: A “D-type transparent” flip-flop with jam set and reset.
A typical timing diagram for this flip-flop is given in Fig. 16. Note that the jam reset
signal R overrides any action of the data or clock inputs.
CLK
D
_
R
Figure 16: Example of timing diagram for the transparent D flip-flop. (It is assumed that S
is held HIGH throughout.)
18
mywbut.com
the clocked flip-flop of Fig. 15 is called a transparent D-type flip-flop or latch. (An example
in TTL is the 7475 IC.)
The solution to this is the edge-triggered flip-flop. We will discuss how this works for one
example in class. It is also discussed some in the text. Triggering on a clock rising or falling
edge is similar in all respects to what we have discussed, except that it requires 2–3 coupled
SR-type flip-flops, rather than just one clocked SR flip-flop. The most common type is the
positive-edge triggered D-type flip-flop. This latches the D input upon the clock transition
from LOW to HIGH. An example of this in TTL is the 7474 IC. It is also common to employ a
negative-edge triggered D-type flip-flop, which latches the D input upon the clock transition
from HIGH to LOW.
The symbols used for these three D-type flip-flops are depicted in Fig. 17. Note that
the small triangle at the clock input depicts positive-edge triggering, and with an inversion
symbol represents negative-edge triggered. The JK type of flip-flop is a slightlier fancier
version of the D-type which we will discuss briefly later. Not shown in the figure are the
jam set and reset inputs, which are typically included in the flip-flop IC packages. In timing
diagrams, the clocks for edge-triggered devices are indicated by arrows, as shown in Fig. 18.
D Q D Q D Q J
Q
CLK
CLK CLK CLK
K
Figure 17: Symbols for D-type and JK flip-flops. Left to right: transparent D-type, positive-
edge triggered D-type, negative-edge triggered D-type, and positive-edge triggered JK-type.
CLK CLK
Figure 18: Clocks in timing diagrams for positive-edge triggered (left) and negative-edge
triggered (right) devices.
For edge-triggered devices, the ambiguity regarding latch timing is reduced significantly.
But at high clock frequency it will become an issue again. Typically, the requirements are
as follows:
• The data input must be held for a time tsetup before the clock edge. Typically, tsetup ≈
20 ns or less.
• For some ICs, the data must be held for a short time thold after the clock edge. Typically
thold ≈ 3 ns, but is zero for most newer ICs.
• The output Q appears after a short propagation delay tprop of the signal through the
gates of the IC. Typically, tprop ≈ 10 ns.
19
mywbut.com
From these considerations we see that for clocks of frequency much less than ∼ 1/(10ns) =
100 MHz, these issues will be unimportant, and we can effectively consider the transitions
to occur instantaneously in our timing diagrams.
20
mywbut.com
IN
D Q OUT
Q=OUT
IN CLK _
Q _
D=Q
J
Q
CLK
Jn Kn Qn
K 1 0 1
0 1 0
0 0 Qn−1
1 1 Qn−1
21
mywbut.com
0 1 2 3
2 2 2 2
D Q D Q D Q D Q
Figure 21: Asynchronous (“ripple”) counter made from cascaded D-type flip-flops.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
IN
22
mywbut.com
4.3 Registers
4.3.1 Basic Register
The figure below represents a 4-bit memory. We can think of it as 4 individual D-type
flip-flops. The important point about a data register of this type is that all of the inputs are
latched into memory synchronously by a single clock cycle.
D3 Q3
D2 Q2
D1 Q1
D0 Q0
CLK
Q0 Q1 Q2 Q3
SERIAL
D Q D Q D Q D Q
IN
CLK CLK CLK CLK
CLK
23
mywbut.com
5 Analog/Digital Conversion
In this section we discuss the important topic of analog to digital conversion (often written
A/D), and digital to analog conversion (D/A). On one hand, most electrical measurements
are intrinsically analog. To take advantage of the great capabilities available for digital data
storage, processing, and computation, on the other hand, requires the conversion of analog
to digital. Hence, analog to digital (A/D) conversion techniques have become extremely
important. A great deal of technical effort has gone into producing A/D converters (ADCs)
which are fast, accurate, and cheap. D/A converters (DACs) are also very important. For
example, video monitors convert digital information generated by computers to analog signals
which are used to direct the electron beam at a specified portion of the monitor screen. DACs
are conceptually simpler than ADCs, although it is diffcult in practice to build a precise DAC.
We will discuss D/A conversion before A/D. But first we go over some underlying ideas.
24
mywbut.com
2. The voltage gain is G ≡ Vout /Vin = −R2 /R1 . An equivalent statement is that for a
current at the − input of Iin = Vin /R1 , the output voltage is Vout = GVin = −R2 I =
−Vin R2 /R1 . Sometimes this is written in the form Vout = gIin , where g is the transcon-
ductance, and g = −R2 in this case.
R2
R1
VIN -
VOUT
+
The basic idea of most DACs is then made clear by the 4-bit example illustrated in Fig.
26. The input 4-bit digital signal defines the position of the switches labelled a0 –a3 . A
HIGH input bit would correspond to a switch connected to 1.0 V, whereas a LOW connects to
ground. The configuration in the figure represents a binary input of 1010, or 1010 . Since the
virtual ground keeps the op-amp input at ground, then for a switch connected to ground,
there can be no current flow. However, for switches connected to 1.0 V, the current presented
to the op-amp will be 1.0 V divided by the resistance of that leg. All legs with HIGH switches
then contribute some current. With the binary progression of resistance values shown in the
figure, the desired result is obtained. So for the example shown, the total current to the
op-amp is I = 1.0/R + 1.0/(4R) = 5/(4R). The output voltage is
When all input bits are HIGH (1111 = 1510 ), we find Vout = 15/8 V. A simple check of our
scheme shows that
(5/4)/(15/8) = 2/3 = 10/15 = 1010/1111
as expected.
25
mywbut.com
1.0V
R
a3 R
2R
a2
4R -
a1 VOUT
+
8R
a0
are to be contrasted with the scheme represented by the circuit of Fig. 26, which employs
as many resistance values as there are bits. The idea behind the R-2R ladder hinges on
noticing the pattern of equivalences represented by Fig. 27, which can be used to replicate
an arbitrarily long ladder, and hence handle in arbitrary number of bits.
R R
V V V/2 V V/2
2R = R = 2R 2R etc.
Figure 27: Principle of the R-2R ladder. The rightmost 2R resistor can be indefinitely
relicated with this equivalent circuit.
26
mywbut.com
All of these techniques use a device known as a comparator. This was discussed in 431/531
and in the text Chapters 4 and 9. Here, we will not discuss how comparators work, but we do
need to know what they do. There are many makes of comparators. We will use the model
LM311 in lab. Figure 28 shows a comparator schematically. Internally, the comparator can
be thought of as a fast, very high-gain differential amplifier (“A”) with inputs “+” and “−.”
We can put a “threshold voltage” at the “−” input. Call it Vth . The circuit input Vin is
connected to the “+” input. When Vin > Vth , the comparator amplifies this difference until
the output reaches its largest possible value, which is determined by the connection through
the pull-up resistor. In the configuration shown here, as well as in Lab 5, the ∼ 1 kΩ pull-up
resistor is connected to +5 V. (Note that while +5 V is convenient for many digital circuits,
it is possible to use other values, such as +12 V.) When Vin < Vth , the output swings the
other way. This level is usually determined by a connection to one of the comparator pins.
Here, it is ground.
+ R
A
v out
-
Hence, the comparator represents a one-bit ADC. When the analog input exceeds the
pre-defined threshold, the output goes to digital HIGH, and when the input is less that the
threshold, the output goes to digital LOW.
27
mywbut.com
Vo
R/2
+ C2
C
-
R
Comb.
Vin Q1
+ C1 Logic
C
- (Gates) Q0
+ C0
C
-
R/2
Let’s go through a concrete example. Assume that our FADC circuit is designed to handle
analog voltage input signals in the range −0.5 to 3.5 V. Thus, we have a 4-volt total input
range, with each interval spanning 1.0 V. Therefore, each state will have a maximum error,
or resolution, of half the interval, or 0.5 V. (This is 4.0/(2 · 2n ), as we said previously in our
definition of resolution.) So an input which is in the range 2.5–3.5 V will give a HIGH output
only to comparator output C2 , and our digital estimation will correspond to 3.0 V. Hence,
the threshold for the upper comparator (its “−” input) should be set at 2.5 V. Similarly for
the remaining comparators we work out the values which are given in the table below, where
Vest is the digital estimate which corresponds to each state.
Using Ohm’s and Kirchoff’s Laws, we arrive at the resistance ratios shown in Fig. 29 in
order to achieve the desired comparator thresholds. All that remains is to determine the gate
logic to convert the pattern of comparator outputs to a 2-bit digital output. Generalizing
from the above, we see that we have agreement with our previous statements: For an n-bit
ADC, we require 2n − 1 comparators, and the resolution is ∆V /2n+1, where ∆V is the full
range of analog input.
28
mywbut.com
+5 V Clock In
Vcc
Analog
+
In
311 74LS503 SAR
-
Vee
_
8
HCT574
8 8 8 Digital
AD557 / / D Q / Out
DAC
8-bit
Register
29
mywbut.com
Vin (V)
10
7.09 V
0 time
0 2 4 6 8 (clock cycles)
Figure 31: Binary search algorithm in action. The analog input is 7.09 V. The digital
estimate for each clock cycle is represented by the solid line, and corresponds to the value of
Vest in the table below.
Clock Cycle, n SAR Bits SAR Bit Sum Vest (V) comp. decision
0 01111111 127 4.98 too small
1 10111111 127 + 64 = 191 7.49 too big
2 10011111 191 − 32 = 159 6.24 too small
3 10101111 159 + 16 = 175 6.86 too small
4 10110111 175 + 8 = 183 7.18 too big
5 10110011 183 − 4 = 179 7.02 too small
6 10110101 179 + 2 = 181 7.10 too big
7 10110100 181 − 1 = 180 7.06 too small
The binary search algorithm is guaranteed to find the best possible estimate in a number
of clock cycles equal to the number of bits. In the example above, the best estimate was
actually determined on the seventh clock cycle (n = 6). But since the input value was
between the digital estimates 180 and 181, there was no way for the ADC to determine
which estimate was closer to the actual input value (without adding one more bit). Since
the input can fall anywhere within 180 and 181 with equal likelihood, there should be no
30
mywbut.com
bias introduced with this method due to systematically choosing a digital estimate which is
too small or too big. This is the desired outcome.
The binary-search algorithm is fast and efficient, and also has the advantage that it
completes its estimation in a well determined number of clock cycles. Hence, the final digital
result can always be latched after n clock cycles, where n is the number of bits. (Many
ADCs actually wait one additional clock cycle in order to guarantee that bits have settled,
are latched properly, and are reset for the next input.
The process begins when a rising-edge signal is sent to the flip-flop, for example from
a debounced switch. Since the D input is HIGH, then Q goes HIGH. Hence the counter, no
longer being held at reset by the flip-flop, begins counting. At the same time the FET is
31
mywbut.com
switched off and a signal is sent to the − input of the comparator. Now we must analyze
the nature of this signal.
The voltage across a capacitor Vcap , is related to its stored charge by Vcap = Q/C, where
C is the capacitance. Differentiating gives dVC /dt = I/C. Now, because of the current
source, the right-hand side of this equation is a constant. Finally, since one side of the
capacitor is at ground, then the comparator + input is just Vcap . Hence, we can integrate
our expression over a time interval ∆t to give:
V+ = Vcap = (I/C)∆t
Since I/C is a known constant, this equation allows one to convert the V+ input to a time
∆t to be measured by the counter. This linear relation between V+ (= Vcap ) and ∆t is
illustrated in the figure. The counter stops (is reset) and its final count stored in the register
when V+ becomes equal to Vin, thus changing the state of the comparator. This also resets
the flip-flop, thus returning the circuit to its initial state.
The dual-slope ADCs work similarly, but with a two-step process. First, a capacitor
is charged for a fixed time τ with a current source whose current is proportional to Vin ,
I = αVin, where α is the constant of proportionality. Hence, Vcap is proportional to τ :
Vcap = αVin τ /C. The capacitor is then discharged at constant current I 0 and the time ∆t to
do so is measured. Therefore,
32
mywbut.com
INPUTS k m OUTPUTS
A0-Ak-1 Comb. Logic B0-Bm-1
or
RAM
n n
Dn-1 Qn-1
Dn-2 Qn-2
. .
. .
. .
D2 Q2
D1 Q1
D0 Q0
CLK
The strategy for applying this scheme to a given problem consists of the following:
1. Identify the number of required states, `. The number of bits of memory (e.g. number
of flip-flops) required to specify the m states is at minimum n = log2 (m).
2. Make a state diagram which shows all states, inputs, and outputs.
3. Make a truth table for the logic section. The table will have n + k inputs and n + m
outputs.
33
mywbut.com
A
u=1 u=1
00
u=0 u=0
D B
11 01
u=0 u=0
C
10 u=1
u=1
Figure 34: State diagram for 2-bit up/down synchronous counter.
Our processor has one input bit u, which programs the up-counting (u = 1) or down-
counting (u = 0) functions. In this case, the state machine outputs are the two bits of the
present state, Q1 Q0 , so we do not reproduce them in our truth table. The truth table for
the logic is below.
34
mywbut.com
We can now envoke the logic as usual. We have 2 “outputs”, D0 and D1 , which are to
be evaluated separately. From the truth table, or using a K-map, we see that
D1 = u ⊕ (Q0 ⊕ Q1 ) ; D0 = Q0
A
00
D B p=1
11 01
C
10
The truth table for the combinational logic is below. It is important that the “extra
state” D = 11 be given an exit path, otherwise your processor may end up there upon
power-up and remain stuck. (This effect has probably come to your attention with the
“frozen” computer, which may require a reboot.) Also, note that we could have taken the
output p from any of the states A, B, or C.
35
mywbut.com
What are the logic expressions for our 3 “outputs” of this truth table (D1 , D2 , and p) ?
How would this be implemented with D-type flip-flops and logic gates? With JK flip-flops
replacing the D-type?
36
mywbut.com
37
mywbut.com
• RAM is organized into many data “words” of some prescribed length. For example, a
RAM which has 8K = 8192 memory locations, with each location storing a data word
of “width” 16 bits, would be referred to as a RAM of size 8K × 16. The total storage
capacity of this memory would therefore be 128KB, or simply a “128K” memory.
(With modern very large scale integration (VLSI) technology, a typical RAM IC might
be ∼ 16 MB.
• Besides the memory “size,” the other important specification for memory is the access
time. This is the time delay between when a valid request for stored data is sent to
a memory and when the corresponding bit of data appears at the output. A typical
access time, depending upon the technology of the memory, might be ∼ 10 ns.
Data
D Q
In
CLK
D7
8-->1
.. MUX
Q7 ... . Data
1-->8 Q
D1 Out
DeMUX ..
. D0
write WE Q1 a2 a1 a0
D
enable
Q0
a2 a1 a0
D Q
CLK
/ /
3 3
__
OE
a2 a1 a0
38
mywbut.com
Our example RAM has 6 external connections which are inputs (data in, write enable
(WE), 3-state enable (OE), and 3 address bits (A = a2 a1 a0 ), and has one output connection
(data out), giving 7 external connections total, plus 2 for power/ground. To write information
to the RAM, one would supply a valid address, for example A = 101. The data bit to be
written to location 101 is to appear at the data input as either a logic HIGH or LOW signal.
And to enable the writing into this bit, the WE signal must be asserted. This then appears
at the Q5 output of the demultiplexer, and is passed on to the appropriate flip-flop, which
stores the input data bit and passes it on to the Q5 multiplexer input.
To read data from our RAM, one asserts an address, so that the selected bit is sent to
the MUX output and then the 3-state buffer. The purpose of the 3-state buffer is to ensure
that no digital outputs are directly connected together, for example if our RAM output were
connected to a data “bus,” which in turn was connected to several other devices. Recall
that the 3-state devices have outputs which are effectively disconnected if there is no enable
signal. So if the output data connection of our RAM is connected to a data bus, then the OE
signal must be coordinated with any other outputs also connected to the data bus. When it
is OK to read data from the RAM (all other output devices are disconnected from the bus),
the OE signal is asserted and the MUX output will appear at the RAM output.
One could of course also store the 8 bits of data directly to an 8-bit data register, rather
than using the RAM configuration outlined above. In this case, the number of external
connections is 17 (8 data in, 8 data out, and 1 clock), compared with the 7 of our RAM. For
a more realistic case where the number of bits of memory n is much larger than our example,
we generalize the above to arrive at 4 + log2 (n) external connections for the RAM, compared
with 1 + 2n for the standalone register. Obviously for large n, the register is impractical,
whereas the RAM remains reasonable. Actually, it is even somewhat better than this for the
RAM case, since the number of external connections does not grow with the width of the
stored data words. Hence, a RAM of size 1K × 16 = 16 KB requires only 14 connections.
This is to be compared with 32,001 connections for the register. Note that the RAM can
only supply one bit at a time to the output. This may seem like a handicap, but is actually
well matched to standard microprocessors.
39
mywbut.com
INPUTS k m OUTPUTS
A0-Ak-1 Comb. Logic B0-Bm-1
or
RAM
n n
Dn-1 Qn-1
Dn-2 Qn-2
. .
. .
. .
D2 Q2
D1 Q1
D0 Q0
CLK
This ROM requires 3 address bits (2 for PS and 1 for input bit p), which corresponds to
8 locations in memory. Each location has a data word which has length 3 bits (2 for NS and
40
mywbut.com
1K X 8 ROM
1023
etc
4 i+1 6
Outputs External
8 10 Inputs
d7 d6 d5 d4 d3 d2 d1 d0 i
i-1
etc
0
4
4
D3 Q3
Next D2 Q2 Present
State D1 Q1 State
D0 Q0
CLK
Figure 38: Toward a microprocessor: Replacing the combinational logic with a memory.
1 for the output bit r). Therefore, the size of this memory is 8 × 3, or 24 total bits. A very
small ROM indeed. The programming of the ROM is very straightforward and can be read
directly from the truth table above. We just need to set an encoding convention. Let the
addresses be encoded as pQ1 Q0 and the data words as D1 D0 r. For example, let’s look at
the 5th row of the truth table. The address would be 100 and the data word at this address
would be 010. The remaining bits of the ROM would be programmed in the same way. So
one would initially “burn in” these bit patterns into the ROM and put it into the circuit.
That’s all there is to it. Of course if one were careful not to overwrite the memory, or if an
evolving logical pattern were required, then a RAM could be used instead of the ROM.
41
mywbut.com
is then applied step by step to the state machine inputs on successive clock cycles. Such a
stored sequence of operations is a program and the 256 operations represent the programming
operations. In Fig. 38 we have essentially configured a simple microprocessor. The inputs
and outputs would need to be connected to buses (via 3-state buffers where appropriate),
which in turn are also connected to memories which store the program and any output or
input data. The buses would also be connected to various input/output devices, mass storage
devices, etc.
42