0% found this document useful (0 votes)
24 views64 pages

DSDV m2

The document discusses combinational circuits, including their design process and specific examples like a 3-bit comparator and binary adders. It covers half and full adders, their truth tables, and circuits, as well as binary subtraction using half and full subtractors. Additionally, it introduces concepts like carry look-ahead adders and n-bit subtractors, explaining their functionality and implementation.

Uploaded by

Sri Vani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views64 pages

DSDV m2

The document discusses combinational circuits, including their design process and specific examples like a 3-bit comparator and binary adders. It covers half and full adders, their truth tables, and circuits, as well as binary subtraction using half and full subtractors. Additionally, it introduces concepts like carry look-ahead adders and n-bit subtractors, explaining their functionality and implementation.

Uploaded by

Sri Vani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 64

Combinational Circuits

• Combinational circuit is a feed forward circuit that consists of combination of gates.

To Design a combinational circuit the following steps are followed


1. State the given problem completely and exactly
2. Interpret the problem, and determine the available input variables and required output variables.
3. Assign a letter symbol to each input and output variables.
4. Design the truth table, which defines the required relations between inputs and outputs.
5. Obtain the simplified Boolean expression for each output using k-maps.
6. Draw the logic circuit diagram to implement the Boolean expression.

Module2-Analysis and Design of Combinational Logic 1


Combinational Circuits
• Design a combinational circuit which has 3-bit input number and a single output (F). The
output signal F is specified as follows:
•F = 1 when the input number is less than (3)
•F = 0 otherwise.
•Implement F using only NAND gates

Module2-Analysis and Design of Combinational Logic 2


Combinational Circuits
• Let the three inputs be called X, Y, and Z.
• X is the most significant variable and Z is the least significant variable. The output F goes high, that is,
the output produces logic 1 value if the input is less than 011, equivalent to a decimal value of three.
This means that the output will be logic one for input combinations 000, 001, and 010.
• For other input combinations, which are 011 upto 111, the output is logic zero.

Module2-Analysis and Design of Combinational Logic 3


Binary Adder
• Basic building blocks of all arithmetic circuits are ADDERS.
• It adds two binary numbers and gives out sum and carry-out as outputs.
• Divided into two categories 1.Half adder 2.Full-adder

Module2-Analysis and Design of Combinational Logic 4


Half
Adder • Adding two single-bit binary values, X, Y produces a sum S bit and a carry out C-
out bit.
• This operation is called half addition and the circuit to realize it is called a half
adder.

Half Adder Truth Table S(X,Y) = S


Inputs (1,2) S = X’Y +
Outputs XY’ S = X  Y
X Y S C-out
0 0 0 0
0 1 1 0 C-out(x, y, C-in) = S
1 0 1 0 (3) C-out = XY
1 1 0 1

X
Sum S
Y
X Half S
Y Adder C-OUT C-out

Module2-Analysis and Design of Combinational Logic 5


Full Adder
• Adding two single-bit binary values, X, Y Sum S X
with a carry input bit C-in produces a XY
sum bit S and a carry out C-out C-in 00 01 11 10
bit. 0 2 4

Full Adder Truth Table 0 6 1


1 3 1 7 5
Inputs Outputs 1 1 C-in

X Y C-in S C-out 1
Y
0 0 0 0 0 S = X’Y’(C-in) + XY’(C-in)’ + XY’(C-in)’ + XY(C-in)
0 0 1 1 0 S = X  Y  (C-in)

0 1 0 1 0 Carry C-out X
0 1 1 0 1 XY
C-in 00 01 11 10
1 0 0 1 0 0 2 4
1 0 1 0 1 0 6

1 1 0 0 1 1 3 7 1 5
1 1 1 1 C-in
1 1 1 1 1
Y
S(X,Y, C-in) = S (1,2,4,7)
C-out = XY + X(C-in) + Y(C-in)
C-out(x, y, C-in) = S
(3,5,6,7)
Module2-Analysis and Design of Combinational Logic 6
Full Adder Circuit Using AND-
OR X’ X’Y’C-in
X Y’
X X’ C-in

X’
Y
X’YC-in’ Sum S
Y C-in’
Y Y’ X
Y

C-in C-in’ XY’C-in’

C-in C-in’ X
Y
C-in’ XYC-in

X Y X XY
Y
Full
C-out C-in X
XC-in
Adder C-out
C-in
Y
S
C-in YC-in

Module2-Analysis and Design of Combinational Logic 10


Full Adder Circuit Using XOR

Y Sum S
X Y C-in

Full X XY
C-out C-in
Adder Y

X
XC-in C-out
S C-in
Y

C-in YC-in

Module2-Analysis and Design of Combinational Logic 11


Binary parallel Adder
Inputs to be added
Adds two 4-bit numbers: X3X2X1X0 Y3Y2Y1Y0
X = X3 X2 X1 X0
Y = Y3 Y2 Y1 Y0
producing the sum S = S3 S2 S1 S0 , 4-bit
C4 C-out C-in C0 =0
C-out = C4 from the most significant parallel
position j=3 Adder

S3 S2 S1 S0

Sum Output

Data inputs to be added

X3 Y3 X2 Y2 X1 Y1 X0 Y0

Full C3 Full C2 Full C1 Full


C4 C-out C-in C-out C-in C-out C-in C-out C-in C0 =0
Adder Adder Adder Adder

S3 S2 S1 S0
Sum output

Module2-Analysis and Design of Combinational Logic 12


Look-Ahead Carry Binary
Adders
• Main disadvantage of four bit adder is that higher order bit operation can be performed only if carry out from
lower order bit occurs.Hence it takes n-time’s propagation delay of full adder to complete n-bit
addition.This delay can be overcome by look-ahead carry adder.
• Carry look-ahead adders use a different method to create the needed carry bits for each full adder with a lower
constant delay equal to three gate delays.
• The carry out C-out from the full adder at position i or Cj+1 is given by:
C-out = C i+1 = Xi . Yi + (Xi + Yi) . Ci
• By defining:
• Gi = Xi . Yi as the carry generate function for position i (one gate delay)
(If Gi =1 C i+1 will be generated regardless of the value
Ci)
(one gate delay)
• Pi = Xi + Yi as the carry propagate function for position i
(If Pi = 1 Ci will be propagated to C i+1)
• By using the carry generate function Gi and carry propagate function Pi , then C i+1 can be written as:
C-out = C i+1 = Gi + Pi . Ci
• To eliminate carry ripple the term Ci is recursively expanded and by multiplying out, we obtain a 2-level
AND-OR expression for each C i+1

Module2-Analysis and Design of Combinational Logic 13


Carry Look-Ahead Adders
• For a 4-bit carry look-ahead adder the expanded expressions for all
carry bits are given by:
C1 = G0 + P0.C0

C2 = G1 + P1.C1 = G1 + P1.G0 + P1.P0.C0

C3 = G2 + P2.G1 + P2.P1.G0 + P2.P1.P0.C0

C4 = G3 + P3.G2 + P3.P2.G1 + P3 . P2.P1.G0


+ P3.P2.P1.P0.C0

where Gi = Xi . Yi Pi
= Xi + Yi

• The additional circuits needed to realize the expressions are usually


referred to as the carry look-ahead logic.
• Using carry-ahead logic all carry bits are available after three gate
delays regardless of the size
Module2-Analysis of the
and Design adder. Logic
of Combinational 14
Carry Look-Ahead Circuit

…. + Pi-1.P i-2. …P1 . G0 + P i-1.P i-2. …P0 . C0


Ci = Gi-1 + Pi-1. Gi-2 +

Module2-Analysis and Design of Combinational Logic 15


Binary Arithmetic Operation: Subtraction

• Two binary numbers are subtracted by subtracting each pair of bits together with borrowing, where
needed.
• Subtraction Example:

0 0 1 1 1 1 1
X 229 1 1 1 0 0 1 0 1 0 0 Borrow
Y - 46 - 0 0 1 0 1 1 1 0

183 1 0 1 1 0 1 1
1

Module2-Analysis and Design of Combinational Logic 16


Half Subtractor
• Subtracting a single-bit binary value Y from anther X (I.e. X -Y ) produces a
difference bit D and a borrow out bit B-out.
• This operation is called half subtraction and the circuit to realize it is called a half
subtractor.

D(X,Y) = S
Half Subtractor Truth Table (1,2) D = X’Y +
Inputs Outputs XY’ D = X  Y
X Y D B-out
B-out(x, y, C-in) = S
0 0 0 0
0 1 1 1
(1) B-out = X’Y
1 0 1 0
1 1 0 0 X Difference
D
Y
X Half D
Y Subtractor B-OUT B-out

Module2-Analysis and Design of Combinational Logic 17


Full Subtractor
• Subtracting two single-bit binary values, Y, Difference D X
B-in from a single-bit value X produces XY
a difference bit D and a borrow out B-out B-in 00 01 11 10
bit. This is called full subtraction. 0 2 4
0 6 1
Full Subtractor Truth Table 1 3 1 5
B-in
Inputs 1 7
Outputs 1 1
X Y B-in D B-out Y
0 0 0 0 0 D = X’Y’(B-in) + XY’(B-in)’ + XY’(B-in)’ + XY(B-
0 0 1 1 1 in)
0 1 0 1 1 = X  Y  (C-in)
Borrow B-out X
0 1 1 0 1 XY
1 0 0 1 0 B-in 00 01 11 10
2
1 0 1 0 0 0
0
6
4

1 1 0 0 0 1 3 1 5
B-in
1 1 1 1 1 1 7
1 1 1
Y
D(X,Y, C-in) = S (1,2,4,7)
Bout(x, y, C-in) = S B-out = X’Y + X’(B-in) +
Y(B-in)
(1,2,3,7)
Module2-Analysis and Design of Combinational Logic 18
Full Subtractor Circuit Using AND-
OR X’ X’Y’B-in
X Y’
X X’ B-in

X’
Y
X’YB-in’ Difference D
Y B-in’
Y Y’ X
Y

B-in B-in’ XY’B-in’

B-in B-in’ X
Y
B-in’ XYB-in

X Y X’ X’Y
Y
Full
B-out B-in X’
X’B-in
Subtractor B-out
B-in
Y
D
B-in YB-in

Module2-Analysis and Design of Combinational Logic 19


Full Subtractor Circuit Using XOR

X Y Y Difference D
B-in

Full
B-out B-in
Subtractor X’
X’Y

Y
D
X’
X’B-in
B-out
B-in

B-in YB-in

Module2-Analysis and Design of Combinational Logic 20


n-bit Subtractors
An n-bit subtracor used to subtract an n-bit number Y from
another n-bit number X (i.e X-Y) can be built in one of two ways:

• By using n full subtractors and connecting them in series, creating a borrow ripple
subtractor:
• Each borrow out B-out from a full subtractor at position j is connected to the
borrow in B-in of the full subtracor at the higher position j+1.

• By using an n-bit adder and n inverters:


• Find two’s complement of Y by:
• Inverting all the bits of Y using the n inverters.
• Adding 1 by setting the carry in of the least significant position to 1
• The original subtraction (X - Y) now becomes an addition of X to
two’s complement of Y using the n-bit adder.

Module2-Analysis and Design of Combinational Logic 21


4-bit Borrow Subtractor
Inputs
X3X2X1X0 Y3Y2Y1Y0

Subtracts two 4-bit numbers:


Y = Y3 Y2 Y1 Y0 from 4-bit
X = X3 X2 X1 X0 Y = B4 B-out B-in B0 =0
Subtractor
Y3 Y2 Y1 Y0
producing the difference D = D3 D2 D1 D0 ,
B-out = B4 from the most significant
D3 D2 D1 D0
position j=3
Difference Output D

Data inputs to be subtracted

X3 Y3 X2 Y2 X1 Y1 X0 Y0

B3 B2 B1
B4 B-out Full B-in B-out Full B-in B-out Full B-in B-out Full B-in B0 =0
Subtractor Subtractor Subtractor Subtractor

D3 D2 D1 D0
Difference output D

Module2-Analysis and Design of Combinational Logic 22


4-bit Subtractor Using 4-bit
Adder Inputs to be subtracted

Y3 Y2 Y1 Y0

X3 X2 X1 X0

C4
4-bit
C-out C-in C0 = 1
Adder
S3 S2 S1 S0

D3 D2 D1 D0

Difference Output

Module2-Analysis and Design of Combinational Logic 23


Comparator-one bit

Module2-Analysis and Design of Combinational Logic 24


Decoders
• A decoder is a multiple-input, multiple-output logic circuit that converts coded inputs into coded
outputs, where the input and output codes are different. e.g. n-to-2n, BCD decoders.

• Enable inputs must be on for the decoder to function, otherwise its outputs assume a single “disabled”
output code word.

Decoder
Input
Code word
Output
Map code word
Enable
inputs

Module2-Analysis and Design of Combinational Logic 25


Binary n-to-2n Decoders
• A binary decoder has n inputs and 2n outputs.
• Only the output corresponding to the input value is equal to 1.

n n to 2n
2n
input : decode
: output
s r
s

Module2-Analysis and Design of Combinational Logic 26


2-to-4 Binary Decoder
Truth Table:
X Y F0 F1 F2 F3
0 0 1 0 0 0
0 1 0 1 0 0 F0 =
1 0 0 0 1 0 X'Y'
1 1 0 0 0 1

• From truth table, circuit for 2x4 F1 = X'Y


decoder is: F2 =
• Note: Each output is a 2-variable XY'
minterm (X'Y', X'Y, XY' or XY) F3 = XY

F0
X Y
X 2-to-4 F1
Y Decoder F2
F3

Module2-Analysis and Design of Combinational Logic 27


3:8 Decoder

E A B C O0 O1 O2 O3 O4 O5 O6 O7

0 X X X 0 0 0 0 0 0 0 0
O0 ABC
1 0 0 0 1 0 0 0 0 0 0 0
A S2 O1 ABC
O2 ABC 1 0 0 1 0 1 0 0 0 0 0 0
B S1 3:8 O3 ABC 1 0 1 0 0 0 1 0 0 0 0 0
C de O4 ABC
S0 1 0 1 1 0 0 0 1 0 0 0 0
c O5 ABC
O6 ABC 1 1 0 0 0 0 0 0 1 0 0 0
ABC 1 1 0 1 0 0 0 0 0 1 0 0
O7
1 1 1 0 0 0 0 0 0 0 1 0
1 1 1 1 0 0 0 0 0 0 0 1
Enb

2
8
3:8 Decoder

2 Module2-Analysis and Design of Combinational Logic


9
3-to-8 Binary Decoder
Truth Table:
F0 =
x y z F0 F1 F2 F3 F4 F5 F6 F7 x'y'z'
0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0 F1 =
0 1 0 0 0 1 0 0 0 0 0
0 1 1 0 0 0 1 0 0 0 0 x'y'z F2
1 0 0 0 0 0 0 1 0 0 0
1 0 1 0 0 0 0 0 1 0 0 = x'yz'
1 1 0 0 0 0 0 0 0 1 0
1 1 1 0 0 0 0 0 0 0 1 F35 = =
xy'z
x'yz F4
F0 F6 =
X
F1 = xy'z'
3-to-8 F2
xyz' F7
Y F3
Z
Decoder F4
F5
= xyz
F6
x y
F7 z

Module2-Analysis and Design of Combinational Logic 30


Encoders
• If the a decoder's output code has fewer bits than the input code, the device is usually called an encoder.
e.g. 2n-to-n, priority encoders.

• The simplest encoder is a 2n-to-n binary encoder, where it has only one of 2n inputs = 1 and the output is
the n-bit binary number corresponding to the active input.

• For an 8-to-3 binay encoder with inputs I0-I7 the logic expressions of the outputs Y0-Y2 are:

Y0 = I1 + I3 + I5 + I7
Y1= I2 + I3 + I6 + I7
Binary
Y2 = I4 + I5 + I6 +I7 encoder
2n . . n
. . outputs
inputs . .

Module2-Analysis and Design of Combinational Logic 31


8-to-3 Binary Encoder
Inputs Outputs

At any one time, only I 0 I 1 I 2 I 3 I4 I 5 I 6 I7 y2 y1 y2


one input line has a value of 1. 1 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 1 1
0 0 0 0 1 0 0 0 1 0 0
0 0 0 0 0 1 0 0 1 0 1
0 0 0 0 0 0 1 0 1 1 0
0 0 0 0 0 0 0 1 1 1 1
I0
I1 Y2 = I4 + I5 + I6 + I7
I2
I3 y1 = I2 + I3 + I6 + I7
I4
I5
I6 Y0 = I1 + I3 + I5 + I7
I7

Module2-Analysis and Design of Combinational Logic 32


Multiplexers
• A multiplexer (MUX) is a digital switches which connects data from one of n sources to
the output.
• A number of select inputs determine which data source is connected to the output.

D0 1Y
Multiplexer
Enable EN
s bits
2Y
Select SEL
D1
Data
b bits output
. .
D0
b bits Y . .
D1 . .
bY
n Data . Dn-1
Sources .
b
bits Dn-1
SEL EN

Module2-Analysis and Design of Combinational Logic 33


2:1 Multiplexer and 4:1 Multiplexer
Truth table for a 4-to-1 multiplexer
and 2:1 Multiplexer
Input
I0 I1 I2 I3 S1 S0 Y S1 S0 Y s I0
d0 d1 d2 d3 0 0 d0 0 0 I0 I1
d0 d1 d2 d3 0 1 d1 0 1 I1 mu Y
I2
d0 d1 d2 d3 1 0 d2 1 0 I2 x
I3
d0 d1 d2 d3 1 1 d3 1 1 I3
S1 S0
Inputs
select
I0 0
4:
I1 1 MUX
1
I2 2 Y Outpu
I3 3 t
S1 S0

select

Module2-Analysis and Design of Combinational Logic 34


4-to-1 MUX Circuit
I0 I0

I1 I1
Y Y
I2
I2

I3 I3

0 1 2
3
2-to-4
Decode
r
S1 S0 S1 S0

Module2-Analysis and Design of Combinational Logic 35


Larger Multiplexers
• Larger multiplexers can be constructed from smaller ones.
• An 8-to-1 multiplexer can be constructed from smaller multiplexers as shown:

I0
S2 S1 S0
I1 4:
I2 Y
0 0 0 I0
1
MUX
I3 0 0 1 I1
2:1
0 1 0 I2
S1 S0 MUX Y 0 1 1 I3
I4 1 0 0 I4
I5 4:1 1 0 1 I5
I6 MUX 1 1 0 I6
S2
I7 1 1 1 I7

S1 S0

Module2-Analysis and Design of Combinational Logic 36


Demultiplexers
• Digital switches to connect data from one input source to one of n outputs.
• Usually implemented by using n-to-2n binary decoders where the decoder’s enable line is used for data
input of the demultiplexer.

2X4
Select Decode
s bits Demux b bits lines r One of
Select four 1-bit
One of n b bits outputs
One of n outputs
Data
Data
Sources
Input
selected
. Input Enable
. data (1bit)
b
bits 1-bit 4-output demultiplexer using
a 2x4 binary decoder.

Module2-Analysis and Design of Combinational Logic 37


1-to-4 Demultiplexer
Outputs
S1 So Y0 Y1 Y2 Y3
Y0 = D.S1'.S0'
0 0 D 0 0 0
Y1 =
0 1 0 D 0 0
Data demu
D x D.S1'.S0 Y2 1 0 0 0 D 0
1 1 0 0 0 D
Y3 D.S
= = D.S 1.S0
1.S0'

S1 S0
select

Y0 =
2x4
S1 Decode D.S1'.S0' Y1
S0 r
= D.S1'.S0 Y2
E = D.S1.S0'

Y3 = D.S1.S0
D

Module2-Analysis and Design of Combinational Logic 38


PLDs (Programmable Logic Devices)

Module2-Analysis and Design of Combinational Logic 39


General Structure of PLD
• Inputs to the PLD are applied to a set of
buffer/inverters. These devices have both the true
value of the input as well as the complemented
value of the input as its outputs.
• Outputs from these devices are the inputs to an array
of and-gates. The AND array generates a set of p
product terms.
• The product terms are inputs to an array of or-gates
to realize a set of m sum-of-product expressions.
General Structure of PLD
General Structure of PLD
• One or both of the gate arrays are programmable.
• The logic designer can specify the connections within an array.
• PLDs serve as general circuits for the realization of a set of Boolean
functions.

Device AND-array OR-array


PROM Fixed Programmable
PLA Programmable Programmable
PAL Programmable Fixed
Programming a PLD
Programming a PLD
• Erasable PLD—connections can be reset to their original
conditions and then reprogrammed.
• Can be achieved by exposing the PLD to ultraviolet light or using
electrical signals
• PLDs programmed by a user are called field
programmable.
• User can also specify the desired connections and supply
the information to the manufacturer. Manufacturer
prepares an overlay that is used to complete the
connections as the last step in the fabrication process.
• Such PLDs are called mask programmable.
PLD Notation
• Simplified notation. Each gate has only a single
input line.
• Inputs are indicated by lines at right angles to the
single gate lines.
• A cross at the intersection denotes a fusible link is
intact.
PLD Notation
• Lack of cross indicates the fuse is blown or no connection exists.
PLD Notation
• The occurrence of a hard-wired connection that is not fusible is
indicated by a junction dot.

• For the special case when all the input fuses to a gate are kept
intact, a cross is placed inside the gate symbol.
Programmable Read-Only Memory (PROM)
PROM Structure

Logic Diagram
PROM Structure

PLD Notation
Example
Why is it called PROM?
Programmable Logic Array
Programmable Logic Array
Programmable Logic Array
PROM vs PLA
• PROM: realization of a set of Boolean functions is based on
minterm canonical expressions.
• No minimization necessary.
• PLA: the AND gates are capable of generating product terms that
are not necessarily minterms.
• Realization using PLA is based on sum-of-product expression that may not be
canonical.
• Logic designer is bounded by the number of product terms that are realizable
by the AND-array.
• Simplifications is necessary.
Logic Design Example
Logic Design Example
Additional Features
• For greater flexibility, PLAs make provision for either a true
output or a complemented output.
Example of Use of Complemented Functions
Example of Use of Complemented Functions
PLA Table
• A common way of specifying the connections in a PLA.
• 3 sections: input section, output section, T/C section.
• Each product term is assigned a row in the table.
• Input section indicates connections between inputs to AND-array.
• Output section indicates connections between outputs of AND-array
and inputs to the OR-array.
• T/C section indicates how the exclusive or gates are programmed.
• T—true output is used.
• C—output should be complemented.
Programmable Array Logic (PAL) Devices
• OR-array is fixed by the manufacturer of the device.
• PAL device is easier to program and less expensive than the PLA.
• Less flexible.

• For our examples:


• 4-input, 3-output PAL device
• Three Boolean expressions can be realized in which two expressions can have at most 3
product terms and one expression can have at most 2 product terms.
Example of Logic Design with PAL
Example of Logic Design with PAL
University Questions

• Define priority encoder with three inputs with middle bit at highest priority encoding to 10 most
significant bit at next priority encoding to 11 and least significant at least priority encoding 01.
10M
• Define multiplexer and demultiplexer and draw block diagram. 04M
• Design 4:1 Multiplexer draw the circuit using gates. 06M
• Explain how will you implement the following function using implementation
table, F(A,B,C,D)=Σm(0,1,3,4,7,10,12,14) with A,B,C select lines. 10M
• Design Magnitude comparator .Design a two bit binary comparator and implement with suitable
logic gates. 08M
• Design a binary full adder using only two input NAND gates. Write its truth table. 06M
• Implement the following boolean function using 4:1 multiplexer
Y=f(A,B,C,D)=Σm(0,1,2,4,6,9,12,14) 06M

Module2-Analysis and Design of Combinational Logic 66


Assignment Questions
• Design a combinational circuit so that output is generated when majority of four inputs is false.
• Draw Half adder using only Nand gates and only Nor gates.
• Design full subtractor by cascading Half-Subtractors.
• Implement the following function by means of the decoder and fundamental gates F=πM(0,1,4,5)
• Implement full adder circuit using decoder and OR gates.
• Construct 1:16 demultiplexer using 1:4 demultiplexer and 2:4 line decoder.
• Implement Σm(2,4,5,7,9,14) Using Mux.

Module2-Analysis and Design of Combinational Logic 67

You might also like