Digital logic design 2

Preview:

Citation preview

DIGITALLOGIC DESIGN II

Logical Gates

AND Gate ConstructionTwo transistors are

connected in series using common collector configuration.

If both the inputs at A and B at the base of two transistors are high only then both the transistors will be on and output at the emitter will appear.

OR Gate ConstructionTwo common

collector transistors are connected in parallel.

If input appears high at either of the two transistors then output will appear.

Universal GateNAND and NOR Gates are called

Universal Gates because AND, OR and NOT gates can be created by using these gates.

NAND Gate Implementations

NOR Gate Implementations

10’s Complement9’s ComplementLet us take a decimal number 456,

9’s complement of this number will be9-4 = 59-5 = 49-6 = 3

9’s complement of 456 = 543Add 1 to get the 10’s Complement543 +1 = 544

2’S Complement Process The steps in the 2’s Complement process are similar to the 10’s Complement process. However, you will now use the base two. First, complement all of the digits in a number.

◦ A digit’s complement is the number you add to the digit to make it equal to the largest digit in the base (i.e., 1 for binary). In binary language, the complement of 0 is 1, and the complement of 1 is 0.

Second, add 1.

10

2’s Complement Examples

11

Example #1

Example #2

Complement Digits

Add 1

5 = 00000101

-5 = 11111011

11111010

+1

Complement Digits

Add 1

-13 = 11110011

13 = 00001101

00001100

+1

FUNCTIONS OF COMBINATIONAL LOGIC

Adder An ADDER tells the total number of 1s at the inputs

Let A=0 and B=0 then 0+0 = 0, (number of 1s is 0) Let A=0 and B=1 then 0+1 = 1, (number of 1s is 1) Let A=1 and B=0 then 1+0 = 1, (number of 1s is 1) Let A=1 and B=1 then 1+1= 10, (number of 1s is 2) When we add 1+1 the answer is 10 because decimal

1+1 = 2 and binary of 2 = 10. But the output of the OR gate will be 1 which is not the

right answer. The solution is a half-adder.

A

B

F

Binary AdditionWith the help of half adder, we can

design circuits that are capable of performing simple addition with the help of logic gates.

There are four possible combinations of single digit, two number addition:

0+0 = 00+1 = 11+0 = 11+1 = 10

Truth Table for Adding Two 1-Bit Numbers

INPUTS OUTPUTS

A B Q R

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 0

Half-Adder The result is shown in a truth-table below. ‘SUM’

is the normal output and ‘CARRY’ is the carry-out.INPUTS                 OUTPUTSA             B      CARRY       SUM      0              0              0              00              1              0              11              0              0              11              1              1              0

From the equation it is clear that this 1-bit adder can be easily implemented with the help of XOR Gate for the output ‘SUM’ and an AND Gate for the carry.

Hence A.B Carry BA Sum

Half-Adder Circuits

Exclusive OR Logic Circuit

Exclusive OR

Half-Adder LimitationIf we want to add 3 single digit

binary numbers then half-adder cannot perform it, because there are only two input ports.

We need 3 input ports to add 3 bits For that we use Full-Adder.

Full-AdderBy connecting two half-adders together, we can

add 3 single digit binary numbersWe need 3 input lines, one for each number.Two input lines feed into the first half adder;

the third input line functions as a carry-in line. The second half-adder has two input lines: the

output sum from the first half-adder, plus the third, carry-in input line.

Full Adder is used to add the output carry bit of the previous bits to next addition of the bits.

Full Adder can count the number of 1s upto three only.

In other words the maximum input bits are 3.

Full Adder Truth Table

Full-Adder Block Diagram

LSB bits are input through CARRY IN. MSB bits are input through Q. CARRY OUT of both the half adders is ORed. SUM is taken from the sum output of the second half adder.

CinBAABCoutCinBAS

)()(

Full Adder Circuit

Multi Bit AdditionLet’s move from adding 3 (or more)

single digit numbers to adding multi-bit numbers

First, note that the sum of adding two N-bit numbers can be N + 1 bits

This comes as a result of possibly obtaining a carry into the next column

Adding N-bit numbers isn’t an abstract consideration – it’s a real computing operation - at a minimum, a modern computer would add 16 bit numbers, done with a 16-bit adder

Multibit AdditionHere is the general rule: to add two

N-bit numbers, N full adders are required, one for each column in the sum

The first 2 inputs for each full adder come from the digits in the numbers to be added

The carry-out produced for each column is used as the carry-in for the next column to the left

At some point, you can have overflow as you exceed the adder circuitry capability.

2 Digit Adder A0 is the low order bit of A. A1 is the high order bit of A. B0 is the low order bit of B. B1 is the high order bit of B. Σ0is the low order bit of the sum. Σ1 is the high order bit of the sum. Cout is the Carry.

4 Digit Adder Two or more full-adders are added to form parallel binary

adders. Suppose we have two 4 digit binary numbers

X =X3 X2 X1 X0 and Y =Y3 Y2 Y1 Y0 then,4 bits full adder is as shown below

C0 is grounded because the there is no carry bit in the addition of first bits (LSBs)

Propagation DelayAll logic gates take a non-zero time

delay to respond to a change in input.This is the propagation delay of the

gate, typically measured in tens of nanoseconds.

X Y

time

X 1

0

Y 1

0

Propagation DelayThe propagation delay described above is

caused by parasitic capacitors inside the gates and the physical limitations of the devices used to build these gates.

Another cause of delay is the capacitor associated with the loads seen by a gate.

These capacitors are the result of the wiring (net delays) between gates (e.g. a long metal line connecting two gates on a chip) and the input capacitor of the gates as is shown in figure. 

These capacitors need to be charged or discharged through the gate that drives them (e.g. gate 1 in Figure a).

The more capacitors that need to be charged or discharged the longer it will take for the output to change.

Also, the longer the interconnection, the more resistance the nets will have.

The easiest way to visualize this is to use a hydraulic equivalent of a capacitor and a resistor: a bucket filled with water and a narrow pipe, respectively, as shown in Figure b.

The more buckets connected to the drain, the longer it will take to empty them.

Carry Ripple in Parallel AdderThe carry input to each adder is the

carry output from the previous adder. Since the output of each adder

depends on the carry from the previous adder, each adder must "wait" for the carry output of the previous adder.

This carry ripple slows down the addition circuit, especially as the number of bits in the adder increases.

Carry RippleA and B inputs change, corresponding changes

to CIN inputs ‘ripple’ through the circuit.

Full Adder

B A CIN

COUT SUM

Full Adder

B A CIN

COUT SUM

Full Adder

B A CIN

COUT SUM

B1 A1 B0 A0 B2 A2

CIN = 0

Q1 Q0 Q2

t = 0, A & B changet = 30 ns, Adder 0 outputs respondt = 60 ns, Adder 1 outputs respondt = 90 ns, Adder 2 outputs respond

Overflow Overflow occurs when the result of addition

does not fit in the representation being used. For example, if 4 bit unsigned numbers 6 =

0110 and 12 = 1100 are added the sum 18 overflows because maximum possible value for a 4 bit number is 15

Another Example: 6+4 using a three-bit adder.

(6)10 = (110)2 and (4)10 = (100)2

1 1 0 1 0 010 1 0

+

Binary SubtractionSubtraction Truth Table

0 – 0 = 010 – 1 = 111 – 1 = 10

Example:

Exercise: Subtraction 10 00 10 11 0 – 11 11 01 0

http://ryanstutorials.net/binary-tutorial/binary-arithmetic.php

1 1

Half SubtractorHalf Subtractor is used for

subtracting one single bit binary number from another single bit binary number.

Full SubtractorAs in the case of the addition using

logic gates, a full subtractor is made by combining two half-subtractors and an additional OR-gate.

A full subtractor has the borrow in capability (denoted as BORIN in the diagram below) and so allows cascading which results in the possibility of multi-bit subtraction.

Full Subtractor Circuit

Subtract B from A and C from the result of B-A

Carry Look Ahead AddersThe main idea behind carry look-

ahead addition is an attempt to generate all incoming carries in parallel and avoid waiting until the correct carry propagates from the previous full adder. 

Carry Look Ahead Adder Look at a 3 bit truth table

In the red marked rows we get Cout =1 when either x =1 or y=1, provided Cin=1.

In the green rows we get Cout = 1 when both x=1 and y = 1, whether Cin = 1 or 0.

Carry Look Ahead AdderThis can be represented in logical

equations as below:

The above equation says that◦A carry is generated if both operand bits

are 1, irrespective of the fact that the previous carry was 1 or 0.

◦An incoming carry is propagated if one of the operand bits is 1 and the other is 0 and the previous carry bit is also 1.

GenerationThe addition of two 1-digit inputs A and B is said to generate if the addition will always carry, regardless of whether there is an input carry.We know that AND logic gives 1 only when both A and B are 1.

Hence Generation(A,B) = A.B

Propagate:The addition of two 1-digit inputs A and B is said to propagate if the addition will carry whenever there is an input carry equal to 1.

In the case of binary addition,  propagates if and only if at least one of A or B is 1.

Hence P(A,B) = A xor B

p3g2

g3

p3p2g1

p3p2p1g0

p3p2p1p0c0

Binary MultiplicationBinary multiplication uses the same

technique as decimal multiplication. Multiplication

Rule0 x 0 = 00 x 1 = 01 x 0 = 01 x 1 = 1

Binary MultiplicationConsider the simple problem of

multiplying 1102 by 102.

1 1 0 1 00 0 0

1 1 0 1 1 0 0

Binary Multiplication

2 bit Binary Multiplication

2-bit Binary Multiplier

HA HA

4 bit Binary Multiplier

Assignment Find the output of the 2-bit multiplier

ifA = 1 0 and B = 0 1A = 1 1 and B = 1 1

Find the output for 4-bit multiplier ifA = 1010 and B = 0011A = 1001 and B = 0110

Multiplication by Arrays A slightly different implementation scheme is shown in

the figure below. This multiplier is constructed from an array of building

blocks, shown in the figure below. Each building block consists of an AND gate for

computing locally the corresponding partial product (XYg), an input passed into the block from above (Sum In), and a carry (Cin) passed from a block diagonally above.

It generates a carry out bit (COUT) and a new sum out bit (Sum Out).

Binary DivisionCompare X (dividend) and Y (divisor).

a) If X >= Y, the quotient bit is 1 and perform the subtraction X-Y. b) If X < Y, the quotient bit is 0 and do not perform any subtractions.

Shift Y one bit to the right and compare X and Y.

Binary Division

110 is not subtracted from 111. 110 is just copied down as it is and 1 is added from the next digit

Binary DividerWe will consider the design of a

parallel divider for positive binary numbers.

As an example, we will design a circuit to divide an 8-bit dividend by a 4-bit divisor to obtain a 4-bit quotient.

8-Bit Division

8-Bit DivisionJust as binary multiplication can be

carried out as a series of add and shift operations, division can be carried out by a series of subtraction and shift operations.

To construct the divider, we will use a 9-bit dividend register and a 4-bit divisor register.

During the division process, instead of shifting the divisor to the right before each we will shift the dividend to the left.

Note that an extra bit is required on the left end of the dividend register so that a bit is not lost when the dividend is shifted left.

Instead of using a separate register to store the quotient, we will enter the quotient bit-by-bit into the right end of the dividend register as the dividend is shifted left.

Circuits for initially loading the dividend into the register will be added later.

8-Bit Division

8-Bit Division Initially, the dividend and divisor are entered as

follows:

Blue area shows that these four registers are for quotient bits.

Bits in red color show the dividend bits In this example subtraction cannot be carried out

without a negative result, so we will shift before we subtract.

X8 X7 X6 X5 X4 X3 X2 X1 X0

1 0 0 0 0 1 1 11 1 0 1Y3 Y2 Y1 Y0

8-Bit Division Instead of shifting the divisor one place to

the right, we will shift the dividend one place to the left:

Now 1101 is subtracted from 10000 and result is stored at X8 X7 X6 X5 X4 and at X0 the quotient 1 is stored

X8 X7 X6 X5 X4 X3 X2 X1 X0

1 0 0 0 0 1 1 1 01 1 0 1Y3 Y2 Y1 Y0

X8 X7 X6 X5 X4 X3 X2 X1 X0

0 0 0 1 1 1 1 1 11 1 0 1Y3 Y2 Y1 Y0

8-Bit Division Next, we shift the dividend one place to the left:

Subtraction is not possible because it would produce a negative result.

Shift the dividend to the left again, and the second quotient bit remains 0:

X8 X7 X6 X5 X4 X3 X2 X1 X0

0 0 1 1 1 1 1 1 01 1 0 1Y3 Y2 Y1 Y0

X8 X7 X6 X5 X4 X3 X2 X1 X0

0 1 1 1 1 1 1 0 01 1 0 1Y3 Y2 Y1 Y0

8-Bit Division Now 1101 is subtracted from 01111 and result is

stored at X8 X7 X6 X5 X4 and at X0 the quotient 1 is stored.

Next, we shift the dividend one place to the left:

Yellow shaded area is the remainder and blue shaded area is quotient or answer

X8 X7 X6 X5 X4 X3 X2 X1 X0

0 0 0 1 0 1 1 0 11 1 0 1Y3 Y2 Y1 Y0

X8 X7 X6 X5 X4 X3 X2 X1 X0

0 0 1 0 1 1 0 1 01 1 0 1Y3 Y2 Y1 Y0

Divider Overflow If the quotient would contain more bits than are

available for storing the quotient, we say that an overflow has occurred.

For the divider, we have previously considered, overflow would occur if the quotient is greater than 4 bits.

It is not actually necessary to carry out the division to determine if an overflow condition exists, because an initial comparison of the dividend and divisor will tell if the quotient will be too large.

For example, if we attempt to divide 135 by 7, the initial contents of the registers would be:

Divider OverflowBecause subtraction can be carried out with

a nonnegative result, we should subtract the divisor from the dividend and enter a quotient bit of 1 in the rightmost place in the dividend register.

However, we cannot do this because the rightmost place contains the least significant bit of the dividend, and entering a quotient bit here would destroy that dividend bit.

Therefore, the quotient would be too large to store in the 4 bits we have allocated for it, and we have detected an overflow condition.

Divider Overflow DetectionIf initially X8 X7 X6 X5 X4 ≥ Y3 Y2 Y1 Y0

i.e., if the left five bits of the dividend register exceed or equal the divisor,Then the quotient will be greater than 15 and an overflow occurs.

Operation of the Divider Circuit A shift signal (Sh) shifts the dividend one place to

the left on the next rising clock edge. Because the subtracter is a combinational circuit, it

computes X8 X7 X6 X5 X4 - Y3 Y2 Y1 Y0, and this difference appears at the subtracter output after a propagation delay.

A subtract signal (Su) will load the subtracter output into X8 X7 X6 X5 X4 and set the quotient bit (the rightmost bit in the dividend register) to 1 on the next rising clock edge.

To accomplish this, Su is connected to both the Ld input on the shift register and the data input on flip-flop X0.

8-Bit Division

Operation of the Divider Circuit If the divisor is greater than the five

leftmost dividend bits, the comparator (we see later on that how a comparator works) output is C=0; otherwise, C=1.

The control circuit generates the required sequence of shift and subtract signals.

Whenever C=0, subtraction cannot occur without a negative result, so a shift signal is generated.

Whenever C=1, a subtract signal is generated, and the quotient bit is set to one.

Operation of Divider Circuit When a start signal (St) occurs, the 8-bit dividend

and 4-bit divisor are loaded into the appropriate registers.

If C is 1, the quotient would require five or more bits. Because space is only provided for a 4-bit quotient,

this condition constitutes an overflow, so the divider is stopped, and the overflow indicator is set by the V output.

Normally, the initial value of C is 0, so a shift will occur first.

Then, if C=1, subtraction occurs. After the subtraction is completed, C will always be 0,

so the next active clock edge will produce a shift.

At S0 : ◦ If input is St (Start) = 0; remain at S0 (stop state)◦ if input St (Start) =1 then Ld (Load) = 1 which

loads the divisor and dividend into the registers. At S1 :

◦ If input is C = 0 then output is Sh (Shift) = 1 which indicates to shift the values in the dividend register once.

◦ If Input C = 1 then V = 1 which indicates overflow will occur therefore stop the division process.

At S2, S3 and S4 : ◦ If input is C = 0 then Sh=1◦ If Input C = 1 then Su (Subtracter) = 1 which indicates to

load the subtracter output into X8 X7 X6 X5 X4 and set the quotient bit (the rightmost bit in the dividend register) to 1 on the next rising clock edge and remain at the same state.

At S5 : ◦ If input C = 0 then no output is generated and divider stops

division process.◦ If Input C = 1 then Su (Subtracter) = 1 which indicates to

load the subtracter output into X8 X7 X6 X5 X4 and set the quotient bit to 1 and then stop the division process.

This process continues until four shifts have occurred.

Then, a final subtraction occurs if C=1, and no subtraction occurs if C=0.

No further shifting is required, and the control goes to the stop state.

For this example, we will assume that when the start signal (St) occurs, it will be 1 for one clock time, and, then, it will remain 0 until the control circuit is back stop state.

Divider SubtracterThe subtracter can be constructed

using five full subtracters, as shown in the figure on the next slide.

The borrow signal will propagate through the full subtracters before the subtracter output is transferred to the dividend register.

If the last borrow signal (b9) is 1, this means that the result is negative.

5 Bit Subtracter

8-Bit Divider Hence, if b9 is 1, the divisor (Y3Y2Y1Y0) is greater

than X8X7X6X5X4, and C = 0. Therefore, C=b9´, and a separate comparator

circuit is unnecessary. Normal operating conditions (no overflow) for this

divider, we can also show that C=d8’. ◦ At any subtraction step, because the divisor is only four

bits, d8 = 1 would allow a second subtraction without shifting.

◦ However, this can never occur because the quotient digit cannot be greater than 1.

◦ Therefore, if subtraction is possible, d8 will always be 0 after the subtraction, so d8 = 0 implies X8X7X6X5X4 is greater than Y3Y2Y1Y0 and C=d8´.

8-Bit Divider Bus mergers

and splitters do not require any actual hardware

They are just a symbolic way of showing bus connections.

8-Bit Divider The dividend is loaded in at the X register a MUX. The X register is a left-shift register with parallel load

capability On the rising clock edge, it is loaded when Ld = 1 and

shifted left when Sh = 1. Because the register must be loaded with the dividend when

Load = 1 and with the subtracter output when Su = 1, Load and Su are ORed together and connected to the Ld input.

The MUX selects the dividend (preceded by a 0) when Load 1.

When Load 0, it selects the bus merger output which consists of the subtracter output, X3X2X1, and a logic 1.

When Su = 1 and the clock rises, this MUX output is loaded into X.

The net result is that X8X7X6X5X4 gets the subtracter output, X3X2X1 is unchanged, and X0 is set to 1.

Binary Coded Decimal (BCD) A format for representing decimal numbers (integers) Each digit is represented by four bits, (a nibble). The 4 bits represent the numbers 0 to 9.

BCD Denary0 0 0 0 00 0 0 1 10 0 1 0 20 0 1 1 30 1 0 0 40 1 0 1 50 1 1 0 60 1 1 1 71 0 0 0 81 0 0 1 9

Unpacked and Packed BCDIn unpacked BCD each decimal digit

is represented by 8 bits (i.e. 1 byte)45 = 00000100 00000101

In packed BCD each decimal digit is represented by 4 bits (i.e. 1 nibble)

45 = 0100 0101

BCD AdditionEither packed or unpacked BCD numbers

can be summed. BCD addition follows the same rules

as binary addition.Any binary sum ≥ 10 results in invalid BCD number. If the addition produces a carry and/or

creates an invalid BCD number, an adjustment is required to correct the sum.

The correction method is to add 6 to the sum in any digit position that has caused an error.

Not 6 is to be always added with the binary number to get its BCD value.

6 is only for the decimal numbers from 10 to 19.

For 20 to 29, you will have to add 12 (1100).

For 30 to 39, you have to add 18 (10010) and so on.

BCD Addition Examples24 + 13 = 37

0010 0100 = 24 0001 0011 = 130011 0111 = 37

15 + 9 = 240001 0101 = 150000 1001 = 090001 1110 = 114 Invalid0000 0110 =  60010 0100 = 24

Why Add 6 in BCD?Suppose we have to add 9+9 = 18In binary addition

1001 (9) + 1001 (9) = 10010 (18)10But in BCD 18 = 0001 1000 (24)10 Subtracting decimal value of binary

from decimal value of BCD number = 24 – 18 = 6

Therefore if we add binary value of 6 in the answer of binary addition if the value ≥ 10 then we get the correct BCD value.

4 Bit BCD AdderTo implement a 4-bit BCD adder we

need two 4-bit full adders. One to add two 4-bit BCD numbers

and the other full adder to add 2’s complement of 1010 (which is 0110) to the result if Cn = 1

Also we need 2 AND gates and one OR gate to generate Cn.

BCD SUM = 0001 0011

Assignment 2 Find the BCD values for

1000 (8) + 0110 (6)1001 (9)+ 1001 (9)0101 (5) + 0100 (4) using the BCD logic gate diagram.

Why addition of 1111 + 1111 cannot be performed in BCD adder?

Logic circuit diagram for 8 bit BCD adder and how it works?

8-bit BCD Adder

B7A7 B6A6 B5A5 B4A4

BCD Subtraction 9’s COMPLEMENT THE 9’s COMPLEMENT OF A DECIMAL NUMBER IS FOUND

BY SUBTRACTING EACH DIGIT IN THE NUMBER FROM 9.

9’s COMPLEMENT of 28 = 99 –28 = 71

9’s COMPLEMENT of 562 = 999 –562 = 437

Decimal Number

9’s Complement

Decimal Number

9’s Complement

0 9-0 = 9 5 9-5 = 41 9-1 = 8 6 9-6 = 32 9-2 = 7 7 9-7 = 23 9-3 = 6 8 9-8 = 14 9-4 = 5 9 9-9 = 0

BCD SubtractionSUBTRACTION OF A SMALLER DECIMAL

NUMBER FROM A LARGER ONE CAN BE DONE BY 1. ADDING THE 9’s COMPLEMENT OF THE

SMALLER NUMBER 2. TO THE LARGER NUMBER AND 3. THEN ADDING THE CARRY TO THE RESULT

(END AROUND CARRY).WHEN SUBTRACTING A LARGER NUMBER

FROM A SMALLER ONE THERE IS NO CARRY AND THE RESULT IS IN 9’s COMPLEMENT FORM AND NEGATIVE.

BCD Subtraction Examples:

OF 21

OF 28

BCD Subtraction 9’s complement rule of subtraction for decimal number is

applied for BCD number also.RULES:1. ADD 9’s COMP. OF B TO A

2. IF RESULT > 9, CORRECT BY ADDING 0110

3. IF MOST SIGNIFICANT CARRY IS PRODUCED [i.e. =1] THEN

THE RESULT IS POSITIVE ANDTHE END AROUND CARRY MUST BE ADDED.

4. IF MOST SIGNIFICANT CARRY IS 0 [i.e. NO CARRY] THEN THE RESULT IS NEGATIVE AND WE GET THE 9’s COMP. OF THE RESULT.

BCD SubtractionExamples

+0100 = 49’s Complement of 4 is 5. Hence answer is -5

9’s complement of 8 =1

BCD SubtractionExamples

BCD SubtractionExamples

8-Bits BCD Subtracter

BCD to 7 Segment Display Decoder

a should glow for 0, 2, 3, 5, 6, 7, 8, 9 b should glow for 0, 1, 2, 3, 4, 7, 8, 9 c should glow for 0, 1, 3, 5, 6, 7, 8, 9 d should glow for 0, 2, 3, 5, 6, 8, 9 e should glow for 0, 2, 4, 6, 8 f should glow for 0,4, 5, 6, 8, 9 g should glow for 2, 3, 4, 5, 6, 8, 9

b3b2b1b0

a b c d e f g

0000 0 1 1 1 1 1 1 00001 1 0 1 1 0 0 0 00010 2 1 1 0 1 1 0 10011 3 1 1 1 1 0 0 10100 4 0 1 0 0 1 1 10101 5 1 0 1 1 0 1 10110 6 1 0 1 1 1 1 10111 7 1 1 1 0 0 0 01000 8 1 1 1 1 1 1 11001 9 1 1 1 1 0 1 1101010111100110111101111

a should glow for 0, 2, 3, 5, 6, 7, 8, 9 b should glow for 0, 1, 2, 3, 4, 7, 8, 9 c should glow for 0, 1, 3, 5, 6, 7, 8, 9 d should glow for 0, 2, 3, 5, 6, 8, 9 e should glow for 0, 2, 4, 6, 8 f should glow for 0,4, 5, 6, 8, 9 g should glow for 2, 3, 4, 5, 6, 8, 9

a

00 01 11 10

00 1 0 1 101 0 1 1 111 x x x x10 1 1 x x

b1b0

b3b2

b3b2b1b0 a0000 10001 00010 10011 10100 00101 10110 10111 11000 11001 1

130202 bbbbbba

b

00 01 11 10

00 1 1 1 101 1 0 1 011 x x x x10 1 1 x x

b1b0

b3b2

b3b2b1b0

0000000100100011010001010110011110001001

02020 bbbbbb

b1111100111

c

00 01 11 10

00 1 1 1 001 0 1 1 111 x x x x10 1 1 x x

b1b0

b3b2

b3b2b1b0

0000000100100011010001010110011110001001

231203 bbbbbbc

c1101011111

Assignment 2Find functions for a, b, c, d, e, f and g

for BCD to 7 segment decoder

ComparatorsThe basic function of a comparator is to

compare the magnitude of two binary quantities to determine the relationship of those quantities.

When we compare two numbers then there are three possible outputs.

Suppose A and B are two numbers then eitherA = BA > BA < B

Comparator An XOR gate can be used to compare the two

values. Let A and B two single bit binary numbers, then

if A = 1 and B =1 the output of XOR = 0if A = 0 and B =0 the output of XOR = 0if A = 0 and B =1 the output of XOR = 1if A = 1 and B =0 the output of XOR = 1

In other words whenever the two input values are equal the output is 0, andwhenever the two inputs are unequal the output is 1

XNOR

A B A=B A<B A>B0 0 11 1 10 1 11 0 1

Multibit Magnitude ComparatorTo determine if A is greater than or

less than B, we inspect the relative magnitudes of significant digits.

If the two digits are equal, we compare the next lower significant pair of digits.

The comparison continues until a pair of unequal digits is reached.

Multi Magnitude Comparator In order to compare two bit binary numbers additional

XOR gate are needed. The two LSBs of the two numbers are compared by XOR

gate 1. The two MSBs of the two numbers are compared by

XOR gate 2. The outputs of gate 1 and 2 are inverted and applied to

the input of an AND gate. When the two input bits for each XOR gate are equal

then the output of the XOR gates is 0, which is inverted to 1 by the NOT gates.

Input values of the AND gate are 1, thus the output is 1 when both the numbers are equal.

Otherwise the output will be 0, which indicates that the numbers are unequal.

74HC85 Comparator It has three cascading inputs: A<B, A=B, A>B.These inputs allow several comparators to be

cascaded for comparison of any number of bits greater than four.

To expand the comparator, the A<B, A=B and A>B outputs of the lower order comparator are connected to the corresponding cascading inputs of the next higher order comparator.

The lowest-order comparator must have HIGH on the A=B input and LOWs on the A<B and A>B.

74HC85 Comparator

74HC85 Cascading

EncodersAn encoder accepts an active level on one

of its inputs representing a digit, such as a decimal or octal digit, and converts it a coded output, such as a BCD or binary.

A simple binary encoder circuit can receive a single active input out of 2n input lines generate a binary code on n parallel output lines.

For example a 4 to 2 encoder takes in 4 bits and outputs 2 bits.

Common encoders are 4-to-2, 8-to-3, 16-to-4, 32-to-5 etc.

Types of Encoder There are two main types of digital encoder. The Binary

Encoder and the Priority Encoder. The Binary Encoder converts one of 2n inputs into an n-

bit output. Then a binary encoder has fewer output bits than the input code.

◦ Binary encoders are useful for compressing data and can be constructed from simple AND or OR gates.

◦ One of the main disadvantages of a standard binary encoder is that it would produce an error at its outputs if more than one input were active at the same time. To overcome this problem priority encoders were developed.

The Priority Encoder is another type of combinational circuit similar to a binary encoder, except that it generates an output code based on the highest prioritized input.

◦ Priority encoders are used extensively in digital and computer systems as microprocessor interrupt controllers where they detect the highest priority input.

Encoders Applications Keyboard Encoder Priority encoders can be used to reduce the number of wires

needed in a particular circuits or application that have multiple inputs.

For example, assume that a microcomputer needs to read the 104 keys of a standard QWERTY keyboard where only one key would be pressed either "HIGH" or "LOW" at any one time.

One way would be to connect all 104 wires from the keys directly to the computer but this would be impractical for a small home PC, but another better way would be to use a priority encoder.

The 104 individual buttons or keys could be encoded into a standard ASCII code of only 7-bits (0 to 127 decimal) to represent each key or character of the keyboard.

Keypad encoders such as the 74C923 20-key encoder are available to do just that.

Encoder Applications Positional Encoders Another more common application is in magnetic

positional control as used on ships navigation or for robotic arm positioning etc.

For example, the angular or rotary position of a compass is converted into a digital code by a 74LS148 8-to-3 line priority encoder and inputted to the systems computer to provide navigational data and an example of a simple 8 position to 3-bit output compass encoder is shown below.

Magnets and reed switches could be used at each compass point to indicate the needles angular position.

Encoder Applications

Decimal to BCD EncoderThis type of encoder has ten inputs –

one for each decimal digit.Four outputs correspond to BCD

code.This is a basic 10-line-to-4-line

encoder.A Decimal to BCD encoder can be

implemented by OR gates.

Decimal to BCD EncoderDec

A3 A2 A1 A0

0 0 0 0 01 0 0 0 12 0 0 1 03 0 0 1 14 0 1 0 05 0 1 0 16 0 1 1 07 0 1 1 18 1 0 0 09 1 0 0 1

1 A0

A1

A2

A3

LSB

MSB

23

456789

Priority Encoder One more Important application of encoder is Priority Encoder

used to detect interrupts in microprocessor applications. The microprocessor uses interrupts to allow peripheral devices

such as the disk drive, scanner, mouse, or printer etc, to communicate with it,

But the microprocessor can only "talk" to one peripheral device at a time.

The processor uses "Interrupt Requests" or "IRQ" signals to assign priority to the devices to ensure that the most important peripheral device is serviced first.

The order of importance of the devices will depend upon their connection to the priority encoder.

Because implementing such a system using priority encoders such as the standard 74LS148 priority encoder IC involves additional logic circuits, purpose built integrated circuits such as the 8259 Programmable Priority Interrupt Controller is available.

IRQ Number Typical Use Description

IRQ 0 System timer Internal System Timer.IRQ 1 Keyboard Keyboard Controller.

IRQ 3 COM2 & COM4 Second and Fourth Serial Port.

IRQ 4 COM1 & COM3 First and Third Serial Port.

IRQ 5 Sound Sound Card.IRQ 6 Floppy disk Floppy Disk Controller.IRQ 7 Parallel port Parallel Printer.

IRQ 12 Mouse PS/2 Mouse.IRQ 14 Primary IDE Primary Hard Disk Controller.

IRQ 15 Secondary IDE Secondary Hard Disk Controller.

4-2 Encoder

D0

Q1

Q0

D3D2D1

4-2 Priority EncoderThey are often used to control

interrupt requests by acting on the highest priority request.

It includes priority function. If 2 or more inputs are equal to 1 at

the same time, the input having the highest priority will take precedence.

4-2 Priority Encoder

4-2 Priority Encoder In addition to two outputs Y0, and Y1, the

truth table has a third output designated by V, which is a valid bit indicator that is set 1 when one or more inputs are equal to 1.

If all inputs are 0, there is no valid input and V is equal to 0.

X says don’t care condition. It means that suppose inputs D0 and D3 both

are 1 simultaneously then at the output 111 will indicate that the input is D3 only because when D3 input is 1 then values of D0, D1 and D2 have no effect on the output.

4-2 Priority Encoder

8-3 Line Encoder A low at any single input will produce the output binary code

corresponding to that input. For instance , a low at A3’ will produce O2 =0, O1=1 and O0 =1,

which is binary code for 3. Ao’ is not connected to the logic gates because the encoder

outputs always be normally at 0000 when none of the inputs is LOW

8-3 Line Encoder

EI = Input Enable, EO = Output Enable, GS = Group Signal

GS is used to indicate when any of the inputs is active. EO, EI and GS are used to cascade the encoders in case

of number of bits > 8.

Binary Decoders Binary Decoders have inputs of 2-bit, 3-bit or 4-

bit codes depending upon the number of data input lines.

A decoder that has a set of two or more bits will be defined as having an n-bit code, and therefore it will be possible to represent 2n possible values.

A decoder generally decodes a binary value into a non-binary one by setting exactly one of its n outputs to logic “1″.

If a binary decoder receives n inputs (usually grouped as a single Binary or Boolean number) it activates one and only one of its 2n outputs based on that input with all other outputs deactivated.

1-2 Line DecoderAn inverter ( NOT-gate ) can be

classed as a 1-to-2 binary decoder.1-input and 2-outputsAn input A can produce two

outputs A and A as shown.

2-4 Binary Decoder

Enable DecodersSome binary decoders have an additional

input pin labeled “Enable” that controls the outputs from the device.

This extra input allows the decoders outputs to be turned “ON” or “OFF” as required.

These types of binary decoders are commonly used as “memory address decoders” in microprocessor memory applications.

2-4 Decoder with Enable

3-8 Line Decoder

3-8 Line Decoder

Fan-in and Fan-outFan-out: The fan-out is the number

of gates that are connected to the output of the driving gate.Fan-out leads to increased load on the driving gate, and therefore longer propagation delay

Fan-In: The fan-in is the number of inputs that are connected to a logic gate.

4-16 Binary Decoder

4-16 Binary DecoderInputs A, B, C are used to select which

output on either decoder will be at logic “1″ (HIGH) and input D is used with the enable input to select which encoder either the first or second will output the “1″.

However, there is a limit to the number of inputs that can be used for one particular decoder, because as n increases, the number of AND gates required to produce an output also becomes larger resulting in the fan-out of the gates used to drive them becoming large.

4-16 Binary Decoder This type of active-”HIGH” decoder can be implemented

using just Inverters, ( NOT Gates ) and AND gates. It is convenient to use an AND gate as the basic decoding

element for the output because it produces a “HIGH” or logic “1″ output only when all of its inputs are logic “1″.

But some binary decoders are constructed using NAND gates instead of AND gates for their decoded output, since NAND gates are cheaper to produce than AND’s as they require fewer transistors to implement within their design.

The use of NAND gates as the decoding element, results in an active-”LOW” output while the rest will be “HIGH”.

As a NAND gate produces the AND operation with an inverted output, the NAND decoder looks like this with its inverted truth table.

Memory Address Decoder Binary Decoders are most often used in more

complex digital systems to access a particular memory location based on an “address” produced by a computing device.

In modern microprocessor systems the amount of memory required can be quite high and is generally more than one single memory chip alone.

One method of overcoming this problem is to connect lots of individual memory chips together and to read the data on a common “Data Bus”.

In order to prevent the data being “read” from each memory chip at the same time, each memory chip is selected individually one at time and this process is known as Address Decoding.

Memory Address DecodingEach memory chip has an input

called Chip Select or CS which is used by the microprocessor to select the appropriate memory chip.

Commonly a logic “1″ on this chip select input selects the device and a logic “0″ on the input de-selects it.

So by selecting or de-selecting each chip one at a time, allows us to select the correct memory address device for a particular address location.

Memory Address DecodingThe advantage of address decoding is

that when we specify a particular memory address, the corresponding memory location exists ONLY in one of the chips.

The binary decoder requires only 3 address lines, (A0 to A2) to select each one of the 8 chips (the lower part of the address), while the remaining 7 address lines (A3 to A9) select the correct memory location on that chip (the upper part of the address).

Memory Address Decoding

Multiplexer In electronics, a multiplexer or mux is a device that

selects one of several analog or digital input signals and forwards the selected input into a single line.

A multiplexer of 2n inputs has n select lines, which are used to select which input line to send to the output.

An electronic multiplexer can be considered as a multiple-input, single-output switch i.e. digitally controlled multi-position switch.

The digital code applied at the select inputs determines which data inputs will be switched to output.

A common example of multiplexing or sharing occurs when several peripheral devices share a single transmission line or bus to communicate with computer.

MultiplexerEach device in succession is

allocated a brief time to send and receive data. At any given time, one and only one device is using the line.

This is an example of time multiplexing since each device is given a specific time interval to use the line.

Multiplexer is also called data selector

4:1 Multiplexer

S1 S0

8:1 Multiplexer

DemultiplexerDemultiplexer receives many signals

on single line and then distribute them to their respective receiving devices.

In other words it is the reverse operation of multiplexing.

The demultiplexer also converts the serial data at the input to parallel data.

1:8 Demultiplexer

1:8 Demultiplexer

Combinational & Sequential Logic Digital electronics is classified into◦ combinational logic and ◦ sequential logic.

Combinational logic output depends on the inputs levels. In sequential logic the output not only depends upon the current

values of the inputs, but also upon preceding input values. In other words, a sequential circuit remembers some of the past

output values — it has memory. Sequential circuits are constructed using combinational logic and

memory element with outputs fed back into the combinational logic forming a feedback path or loop

Feedback Logic Let's consider the basic feedback logic circuit below,

which is a simple NOT gate whose output is connected to its input.

The effect is that output oscillates between HIGH and LOW (i.e. 1 and 0).

Oscillation frequency depends on gate delay and wire delay. Assuming a wire delay of 0 and a gate delay of 10ns, then

oscillation frequency would be (on time + off time = 20ns) 50Mhz.

Feedback Logic The basic idea of having the feedback is to store the

value or hold the value, but in the above circuit, output keeps toggling.

We can overcome this problem with the circuit below, which is basically cascading two inverters.

The equivalent circuit is the same as having a buffer with its output connected to its input.

If Q is 0 it will always be 0, if it is 1 it will always be 1.

Feedback LogicHow to get a new value into the memory

cell?Answer:1. selectively break feedback path2. load new value into cell

SR LatchProblem: We cannot load a new value in

two cascaded inverters feedback logic except by switching the load and remember on and off manually (as shown on the previous slide).

Solution: The solution is SR Latch.An SR (set-reset) latch can be built using

two NOR gates forming a feedback loop.The output of the SR latch depends on

current as well as previous inputs or state, and its state (value stored) can change as soon as its inputs change.

SR Latch

Invalid State:Q and Q’ cannot be same

Memory State:Value of S changed from 1 to 0 but Q is unchanged

SR Latch SR latch have two inputs, S and R. S is called set and R is called reset. Q' is Q complementary output, so it always holds the

opposite value of Q. Set State: When Q=1 Reset State: When Q’=1 S = 1input causes the latch to set state (Q=1 and

Q’=0) The S input must go back to 0 before R is changed to

1 to avoid both S=1 and invalid state (i.e. S=1 and R=1).

Initially S is set to 1 and R to 0 to bring the latch to the set state.

Next slides show the initialization of an SR latch

Initially, the inputs and states of the latch are unknown as indicated by voltage levels of S and R.

Voltages of S and R @1 are neither 1 nor 0 but in between. @2 S is set to 0 and R to 1. This resets the latch with Q first becomes 0 and in

response Q’ becomes 1.

1 2

Next when R becomes 0 (@3), the latch remains reset, storing the 0 value on Q.

When S becomes 1 with R is 0 (@4), the latch is set, with Q’ goes to 0 first and in response Q becomes 1.

1 2 3 4

The delays in the changes of Q and Q’ after an input changes are directly related to the delays of the two NOR gates.

When S returns to 0 (5), the latch remains set, storing the 1 value present on Q.

When R becomes 1 with S is 0 (6), the latch is reset, with Q changing to 0 and in response Q’ becomes 1.

1 2 3 4 5 6

When R returns to 0 (7), the latch remains reset. When S and R both become 1(8), both Q and Q’

become 0 which invalid state. When S and R simultaneously return to 0, both Q

and Q’ take on unknown values.

1 2 3 4 5 6 7 8 9

This form of indeterminate state behavior for the (S,R) sequence of inputs (1,1),(0,0) results from assuming simultaneous input changes and equal gate delays.

S=0 & R = 1 Assume Q = 1 and Q' = 0 as present state

◦ Suppose change in Q occurs first Q = (R + Q')' = (1 + 0)’= 0 Q' = (S + Q)' = (0 + 0)’=1

◦ Suppose change in Q’ occurs first Q' = (S + Q)' = (0 + 1)’=0 invalid states of Q and Q’ Q = (R + Q’)' = (1 + 0)’=0 according to the function table

Assume Q = 0 and Q' = 1 as present state ◦ Q = (R + Q')' = (1 + 1)’ = 0 ◦ Q' = (S + Q)' = (0 + 0)’ = 1

1

0

Assume Q=1, Q’=0

1

0 1

0

Assume Q=0, Q’=1 1

0

1

0

S=0 & R=1 ConclusionIf the present value of Q=1 and Q’=0

then change in output Q must occur first otherwise invalid state of Q and Q’ will occur.

If the present value of Q=0 and Q’=1 then it does not matter whether value of Q changes first or Q’ changes first.

Hence if S=0 then Q=0

S=0 & R = 0Assume Q = 1 and Q’ = 0 as present

state ◦ Q = (R + Q')' = (0 + 0)’ = 1 unchanged◦ Q’ = (S + Q)’ = (0 + 1)’ = 0 unchanged

Assume Q = 0 and Q' = 1 as present state◦ Q = (R + Q')' = (0 + 1)’= 0 unchanged ◦ Q' = (S + Q)' = (0 + 0)’ = 1 unchanged

1

0

Assume Q=1, Q’=0

0

0 0

1Assume Q=0, Q’=1

1

0

1

0

S=0 & R=0 ConclusionIn this case it does not matter

whether value of Q changes first or Q’ changes first in both the present states of Q and Q’.

Hence if S=0 then Q=0

S=1 & R = 0 Assume Q = 1 and Q' = 0 as present state

◦ Q = (R + Q')' = (0 + 0)’ = 1 unchanged ◦ Q' = (S + Q)' = (1 + 1)’ = 0 unchanged

Assume Q = 0 and Q' = 1 as present state ◦ Suppose change in Q’ occurs first

Q' = (S + Q)' = (1 + 0)’ = 0 changed Q = (R + Q')' = (0 + 0)’ = 1 changed

◦ Suppose change in Q occurs first Q = (R + Q')' = (0 + 1)’ = 0 invalid states of Q and Q’ Q' = (S + Q)' = (1 + 0)’ = 0 according to the function table

1

0

Assume Q=1, Q’=0

0

10

1

Assume Q=0, Q’=1 1

0

0

1

S=1 & R=0 ConclusionIf Q=1 and Q’=0 then it does not

matter whether Q changes first or Q’ changes first.

If Q=0 and Q’=1 then value of Q’ should change before Q otherwise value of Q will be equal to zero which against the truth table values.

Q =1 only when S=1

S=1 & R = 1No matter what state Q and Q' are in,

application of 1 at input of NOR gate always results in 0 at output of NOR gate, which results in both Q and Q' set to LOW (i.e. Q = Q').

LOW in both the outputs basically is wrong, so this case is invalid.

1

0

Assume Q=1, Q’=0

1

1 0

0Assume Q=0, Q’=1

1

0

0

0

SR Latch Using NAND Gate

SR Latch Using NAND GateAfter comparing the truth tables of

SR latches constructed using NAND gates and NOR gates it is clear that NAND gate SR latch gives the same output at opposite inputs values of S and R.

For example set state Q=1 and Q’=0 is achieved when S=0 rather than 1.

In NOR gate S=1 and R=1 were invalid states where as in NAND gate S=0 and R=0 are invalid states.

Asynchronous and Synchronous Sequential CircuitsAsynchronous

◦State changes are abrupt◦Become active the moment any input

changes◦E.g. SR Latch

• Synchronous◦State changes are controlled by a “Clock”◦Clock allows ordering of events◦Parts of the computer are made of

synchronous sequential circuit components

ClockA “clock” is a special circuit that

sends electrical pulses through a circuit

Clocks produce electrical waveforms such as the one shown below◦Each pulse has a precise width◦There is a precise interval between pulses

– known as clock cycle time

Gated or Clocked SR Flip Flop Clocked latch is also called flip flop. The control signal pulses act as an enable signal for

inputs S and R. The output of the NAND gates stay at logic 1 level as

long as C=0. When C=1 then the input values at S and R will affect

the SR latch. SR latch changes it state whenever the input value is

changed. Set State: S=1, R=0 and C=1 Reset State: S=0, R=1 and C=1 When C=0 changes to 0 the SR latch remains in its

current state. C=0

Gated SR Flip FlopWhen Clock is 0 then Output does not change even when the input value changes.If input value changes but the clock is 0 then output will not change.

Latch and Flip FlopAn input enable signal can be used

for sampling the input (like gated SR).The two types of the enable signals

are:◦Level Sensitive or ( LATCH)◦Edge Sensitive or (Flip-Flop)

Difference between latch and flip flop is that flip flop controlled by a clock pulse.

In flip flop when the clock pulse is high the value is stored and remains the same until next high pulse of the clock.

Level Sensitive Sequential CircuitThe circuit shown on the next slide is

a modification of the RS logic we have discussed in the previous slides.

When Enable is HIGH, it transfers input S and R to the sequential cell transparently, so this kind of sequential circuits are called transparent Latch.

This is called RS Latch memory element with active high Enable.

Edge SensitiveThe change at the output Q occurs at

the rising edge of the pulse only.If any change occurs in before or

after the rising edge will have no effect on the output

Edge Sensitive

Change occurs at start of clock pulse HIGH

D Latch The SR latch seen earlier contains ambiguous state

when both the inputs are 1 (or 0 in case of NAND gate). To eliminate this condition we can ensure that S and R

are never equal. This is done by connecting S and R together with an

inverter. D Latch is the same as the SR latch, with the only

difference that there is only one input, instead of two (R and S).

This input is called D or Data input. Delay flip-flop or delay latch is another name used. In real world only D latch is used instead of SR latch. D flip-flop is very frequently used for data storage

circuits

D-Flip Flop

D Q1 10 0

Master Slave D Flip FlopA master-slave D flip-flop is created by

connecting two gated D latches in series, and inverting the enable input to one of them. It is called master-slave because the second latch in the series only changes in response to a change in the first (master) latch.

The term pulse-triggered means that data is entered on the rising edge of the clock pulse, but the output does not reflect the change until the falling edge of the clock pulse.

Master-Slave D Flip Flop

Master Slave D Flip Flop For a positive-edge triggered master-slave D flip-

flop, when the clock signal is low (logical 0) the "enable" seen by the first or "master" D latch (the inverted clock signal) is high (logical 1).

This allows the "master" latch to store the input value when the clock signal transitions from low to high.

As the clock signal goes high (0 to 1) the inverted "enable" of the first latch goes low (1 to 0) and the value seen at the input to the master latch is "locked".

Nearly simultaneously, the twice inverted "enable" of the second or "slave" D latch transitions from low to high (0 to 1) with the clock signal.

Master Slave D Flip Flop This allows the signal captured at the rising edge

of the clock by the now "locked" master latch to pass through the "slave" latch.

When the clock signal returns to low (1 to 0), the output of the "slave" latch is "locked", and the value seen at the last rising edge of the clock is held while the "master" latch begins to accept new values in preparation for the next rising clock edge.

An implementation of a master-slave D flip-flop that is triggered on the positive edge of the clock

By removing the leftmost inverter in the above circuit, a D-type flip flop that strobes on the falling edge of a clock signal can be obtained.

Switch Debounce Circuit Practical use of SR circuit is eliminate mechanical

switch “bounce”. Switch bounce occurs when the contacts of any

mechanically operated switch, push-button or keypad are operated and the internal switch contacts do not fully close cleanly, but bounce together first before closing (or opening) when the switch is pressed.

This gives rise to a series of individual pulses which can be as long as tens of milliseconds that an electronic system or circuit such as a digital counter may see as a series of logic pulses instead of one long single pulse and behave incorrectly.

.

Switch Debounce Circuit

Switch Debounce CircuitFor example, during this bounce period the

output voltage can fluctuate wildly and may register multiple input counts instead of one single count.

Then set-reset SR Flip-flops circuits can be used to eliminate this kind of problem

Commonly available IC’s are ◦ MAX6816, single input, ◦ MAX6817, dual input ◦ MAX6818 octal input

These chips contain the necessary flip-flop circuitry to provide clean interfacing of mechanical switches to digital systems.

JK Flip Flop The ambiguous state output in the SR latch was eliminated in the

D latch by joining the inputs with an inverter. But the D latch has a single input. JK latch is similar to SR latch in that it has 2 inputs J (S) and K (R). JK Flip-flop is named after its inventor, Jack Kilby.  Applications Of Flip-Flops◦ Counters◦ Frequency Dividers◦ Shift Registers◦ Storage Registers

Jack Kilby Jack Kilby was an

American electrical engineer who took part, along with Robert Noyce, in the realization of the first integrated circuit while working at Texas Instruments (TI) in 1958.

He was awarded the Nobel Prize in physics in 2000.

Jack Kilby

Robert Noyce co-founder of Fairchild Semiconductors and Intel Corp.

JK Flip Flop

If J and K are 0 then next state value of Q will always be same as the present value of Q.If J = 0 but K = 1 then next state value of Q will always be 0

If J = 1 but K = 0 then next state value of Q will always be 1If J and K are 1 then next state value of Q will always be reverse of the present value of Q.

JK Flip Flop Extended Characteristic Table

JK Flip Flop Extended Characteristic Table

JK Flip Flop Excitation Table

JK Flip Flop The cross coupling of the Q and Q’ outputs to J and K

NAND gates allows the invalid condition of both the inputs equal to 1.

JK flip-flop allows the previously invalid condition of S = “1″ and R = “1″ state to be used to produce a “toggle action” as the two inputs are now interlocked.

Latch state means that whatever the stored/last output value of Q is, will remain the same as long as J=0 and K=0

Suppose initially input J=0 and K=1 and output Q=0 and Q’=1.

After that J=0 and K=0 and the output values at Q=0 and Q’=1 will remain the same as long as the values of J and K remain 0.

JK Flip Flop Toggle stage means that the current state of Q

becomes last state of Q’ i.e. Qn = Q’n-1 and Q’n = Qn-1 This changing of Q from 0 to and 1 will continue until

the clock is HIGH. It means the output of Q and Q’ will be

Q = 0 → 1 → 0 → 1 → 0 → 1 → 0 → 1 → 0 ……..Q’ = 1 → 0 → 1 → 0 → 1 → 0 → 1 → 0 → 1 ……..until the clock is HIGH.

This kind of toggling is called RACING. In the toggle state the speed of change from 1 to 0 and

0 1 to 1 depends on the propagation delay of the NAND gates.

Racing can be avoided by setting the Clock ON time less than the Propagation Delay

ClockQ

Racing

Clock ON timePropagation delay time

This not a very practical solution because the input values at J and K usually do not arrive as fast as less than 10 ns (10-20 ns is the usual propagation delay time for a NAND gate).

Negative or falling edge JK flip flop

Positive or rising edge JK flip flop

Master Slave Flip FlopAs we have seen that making clock

on time smaller than the propagation delay of the NAND gate is not a practical solution of racing.

The more practical solution is Master Slave Flip Flop.

J=K=0When clock = 0, the slave becomes

active and master is inactive. But since the S and R inputs have not

changed, the slave outputs will also remain unchanged.

Therefore outputs will not change if J = K =0.

J=0, K=1 Clock = 1: Master active, slave inactive. Outputs of the master become Q1 = 0 and Q1 bar = 1. That means S = 0 and R =1. Clock = 0: Slave active, master inactive Outputs of the slave become Q = 0 and Q bar = 1. Again clock = 1: Master active, slave inactive.

Therefore even with the changed outputs Q = 0 and Q bar = 1 fed back to master, its outputs will Q1 = 0 and Q1 bar = 1.

That means S = 0 and R = 1. Hence with clock = 0 and slave becoming active the

outputs of slave will remain Q = 0 and Q bar = 1. Thus we get a stable output from the Master slave.

J=1, K=0Clock = 1: Master active, slave

inactive. Therefore outputs of the master become Q1 = 1 and Q1 bar = 0. That means S = 1 and R =0.

Clock = 0: Slave active, master inactive Therefore outputs of the slave become Q = 1 and Q bar = 0.

Again clock = 1: then it can be shown that the outputs of the slave are stabilized to Q = 1 and Q bar = 0.

J=K=1 Clock = 1: Master active, slave inactive.

Outputs of master will toggle. So S and R also will be inverted.

Clock = 0: Slave active, master inactive. Outputs of slave will toggle.

These changed output are returned back to the master inputs.

But since clock = 0, the master is still inactive, it does not respond to these changed outputs.

This avoids the multiple toggling which leads to the race around condition.

The master slave flip flop will avoid the race around condition.

Level Triggered JK Flip Flop

Positive Edge Triggered JK Flip Flop

Negative Edge Triggered JK Flip Flop

JK Flip Flop Frequency DividerThe time period of the clock time can be

reduced by using two JK flip flops in the following manner

The values of J and K will always be 1 for toggling.

Assignment Explain in detail the application of

frequency division in digital electronics.

Counters Major application of flip flops is found in binary counters. The same configuration of the JK flip flop used for

frequency division is used for counter as well. A flip flop counter works as an up counter and down

counter simultaneously. Q is the output for up counter and Q’ is the output for

down counter. The counter will be 2N. Hence, for 4 bit counter range is 0-15, 5 bit counter

range is 0-31, 6 bit counter range is 0-63 and so on. Counter starts from 0 and after reaching to the

maximum value it becomes 0 again. This kind of counter is also called modulo counter

because it resets to 0 after reaching the maximum value.

3-Bit Asynchronous Counter

UP COUNTER DOWN COUNTERQ2 Q1 Q0 Dec Q’0 Q’1 Q’2 Dec0 0 0 0 1 1 1 70 0 1 1 1 1 0 60 1 0 2 1 0 1 50 1 1 3 1 0 0 41 0 0 4 0 1 1 31 0 1 5 0 1 0 21 1 0 6 0 0 1 11 1 1 7 0 0 0 0

3-Bit Asynchronous Counter

Up/Down CounterUp counter is the output of Q of a JK

flip flopDown counter is the output of Q’ of a

JK flip flop.What if a 0-15 counter is to be used

for counting only up to 7 or 10 or 11 and then become 0 again.

For this purpose we use a JK flip flop with PRESET (P or PST) and CLEAR (CLR) gates.

Up/Down Counter PST and CLR are called overriding inputs because irrespective

values of J, K and CLK◦ as long as PST=0, Q=1 and Q’=0, and◦ when CLR becomes 0, Q=0 and Q’=1.PST CLR Q0 1 11 0 01 1 JK toggles normally

0 0 Causes uncertain output, hence must not be used

To set the value of Q = 0 set CLR to 0To set the value of Q= 1 set PST to 0

Arbitrary CountingSuppose we use a 3-bit counter to count for

0 to 5 only i.e. 0,1,2,3,4 and 5.Now to count up to 5 only we use CLR to

reset the counter to 0 when 5 is reached.But assuming there is no delay ( or very

small delay) then the moment 5 is reached the CLR resets the counter before 5 is completed for 1 clock ON period (or cycle) and practically the counting is done up to 4 only.

Hence to count up to 5 we reset the counter to 0 when counter reaches to 6 instead of 5.

Counting up to 5 only

UP COUNTERA B C Dec0 0 0 00 0 1 10 1 0 20 1 1 31 0 0 41 0 1 51 1 0 61 1 1 7

Asynchronous Arbitrary Counter

1

1

C=0 B=1 A =1

Only @ 110 NAND is active and output 0

0 @ 110

Asynchronous Arbitrary CounterNow suppose counting starts from 2 and

stops at 6 i.e. 2,3,4,5,6.As we now to count up to 6 we have to

reset the counter at 7.Unlike previous example we will not reset

the counter to 0 but 010=2 this time.Since at the start time the flip flops can be

in any state, the count cycle may start from any value like 5 or 4 or 7 or any other value.

But after on complete cycle of counting the counting will always start from 2.

Asynchronous Arbitrary Counter

1

1

C=0 B=1 A =1

Only @ 110 NAND is active and output 0

0 @ 110

Flip Flop Propagation Delay Let Tp is the propagation time delay on 1 flip flop For example for 8 bits counter we need 8 flip flops. Hence Tp (total) = Tp (1 flip flop) x 8 The counter we have just studied in previous

slides is called Ripple Counter. Ripple counter fails to perform when the clock rate

is very high. Reason is that the clock input of the next stage flip

flop is the output Q of the previous flip flop and the propagation time of the previous flip flop is the limit of processing speed for each next stage flip flop.

The solution is Synchronous Counter.

Synchronous Counter

Q1 toggles only when in Q0 has become 1

Synchronous Counter Output of 1st flip flop toggles with the clock

pulses. The 2nd flip flop will output toggle only when J

and K become 1. For 2nd flip flop J and K become 1 after two clock

cycles because @ clock cycle 1 J and K are 0. For toggling we know that both J and K must be

1. At clock cycle 2 J and K of 2nd flip flop become 1. Hence at clock cycle 3 J and K are 1 and output

of the 2nd flip flop toggles

Registers A group of flip flops is called Register. Registers are used to store data and move data. A 4 bit register would have 4 flip flops. Gated D flip flops are used for registers because

D flip flop uses single input and each flip flop stores 1 bit of data.

WE : Write EnableWhen WE=1 then data is input

In D flip flop when the clock rising edge is detected the output Q becomes equal to D.

In other words when clock rising edge is detected the D flip flop stores the input data.

A shift register is able to shift the data it contains by one bit either to the left or to the right.

They are used to transform serial data to parallel, and parallel to serial data.

Generally, shift registers operate in one of four different ways:

1. Serial-in to Serial-out (SISO) - The data is shifted serially "IN" and "OUT" of the register, one bit at a time in either a left or right direction under clock control.

2. Serial-in to Parallel-out (SIPO) - The register is loaded with serial data, one bit at a time, with the stored data being available in parallel form.

3. Parallel-in to Serial-out (PISO) - The parallel data is loaded into the register simultaneously and is shifted out of the register serially one bit at a time under clock control.

4. Parallel-in to Parallel-out (PIPO) - The parallel data is loaded simultaneously into the register, and transferred together to their respective outputs by the same clock pulse.

Serial In Serial Out RegisterThis type of shift registers will delay

the input data by one clock cycle for each stage.

Four D flip-flops are used as a serial-in/serial-out shift register.

0 1 2 3

On each rising edge of the clock:Data Out Q3=D3=Q2Q2 D2=Q1Q1 D1=Q0Q0 D0=Data In

Lets input Data 1101 1st Data In Bit = 1 (LSB)

At 1st rising edge of the clock flip flops take the input in and the Q state of each flip flop will be

Q0 Q1 Q2 Q31 0 0 0

2nd Data In Bit = 0At 2nd rising edge of the clock flip flops take the input in and the Q state of each flip flop will be

Q0 Q1 Q2 Q30 1 0 0

3rd Data In Bit = 1At 3rd rising edge of the clock flip flops take the input in and the Q state of each flip flop will be

Q0 Q1 Q2 Q31 0 1 0

4th Data In Bit = 1At 4th rising edge of the clock flip flops take the input in and the Q state of each flip flop will be

Q0 Q1 Q2 Q31 1 0 1

Now all the data input bits have been stored in the register. Data will remain stored until enable is 0 (enable is not shown in the fig) To Read or output data Enable=1 and Data In = 0

Q0 Q1 Q2 Q30 1 1 0

Q0 Q1 Q2 Q30 0 1 1

Q0 Q1 Q2 Q30 0 0 1

Q0 Q1 Q2 Q30 0 0 0

Serial In Parallel Out RegisterThe process of shifting the input data

bits is same as SISO register.LSB is input first for the following

configuration. Reset make all the outputs = 0

Parallel In Parallel Out The operation is quite straight forward. At the rising edge of the clock Q1, Q2, Q3 and Q4

have values of A, B, C and D,

Parallel In Serial Out Registers It is the bit more complex of all the shift registers. A logic is needed to determine whether you are loading data

to the register or shifting data currently in the register.

Each input to each flip flop can either be data in or data shifted from the previous flip flop.

Shift/ Load is used for that.If shift/load is HIGH the data will be

shifted and data in is disabled because load is 0 which ends with input bits.

When shift/load is LOW then load is 1 and data is input to the flip flops.

Bidirectional Shift Register A bidirectional shift register is one in which the data

can be shifted either left or right. It can be implemented by using gating logic that

enables the transfer of a data bit from one stage to the next stage to the right or to the left, depending on the level of a control line.

A 4-bit bidirectional shift register is shown below.

A HIGH on the RIGHT/ LEFT control input allows data bits inside the register to be shifted to the right\

A LOW enables data bits inside the register to be shifted to the left.

When the RIGHT/LEFT control input is HIGH, gates G1 through G4 are enabled, and the state of the Q output of each flip-flop is passed through to the D input of the following flip-flop.

When a clock pulse occurs, the data bits are shifted one place to the right.

When the RIGHT/LEFT control input is LOW, gates G5 through G8 are enabled, and the Q output of each flip-flop is passed through to the D input of the preceding flip-flop.

When a clock pulse occurs, the data bits are then shifted one place to the left.

Shift Register CountersA shift register counter is basically a

shift register with the serial output connected back to the serial input to produce special sequences.

These devices are often classified as counters because they exhibit a specified sequence of states.

Two of the most common types of shift register counters are:◦Ring counter ◦ Johnson counter

Ring CounterA ring counter is a Shift Register (a cascade

connection of flip-flops) with the output of the last flip flop connected to the input of the first.

It is initialized such that only one of the flip flop output is 1 while the remainder is 0.

The 1 bit is circulated so the state repeats every n clock cycles if n flip-flops are used.

The "MOD" or "MODULUS" of a counter is the number of unique states.

The MOD of the n flip flop ring counter is n. It can be implemented using D-type flip-flops.

1 0 0

STATE MACHINE

State MachinesThere are many ways of modeling the

behavior of systems, and the use of state machines is one of the oldest and best known.

State machines allow us to think about the “state” of a system at a particular point in time and characterize the behavior of the system based on that state.

Assume that the flip-flop inputs are stable a sufficient time before and after the active clock edge so that setup and hold time requirements are met.

Change in the state of the sequential circuit will always occur in response to the active clock edge.

The circuit output may change at the time the flip-flops change state or at the time the input changes depending on the type of circuit.

Counter Design Using State MachineArbitrary or random sequence

counter may count 1, 4, 3, 5, 2, 6 in a loop fashion.

ABC1 0014 1003 0115 1012 0106 110

S0S1

S2S3

S4

S5

+ shows that this is next state The combinational logic circuit is such that if ABC = 001(1)

input then at output (A+B+C+) it will produce 100(4) (i.e. next number) or if 110(6) is input then output should be 001 (1).

COBMIN-ATIONAL

LOGIC

A

B

C

A+

B+

C+

D Q

D Q

D Q

Clock

In order to use K-map for simplification we will put values of ABC in sequence.

This help us to avoid any problems may occur in simplification process.

Combinational Logic Truth Table

A B C A+ B+ C+

000 x x x001 1 0 0010 1 1 0011 1 0 1100 0 1 1101 0 1 0110 0 0 1111 x x x

For A+ B’C’ B’C BC BC’

00 01 11 10A’ 0 x 1 1 1A 1 XA+ = A’

For B+ B’C’ B’C BC BC’

00 01 11 10A’ 0 x 1A 1 1 1 xB+ = A’C’ + AB’

For C+ B’C’ B’C BC BC’

00 01 11 10A’ 0 x 1A 1 1 x 1C+ = AC’ + BC

D B B’

D C C’

D A A’

COMBINATIONAL LOGIC

A+

B+

C+

JK Flip Flop Extended Characteristic Table

JK Flip Flop Excitation Table

Design the Same Counter using JK Flip Flop

In case of D flip flop the input of the D flip flop was same as the output of the combinational logic circuit.

But in case of JK flip flop we have two inputs J and K

Combinational Logic Truth TablePresent StateA B C

NextStateA+ B+

C+

JA KA JB KB JC KC

000 x x x x x x x x x001 1 0 0 1 x 0 x x 1010 1 1 0 1 x x 0 0 x011 1 0 1 1 x x 1 x 0100 0 1 1 x 1 1 x 1 x101 0 1 0 x 1 1 x x 1110 0 0 1 x 1 x 1 1 x111 x x x x x x x x x

For JA B’C’ B’C BC BC’

00 01 11 10A’ 0 x 1 1 1A 1 x x x xJA = B’+B = 1

For JB B’C’ B’C BC BC’

00 01 11 10A’ 0 x 0 x xA 1 1 1 x xJB = A

For JC B’C’ B’C BC BC’

00 01 11 10A’ 0 x x x 0A 1 1 x x 1JC = A

For KA B’C’ B’C BC BC’

00 01 11 10A’ 0 x x x xA 1 1 1 x 1KA = B’+B = 1

For KB B’C’ B’C BC BC’

00 01 11 10A’ 0 x x 1 0A 1 x x x 1KB = A + C

For KC B’C’ B’C BC BC’

00 01 11 10A’ 0 x 1 0 xA 1 x 1 x xKC = B’

J B K B’

J C K C’

J A K A’

COMBINATIONAL LOGIC

11

Clock

MEALY AND MOORE CIRCUITS

Two types of clocked sequential circuits will be considered:◦those in which the output depends only

on the present state of the flip-flops and

◦those in which the output depends on both the present state of the flip-flops and on the value of the circuit inputs.

If the output of a sequential circuit is a function of the present state only, the circuit is often referred to as a Moore machine.

Moore Machine = Describes the output at a certain independent of the input value

If the output is a function of both the present state and the input, the circuit is referred to as a Mealy machine.

Mealy Machine = Output depends on the input value as well.

Mealy Machine Let’s assume a Mealy state graph as shown below. ‘x’ is input and ‘z’ is output. A and B are state variables All the values are chosen arbitrarily.

S0

S1S2

X=0Z =0X=

1Z =0 X=

1Z =0

X=0Z =1

X=0,1Z =0,1

COBMIN-ATIONAL

LOGIC

A

B

A+

B+

D Q

D Q

Clock

x z

A=0B=0

A=0B=1

A=1B=0

Mealy State TablePresent State

Input Next State

Output

A B x A+ B+ zS0 0 0 0 0 0 0

0 0 1 0 1 0S1 0 1 0 1 0 1

0 1 1 0 1 0S2 1 0 0 0 0 0

1 0 1 0 0 11 1 x x x 01 1 x x x 0

For z B’x’ B’x Bx Bx’

00 01 11 10A’ 0 0 0 0 1A 1 0 1 0 0z = AB’x + A’Bx’

For output ‘z’ we do not use DON’T’ CARE ‘x’ because it means the output can be either 1 or 0.Output 1 for undefined state is not the desired output and called GLITCH.Thereforfore for undefined state we use ‘0’ instead of ‘x’

Moore Machine Let’s assume a Mealy state graph as shown below. ‘x’ is input and ‘z’ is output. A and B are state variables All the values are chosen arbitrarily.

S0/Z=0

S1/Z=0

S2/Z=1

X=0Z =0X=

1Z =0 X=

1Z =0

X=0Z =1

X=0,1Z =0,1

COBMIN-ATIONAL

LOGIC

A

B

A+

B+

D Q

D Q

Clock

x z

A=0B=0

A=0B=1

A=1B=0

Moore State TablePresent State

Input Next State

Output

A B x A+ B+ zS0 0 0 0 0 0 0

0 0 1 0 1 0S1 0 1 0 1 0 0

0 1 1 0 1 0S2 1 0 0 0 0 1

1 0 1 0 0 11 1 x x x 01 1 x x x 0

For z B’x’ B’x Bx Bx’

00 01 11 10A’ 0 0 0 0 0A 1 1 1 0 0z = AB’

Output z is zero for both values of x because output is not affected by the input values or output is independent of input values.

BITS PATTERN DETECTOR USING MEALY MACHINE

Mealy State Graph Example 1Suppose we want to detect bit

pattern 010 in a receiving stream of bits ‘x’.

So whenever bit pattern 010 occurs the output ‘z’ becomes 1 and then becomes 0 again to detect another bit pattern.

Suppose x = 1001101000 is received

Then z = 0000000100z becomes 1 after it detects the last

bit of the pattern and then change to 0 again.

What if we have again 1 after the last pattern detected.

For example x = 10011010100. If you allow the overlapping (i.e last 0 is

counted as part of previous pattern as well as next pattern) then we can say we have two patterns otherwise it is not considered as a next pattern.

In this example we allow overlapping detection, hence the output will be

x = 10011010100 z = 00000001010

State Graph Assume when the circuit will be switched on it will

be in S0 state

S0

S1S2

x / z = 1 /0; If input bit is 1 then stay in the present state0/0; no output

0/0

1/0

S0 – Reset state (00)S1 – is the state in which 0 has been received (01)S2 – is the state in which 01 has been received (10)

0/11/0

State Graph At S0, If the first bit is 0 then it can be starting bit of

bit pattern 010. But if the first bit is 1 then it cannot be starting bit of

bit pattern 010 so we remain in starting state S0 If consecutive bits after the first bit are also 1 then

we still stay in the state S0. We change the state only when the first 0 bit is

received. When 0 is received then it may be part of 010

pattern but we change the state to S1 to remember occurrence of 0

Since the output will occur only when the pattern 010 is received, at receiving first 0 no output will be generated.

At S1 if the received bit is 0 then we stay at S1 because we want 1 after 0 to detect 010 pattern.

At S1 if 1 is received then we move to S2 but output will still be 0.

At S2 if 0 is received then it means that we have received the pattern 010 and output is produced but next state will be again S1 because the received 0 may be part of another 010 sequence as we saw in bit pattern example before.

If 1 is received at S2 then we need to move to S0 to start process of detection again.

Mealy State Graph Example 2Now detect two patterns: 1001 and

010Overlapping is also allowed.

Clock

x z

Moore MachineAs an example of a Moore circuit, we

will analyze circuit consists of two D-flip flops(shown on the next slide).

Assume ◦ input X = 011. ◦ initial state of A = B = 0◦all state changes occur after the rising

edge of the clock.The X input is synchronized with the

clock so that it assumes its next value after each rising edge.

Moore Machine

State of A=1 and B = 0 occur only after the first rising edge of the clock

Moore MachineBecause Z is a function only of the present

state (in this case, Z = A ⊕ B) the output will only change when the state changes.

A = DA and B = DB First input bit (MSB) is X = 0, so DA = 1 and DB

= 0. The state will change to A = 1 and B = 0 after

the first rising clock edge.Second input bit is 1.So, DA = 0, DB = 1 and the state changes to A

= 0 and B = 1 after the second rising clock edge.

Moore MachineThird input bit is 1, which makes DA = DB

= 1, and the next rising edge causes A=1 and B=1.

The resulting output sequence is Z =110. Note that for the Moore circuit, the

output which results from application of a given input does not appear until after the active clock edge

Therefore, the output sequence is displaced in time with respect to the input sequence.

Mealy MachineAs an example of a Moore circuit, we

will analyze circuit consists of two JK-flip flops(shown on the next slide).

Assume ◦ input X = 10101. ◦ initial state of A = B = 0

In this example, the output depends on both the input (X) and the flip-flop states (A and B), so Z may change either when the input changes or when the flip-flops change state.

First input bit X=1.The output is Z=1 and JB =KA=1. After the falling edge of the first clock

pulse, B changes to 1 so Z changes to 0.

PROGRAMMABLE LOGIC DEVICES

Programmable Logic Devices An IC that contains large numbers of gates, flip-flops, etc. that can be

configured by the user to perform different functions is called a Programmable Logic Device (PLD).

PLD belongs to a larger group of programmable chips called Application Specific IC (ASIC).

PLDs can be used to prototype design that will be implemented for sale in regular Ics.

The internal logic gates and/or connections of PLDs can be changed/configured by a programming process.

One of the simplest programming technologies is to use fuses. In the original state of the device, all the fuses are intact. Programming the device involves blowing those fuses along the paths that

must be removed in order to obtain the particular configuration of the desired logic function.

PLDs are typically built with an array of AND gates (AND-array) and an array of OR gates (OR-array).

Problems of using standard ICs in logic design are that they require hundreds or thousands of these ICs, considerable amount of circuit board space, a great deal of time and cost in inserting, soldering, and testing.

There are three fundamental types of standard PLDs: ◦ Read Only Memory (ROM) or Programmable ROM (PROM) ◦ Programmable Array Logic (PAL)◦ Programmable Logic Array (PLA). ◦ Complex Programmable Logic Device (CPLD), ◦ Field Programmable Gate Array (FPGA).

In order to show the internal logic diagram for such technologies in a concise form, it is necessary to have special symbols for array logic.

Figure shows the conventional and array logic symbols for a multiple input AND and a multiple input OR gate.

Read Only Memory (ROM)ROM is made of a fixed array of AND

gates and a programmable array of OR gates.

Fixed AND array with 2N outputs implemented using a 2 x 2N decoder.

The output of the decoder are minterms.Programmable OR Array with M outputs

lines to form up to M sum of minterms.A program for a ROM or PROM is simply a

multiple-output truth table.

ROMThe input lines to the AND array are

hard-wired and the output lines to the OR array are programmable.

Each AND gate generates one of the possible AND products (i.e., minterms)

Example Consider that the following Boolean functions are to

be developed using ROM. F1 (A, B, C) = ( 0,1,2,5,7) and F2 (A, B, C) = (1,4,6). When a combinational circuit is developed by means

of a ROM, the functions must be expressed in the sum of minterms or by a truth table.

Since there are three input variables, a ROM containing a 3-to-8 line decoder is needed to implement fixed AND array.

In addition, since there are two output functions, the OR array must contain at least two OR gates.

That means, a 23 × 2 ROM or 8 × 2 ROM is to be employed to realize the above functions.

Programmable Logic Array (PLA)One way to design a combinational logic

circuit it to get gates and connect them with wires.

One disadvantage with this way of designing circuits is its lack of portability.

You can now get chips called PLA (programmable logic arrays) and "program" them to implement Boolean functions.

PLA is quite simple to learn, and produces nice neat circuits too.

Programmable Logic Array (PLA) is a programmable device used to implement combinational logic circuits.

The PLA has programmable connections for both AND and OR arrays.

So it is the most flexible type of PLD.This layout allows for a large number

of logic functions to be synthesized in the sum of products canonical forms.

Note that the use of the word "Programmable" does not indicate that all PLAs are field-programmable; in fact many are programmed during manufacture in the same manner as a ROM.

This is particularly true of PLAs that are embedded in more complex and numerous integrated circuits such as microprocessors.

PLAs that can be programmed after manufacture are called FPLA (Field-programmable logic array).

Firmware:

FIFO

LIFO

ROM

Flash Memory

SIMM

DIMM

Recommended