Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational...

154
Computer Organization and Networks (INB.06000UF, INB.07001UF) Winter 2020/2021 Stefan Mangard, www.iaik.tugraz.at Chapter 1 - Combinational Circuits

Transcript of Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational...

Page 1: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Computer Organization and Networks(INB.06000UF, INB.07001UF)

Winter 2020/2021

Stefan Mangard, www.iaik.tugraz.at

Chapter 1 - Combinational Circuits

Page 2: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Computation and Physics

www.iaik.tugraz.at

2

Page 3: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

We Need to Map our Programs to Physics

www.iaik.tugraz.at

3

• Mechanics

• Voltage

• Current

• Quantum Mechanics

• …

include <stdio.h>

int main()

{

printf(“Hello World");

return 0;

}

1 + 1 = ?

Page 4: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Examples of Computation Machines

www.iaik.tugraz.at

4

Enigma an electromechanical encryption machine

Museo della Scienza e della Tecnologia “Leonardo da Vinci” CC BY-SA

„British Bombe“ by Alan Turing

An electromechanical machine to break Enigma

Page 5: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

We Need to Map our Programs to Physics

www.iaik.tugraz.at

5

include <stdio.h>

int main()

{

printf(“Hello World");

return 0;

}

1 + 1 = ?

IBM quantum computer(Lars Plougmann via flickr CC BY-SA 2.0)

Zuse Z1ComputerGeek via Wikipedia CC BY-SA 3.0

CMOS Processor(http://asic.ethz.ch)

Page 6: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Complementary Metal-Oxide-Semiconductor (CMOS)

• Invented at Bell Labs by Mohamed Atalla and Dawon Kahng in 1959

• CMOS uses PMOS and NMOS transistors

• CMOS is the technology of almost all digital circuits (from contactless RFID chips to server CPUs

www.iaik.tugraz.at

6

Page 7: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Two Types of Transistors

• PMOS and NMOS transistors are essentially switches• PMOS: A=0 → switch is open; A=1 → switch is closed

• NMOS: A=0 → switch is closed; A=1 → switch open

• How do we build a computer from these two types of transistors?

www.iaik.tugraz.at

7

PMOS transistor: is conducting, if A is connected to GND

NMOS transistor: is conducting, if A is connected to Vdd

Page 8: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

We Need Two Things

www.iaik.tugraz.at

8

• Computation

• How to apply a function on input data to generate an output?

• Storage

• How to store data and intermediate results?

Page 9: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic Gates

www.iaik.tugraz.at

9

Page 10: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

www.iaik.tugraz.at

10

Transistors

Logic Gates

Combinational Circuits

State Machines

Processors

Assembly Functions/Programs

C Programs

Applications and Operating Systems

Assembly Instructions

Link Layer

Computer 1 Computer 2

Physical Communication Link

Software

Hardware

Network Layer

Transport Layer

Application Layer

The Big Picture

Virtual Memory

Caches

Memory Protection

Page 11: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

A Logic Gate – “The Smallest Functional Unit”

LogicGate

q

(“Vdd”, “high”, “1”)

a

b

(“GND”, “Vss”, “low”, “0”)11

Page 12: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

A short look inside – a CMOS Inverter

12

PMOS transistor: is conducting, if A is connected to GND

NMOS transistor: is conducting, if A is connected to Vdd

A Q

High (1) Low (0)

Low (0) High (1)

Page 13: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

CMOS NAND gate

13

A B Out

Low (0) Low (0) High (1)

Low (0) High (1) High (1)

High (1) Low (0) High (1)

High (1) High (1) Low (0)

Page 14: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

CMOS Design Principle

14

Pull-Up Network with PMOS transistors

Pull-Down Network with NMOS Transistors

Pull-Up and Pull-Down networks are complementary

–> given static inputs, the output is either pulled up or pulled down

Based on this principle, different logic gates can be built

Page 15: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Building an AND Gate

• An AND gate cannot be built using a single pull-up/pull-down network

• It is built by a NAND gate followed by an inverter

15

Page 16: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

AND Gate

ANDGate

q

(“Vdd”, “high”, “1”)

(“GND”, “low”, “0”)16

Page 17: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

AND Gate

ANDGate

q

(“Vdd”, “high”, “1”)

(“GND”, “low”, “0”)17

Page 18: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

AND Gate

ANDGate

q

(“Vdd”, “high”, “1”)

(“GND”, “low”, “0”)18

Page 19: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Cascading Gates

ANDGate

(“Vdd”, “high”, “1”)

(“GND”, “low”, “0”)

ANDGate

ANDGate

a

bc

d

q

19

Page 20: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Combinational Circuit

(“Vdd”, “high”, “1”)

(“GND”, “low”, “0”)

Combinational Circuit

(built from many gates)

N wires/bit input

M wires/bit output

This can contain millions of gates

20

Page 21: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

The Complexity of a Microchip

• Get an impression

https://www.youtube.com/watch?v=Fxv3JoS1uY8

https://www.youtube.com/watch?v=2z9qme_ygRI

• Today’s chips contain billions of transistors connected by multiple layers of metal

21

David Carron

Page 22: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

22

Note: Logarithmic Scale!

Page 23: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Linear Scaling

23Beauty and Joy of Computing by University of California, Berkeley and Education Development Center, Inc, CC-BY-SA-NChttps://bjc.edc.org/bjc-r/cur/programming/6-computers/3-history-impact/2-moore.html

Page 24: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

The Mathematical View of a Combinational Circuit

• Combinational circuits (physical view) realize logic functions (mathematical view)

• With “function” we mean a mapping from a set of inputs to a set of outputs

• In mathematics, there exist many ways to express such a mapping, e.g.: y = f(x) = x2

• If you choose a value for x, you get a value for y. We call x the independent value and y the dependent value

24

Page 25: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic functions (or Boolean functions)

• The “input” of a logic function is a tuple consisting of 0’s and 1’s

• The “output” of a logic function is, depending on the input values, 0 or 1

• Example: y = a & b (“logic-AND”)

http://en.wikipedia.org/wiki/Boolean_function

Bk → B, where B = {0, 1} is a Boolean domain and k is a non-negative integer called the arity of the function. In the case where k = 0, the "function" is essentially a constant element of B.

25

www.iaik.tugraz.at

Page 26: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Truth Table

• A truth table uniquely describes a logic function.

• Example: The logic-AND function with 2 input variables x1 and x0

x1 x0 y0 0 00 1 01 0 01 1 1

26

www.iaik.tugraz.at

Page 27: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Elements of a truth table

x1 x0

Inputvariables

y = f(x1, x0)

27

www.iaik.tugraz.at

Page 28: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Elements of a truth table

Inputvariables

y = f(x1, x0)

List all combinationsof input variables.It is convenient tolist them in sorted order. We usually start with all zeroes.

x1 x0

0 00 11 01 1

28

www.iaik.tugraz.at

Page 29: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Elements of a truth table

Inputvariables Output

y = f(x1, x0)

x1 x0 y0 00 11 01 1

List all combinationsof input variables.It is convenient tolist them in sorted order. We usually start with all zeroes.

29

www.iaik.tugraz.at

Page 30: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Elements of a truth table

Inputvariables Output

y = f(x1, x0)

x1 x0 y0 0 f(0,0)0 1 f(0,1)1 0 f(1,0)1 1 f(1,1)

List all combinationsof input variables.It is convenient tolist them in sorted order. We usually start with all zeroes.

30

www.iaik.tugraz.at

Page 31: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Size of truth tables

x f(x)0 f(0)1 f(1)

1 input variable

21 possible values for x

31

www.iaik.tugraz.at

Page 32: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Size of truth tables

x1 x0 f(x1, x0)0 0 f(0,0)0 1 f(0,1)1 0 f(1,0)1 1 f(1,1)

2 input variables

22 possible combinations for (x1, x0)

n=2

2n

32

www.iaik.tugraz.at

Page 33: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Size of truth tables

x2 x1 x0 f(x2,x1,x0)0 0 0 f(0,0,0)0 0 1 f(0,0,1)0 1 0 f(0,1,0)0 1 1 f(0,1,1)1 0 0 f(1,0,0)1 0 1 f(1,0,1)1 1 0 f(1,1,0)1 1 1 f(1,1,1)

3 input variables

23 possible combinations for (x2, x1, x0)

n=3

2n

33

www.iaik.tugraz.at

Page 34: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Size of truth tables

n input variables

2n possible combinations

The size of a truth table grows exponentially with n.

34

www.iaik.tugraz.at

Page 35: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Just to make sure…

2n n2is not

exponential square

35

www.iaik.tugraz.at

Page 36: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular logic functions

• Inversion (1 input variable)

x f(x)0 11 0

36

www.iaik.tugraz.at

Page 37: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular logic functions

• Inversion (1 input variable)

• AND function (with 2 input variables)

x f(x)0 11 0

x1 x0 y0 0 00 1 01 0 01 1 1

37

www.iaik.tugraz.at

Page 38: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular logic functions

• Inversion (1 input variable)

• AND function (with 2 input variables)

• OR function (with 2 input variables)

x f(x)0 11 0

x1 x0 y0 0 00 1 11 0 11 1 1

x1 x0 y0 0 00 1 01 0 01 1 1

38

www.iaik.tugraz.at

Page 39: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular logic functions

• Inversion (1 input variable)

• AND function (with 2 input variables)

• OR function (with 2 input variables)

• XOR function (with 2 input variables)

x1 x0 y0 0 00 1 11 0 11 1 0

39

www.iaik.tugraz.at

Page 40: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular logic functions

• Inversion (1 input variable)

• AND function (with 2 input variables)

• OR function (with 2 input variables)

• XOR function (with 2 input variables)

• Buffer (double inversion)

40

www.iaik.tugraz.at

Page 41: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular logic functions

• Inversion (1 input variable)

• AND function (with 2 input variables)

• OR function (with 2 input variables)

• XOR function (with 2 input variables)

• Buffer (double inversion)

• NAND function (AND followed by inversion)

41

www.iaik.tugraz.at

Page 42: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular logic functions

• Inversion (1 input variable)

• AND function (with 2 input variables)

• OR function (with 2 input variables)

• XOR function (with 2 input variables)

• Buffer (double inversion)

• NAND function (AND followed by inversion)

• NOR function (OR followed by inversion)

42

www.iaik.tugraz.at

Page 43: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular logic functions

• Inversion (1 input variable)

• AND function (with 2 input variables)

• OR function (with 2 input variables)

• XOR function (with 2 input variables)

• Buffer (double inversion)

• NAND function (AND followed by inversion)

• NOR function (OR followed by inversion)

• NXOR function (XOR followed by inversion)

43

www.iaik.tugraz.at

Page 44: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Boolean Algebra

• Symbol for inversion: ~

• Symbol for AND: &

• Symbol for OR: |

• Example: y = (~x1 & x0) | (x2 & ~x0) | (x2 & x1)

44

www.iaik.tugraz.at

Page 45: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic gates: Technical realizations of logic functions

q = (~a & b) | c

45

www.iaik.tugraz.at

Page 46: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic gates: Technical realizations of logic functions

http://www.burch.com/logisim/

q = (~a & b) | c

OR

46

www.iaik.tugraz.at

Page 47: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic gates: Technical realisations of logic functions

http://www.burch.com/logisim/

q = (~a & b) | c

ORAND

47

www.iaik.tugraz.at

Page 48: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic gates: Technical realizations of logic functions

http://www.burch.com/logisim/

q = (~a & b) | c

OR

NOTAND

48

www.iaik.tugraz.at

Page 49: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic gates: Technical realizations of logic functions

http://www.burch.com/logisim/

q = (~a & b) | c

OR

connections (= “wires”)

NOTAND

49

www.iaik.tugraz.at

Page 50: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic gates: Technical realizations of logic functions

http://www.burch.com/logisim/

q = (~a & b) | c

ORNOT

logic gates

AND

50

www.iaik.tugraz.at

Page 51: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic gates: Technical realizations of logic functions

http://www.burch.com/logisim/

q = (~a & b) | c

ORNOT AND

inputs a, b, c

51

www.iaik.tugraz.at

Page 52: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic gates: Technical realizations of logic functions

http://www.burch.com/logisim/

q = (~a & b) | c

ORNOT AND

inputs a, b, c output q

52

www.iaik.tugraz.at

Page 53: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic gates: Technical realizations of logic functions

http://www.burch.com/logisim/

q = (~a & b) | c

ORNOT AND

inputs a, b, c output q

Inputs are independent;(can be chosen or are defined externally)

Outputs dependenton the inputs

53

www.iaik.tugraz.at

Page 54: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: A design flow

• Start with developing a truth table

• Example: Adding three binary variables u, v and w: s = u + v + w

• With 3 variables we have 23 possible combinations for input situations.

54

www.iaik.tugraz.at

Page 55: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: A design flowU + v + w

0 + 0 + 0

0 + 0 + 1

0 + 1 + 0

0 + 1 + 1

1 + 0 + 0

1 + 0 + 1

1 + 1 + 0

1 + 1 + 1

8 possible combinations;sorted from (0, 0, 0) to (1, 1, 1)

55

www.iaik.tugraz.at

Page 56: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: A design flowu + v + w = s

0 + 0 + 0 = 0

0 + 0 + 1 = 1

0 + 1 + 0 = 1

0 + 1 + 1 = 2

1 + 0 + 0 = 1

1 + 0 + 1 = 2

1 + 1 + 0 = 2

1 + 1 + 1 = 3

The result for each possible case

56

www.iaik.tugraz.at

Page 57: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: A design flowu + v + w = s1 s0

0 + 0 + 0 = 0 0

0 + 0 + 1 = 0 1

0 + 1 + 0 = 0 1

0 + 1 + 1 = 1 0

1 + 0 + 0 = 0 1

1 + 0 + 1 = 1 0

1 + 1 + 0 = 1 0

1 + 1 + 1 = 1 1

Re-writing the result as a binary number

57

www.iaik.tugraz.at

Page 58: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: A design flow

u v w s1 s0

0 0 0 0 0

0 0 1 0 1

0 1 0 0 1

0 1 1 1 0

1 0 0 0 1

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

The truth table

58

www.iaik.tugraz.at

Page 59: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: A design flow

u v w s1 s0

0 0 0 0 0

0 0 1 0 1 We only look at lines

0 1 0 0 1 where s0 gets “true”

0 1 1 1 0 i.e. “1”.

1 0 0 0 1

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

The logic function for s0:

59

www.iaik.tugraz.at

Page 60: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: A design flow

u v w s1 s0

0 0 0 0 0

0 0 1 0 1 s0 = (~u & ~v & w) …

0 1 0 0 1

0 1 1 1 0

1 0 0 0 1

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

The logic function for s0:

60

www.iaik.tugraz.at

Page 61: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: A design flow

u v w s1 s0

0 0 0 0 0

0 0 1 0 1 s0 = (~u & ~v & w) |

0 1 0 0 1 (~u & v & ~w) …

0 1 1 1 0

1 0 0 0 1

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

The logic function for s0:

61

www.iaik.tugraz.at

Page 62: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: A design flow

u v w s1 s0

0 0 0 0 0

0 0 1 0 1 s0 = (~u & ~v & w) |

0 1 0 0 1 (~u & v & ~w) |

0 1 1 1 0

1 0 0 0 1 ( u & ~v & ~w) …

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

The logic function for s0:

62

www.iaik.tugraz.at

Page 63: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: A design flow

u v w s1 s0

0 0 0 0 0

0 0 1 0 1 s0 = (~u & ~v & w) |

0 1 0 0 1 (~u & v & ~w) |

0 1 1 1 0

1 0 0 0 1 ( u & ~v & ~w) |

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1 ( u & v & w)

The logic function for s0:

63

www.iaik.tugraz.at

Page 64: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: With a little help from Logisim

http://www.burch.com/logisim/

64

www.iaik.tugraz.at

Page 65: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: With a little help from Logisim

Start Logisim

Goto Project→Analyze Circuit

Specify the inputs

65

www.iaik.tugraz.at

Page 66: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: With a little help from Logisim

Start Logisim

Goto Project→Analyze Circuit

Specify the inputs

Specify the outputs

66

www.iaik.tugraz.at

Page 67: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: With a little help from Logisim

Start Logisim

Goto Project→Analyze Circuit

Specify the inputs

Specify the outputs

Select truth table

67

www.iaik.tugraz.at

Page 68: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: With a little help from Logisim

Start Logisim

Goto Project→Analyze Circuit

Specify the inputs

Specify the outputs

Select Truth table

Specify the output section ofthe truth table

68

www.iaik.tugraz.at

Page 69: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: With a little help from Logisim

Start Logisim

Goto Project→Analyze Circuit

Specify the inputs

Specify the outputs

Specify the output section ofthe truth table

Optionally: Check thealgebraic expressions

69

www.iaik.tugraz.at

Page 70: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: With a little help from Logisim

Start Logisim

Goto Project→Analyze Circuit

Specify the inputs

Specify the outputs

Specify the output section ofthe truth table

Optionally: Check thealgebraic expressions

Click “Build Circuit” and “OK”.

70

www.iaik.tugraz.at

Page 71: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Implementing a logic function: With a little help from Logisim

Switch to Simulation Mode:

Simulate circuit withall possible input combinations.

71

www.iaik.tugraz.at

Page 72: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

www.iaik.tugraz.at

72

Page 73: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Boolean Algebra

• Values of variables are only 0 or 1.

• 3 main operations:• Negation, also known as “inversion” ~

• Conjunctions, also known as “ANDing” &

• Disjunction, also known as “ORing” |

• 1 other popular operation: “exclusive OR” ^

73

www.iaik.tugraz.at

Page 74: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Boolean Algebra

a | 0 = a

a | 1 = 1

a & 0 = 0

a & 1 = a

a ^ 0 = a

a ^ 1 = ~a

a | a = a

a | ~a = 1

a & a = a

a & ~a = 0

a ^ a = 0

a ^ ~a = 1

a | (a & b) = a

a & (a | b) = a

The proof of all these facts is rather easy: Take a truth table and check all possibilities.

74

www.iaik.tugraz.at

Page 75: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Boolean Algebra

Associative Law:

(a | b) | c = a | (b | c)

(a & b) & c = a & (b & c)

(a ^ b) ^ c = a ^ (b ^ c)

Commutative Law:

a | b = b | a

a & b = b & a

a ^ b = b ^ aThe proof of all these facts is rather easy: Take a truth table and check all possibilities.

75

www.iaik.tugraz.at

Page 76: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Boolean Algebra

Distributive Law:

a | (b & c) = (a | b) & (a | c)

a & (b | c) = (a & b) | (a & c)

a & (b ^ c) = (a & b) ^ (a & c)

The proof of all these facts is rather easy: Take a truth table and check all possibilities.

76

www.iaik.tugraz.at

Page 77: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Boolean Algebra

De Morgan’s Law:

~(a & b) = ~a | ~b

~(a | b) = ~a & ~b

The proof of all these facts is rather easy: Take a truth table and check all possibilities.

77

www.iaik.tugraz.at

Page 78: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Boolean Algebra

De Morgan’s Law:

~(a & b) = ~a | ~b

~(a | b) = ~a & ~b

The proof of all these facts is rather easy: Take a truth table and check all possibilities.

78

www.iaik.tugraz.at

Page 79: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Boolean Algebra

De Morgan’s Law:

~(a & b) = ~a | ~b

~(a | b) = ~a & ~b

The proof of all these facts is rather easy: Take a truth table and check all possibilities.79

www.iaik.tugraz.at

Page 80: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Incomplete specification: “Don’t Cares”

• Sometimes we are not interested in some input combinations; we “don’t care” about the output of the logic function in this case.

• This is the case, when not all input combinations occur in some context.

80

www.iaik.tugraz.at

Page 81: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Incomplete specification: “Don’t Cares”

• Example: 3 inputs, 2 “don’t cares”.

81

www.iaik.tugraz.at

Page 82: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Result after “synthesizing” with Logisim

82

www.iaik.tugraz.at

Page 83: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

How many logic functions are possible?

• Let’s start with logic functions with 1 input variable

83

www.iaik.tugraz.at

Page 84: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

How many logic functions are possible?

• Let’s start with logic functions with 1 input variable

• There exist 4 possible different truth tables:

x y0 01 0

x y0 11 0

x y0 01 1

x y0 11 1

84

www.iaik.tugraz.at

Page 85: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

How many logic functions are possible?

• Let’s start with logic functions with 1 input variable

• There exist 4 possible different truth tables

• In the y-column we see all possible combinations

85

x y0 01 0

x y0 11 0

x y0 01 1

x y0 11 1

www.iaik.tugraz.at

Page 86: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

How many logic functions are possible?

• Let’s start with logic functions with 1 input variable

• There exist 4 possible different truth tables

• In the y-column we see all possible combinations

x y0 y1 y2 y3

0 0 1 0 11 0 0 1 1

86

www.iaik.tugraz.at

Page 87: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

How many logic functions are possible?

• Two input variables x1 and x0

87

www.iaik.tugraz.at

Page 88: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

How many logic functions are possible?

• Two input variables x1 and x0

n=2

88

www.iaik.tugraz.at

Page 89: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

How many logic functions are possible?

• Two input variables x1 and x0

n=2

2n

89

www.iaik.tugraz.at

Page 90: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

How many logic functions are possible?

• Two input variables x1 and x0

2 = 2 = 162n 22

90

n=2

2n

www.iaik.tugraz.at

Page 91: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

With n = 3, 4, …

• n = 3, 23 = 8 lines, 28 = 256 functions

• n = 4, 24 = 16 lines, 216 = 65536 functions

• n = 5, 25 = 32 lines, 232 = 4294967296 functions

• n = 6, 26 = 64 lines, 264 = 18446744073709551616 functions

91

www.iaik.tugraz.at

Page 92: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Back to n = 2

• Some functions are “popular” and have names:

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND

92www.iaik.tugraz.at

Page 93: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular 2-input functions

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND OR

93www.iaik.tugraz.at

Page 94: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular 2-input functions

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

94www.iaik.tugraz.at

Page 95: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular 2-input functions

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NAND

95www.iaik.tugraz.at

Page 96: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Popular 2-input functions

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR

96www.iaik.tugraz.at

Page 97: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

97

Popular 2-input functions

www.iaik.tugraz.at

Page 98: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Some functions are trivial

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

x1

98www.iaik.tugraz.at

Page 99: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Some functions are trivial

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

x1x0

99www.iaik.tugraz.at

Page 100: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Some functions are trivial

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

x1x00

100www.iaik.tugraz.at

Page 101: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Some functions are trivial

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

x1x00 1

101www.iaik.tugraz.at

Page 102: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Some functions are “almost trivial”

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

x1x0~x10 1

102www.iaik.tugraz.at

Page 103: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Some functions are “almost trivial”

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

x1x0~x1 ~x00 1

103www.iaik.tugraz.at

Page 104: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Some functions are “implications”

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

x1x0~x1 ~x00 1

x1 implies x0

104www.iaik.tugraz.at

Page 105: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Some functions are “implications”

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

x1x0~x1 ~x00 1

x1 implies x0

x1 is implied by x0

105www.iaik.tugraz.at

Page 106: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

And some functions are “inverse implications”

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

x1x0~x1 ~x00 1

x1 implies x0

x1 is implied by x0

x1 does not imply x0

106www.iaik.tugraz.at

Page 107: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

And some functions are “inverse implications”

x1 x0 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

AND ORXOR

NANDNOR NXOR

x1x0~x1 ~x00 1

x1 implies x0

x1 is implied by x0

x1 does not imply x0

x1 is not implied by x0

107www.iaik.tugraz.at

Page 108: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

The popular functions can also have more than 2 inputs• Example: 5-input AND

• Only if all input values are 1, the output is 1

108

www.iaik.tugraz.at

Page 109: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

The popular functions can also have more than 2 inputs• Example: 3-input OR

• If at least one input values is 1, the output is 1

109

www.iaik.tugraz.at

Page 110: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Be careful with XOR function with more than 2 inputs• Interpretation #1: Output is 1, if an odd number of input values is 1

• Interpretation #2: Output is 1, if exactly 1 input value is 1

• Interpretation #1 is the “common” interpretation!

• In Logisim you can choose, which interpretation you want to have.

110

www.iaik.tugraz.at

Page 111: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Other Important Gates – Multiplexer (MUX)

• The select signal (sel) determines whether out is equal to I0 or I1:• Sel = 0 means out = I0

• Sel = 1 means out = I1

111

www.iaik.tugraz.at

Page 112: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Scaling to more inputs

• With each additional select signal, the number of selectable inputs doubles

• 2to1MUX: 1 select signal

• 4to1MUX: 2 select signals

• 8to1MUX: 3 select signals

• …

112

4to1MUX

www.iaik.tugraz.at

Page 113: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Other Important Gates –Demultiplexer/Decoder

• The select signals (sel) of a demultiplexer determine whether to which output the input is mapped:• Sel = 0 means out0 = in

• Sel = 1 means out1 = in

• The select signals (sel) of a decoder determines which output is high• Sel = 0 means out = 1

• Sel = 1 means out = 1

113

1to2 DEMUX

1to2 Decoder

1to4 Decoder

www.iaik.tugraz.at

Page 114: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

How many different types of gates are needed to be able to implement any logic function?

114

www.iaik.tugraz.at

Page 115: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Functional Completeness

• A functionally complete set of logic gates is a set that allows to build all possible truth tables by combining gates of this set.

• Important sets are:• {NAND}: Any circuit can be built just by using NAND gates (try it out in Logisim!)

• {NOR}: Any circuit can be built just by using NAND gates

• {AND, NOT}: Any circuit can be built just by using AND and NOT gates

• {AND, OR, NOT}: The set we use to map truth tables to equations

115

www.iaik.tugraz.at

Page 116: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Describing Combinational Circuits

116

www.iaik.tugraz.at

Page 117: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Describing Combinational Circuits

117

Combinational Circuit

(built from many gates)

N wires/bit input

M wires/bit output

www.iaik.tugraz.at

Page 118: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Describing Combinational Circuits

118

f1 q1

iN

i1i2 …

f1 q2…

f1 qM…

www.iaik.tugraz.at

Page 119: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Describing Combinational Circuits

119

f1 q1

iN

i1i2 …

f1 q2…

f1 qM…

inputs

outputscircuit

www.iaik.tugraz.at

Page 120: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Describing Combinational Circuits

120

inputs outputscircuit

www.iaik.tugraz.at

Page 121: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Describing Combinational Circuits

121

inputs outputscircuit

Truth Tables

(exhaustive listing of all input/output combinations)

Logic Equation

(one equation for each output)

Circuit Netlist

(“connected logic gates”)

Hardware Description Language

(“writing code that becomes physical hardware”)

www.iaik.tugraz.at

Page 122: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Describing Combinational Circuits

122

inputs outputscircuit

Truth Tables

Truth tables are only practical for small input sizes.

Logic Equation

Ideal format to apply transformations and optimizations (Boolean algebra).

Circuit Netlist

This is what is needed to physically build a chip.

Hardware Description Language

This is the standard way of describing the behavior of complex circuits.

www.iaik.tugraz.at

Page 123: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 1

123

module combinational_logic

(

input logic in_a,

input logic in_b,

input logic in_c,

output logic out_q

);

// actions that happen if in_a, in_b or in_c changes

always @(*)

begin

out_q = (~in_a & in_b) | in_c;

end

endmodule

out_q = (~in_a & in_b) | in_c

www.iaik.tugraz.at

Page 124: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 1

124

out_q = (~in_a & in_b) | in_c

Circuit Netlist

(“connected logic gates”)

Truth Table

Logic equation

module combinational_logic

(

input logic in_a,

input logic in_b,

input logic in_c,

output logic out_q

);

// actions that happen if in_a, in_b or in_c changes

always @(*)

begin

out_q = (~in_a & in_b) | in_c;

end

endmodule

Hardware Description Language

www.iaik.tugraz.at

Page 125: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

SystemVerilog – A Hardware Description Language

125

module combinational_logic

(

input logic in_a,

input logic in_b,

input logic in_c,

output logic out_q

);

// actions that happen if in_a, in_b or in_c changes

always @(*)

begin

out_q = (~in_a & in_b) | in_c;

end

endmodule

www.iaik.tugraz.at

Page 126: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 2

126

module combinational_logic

(

input logic in_a,

input logic in_b,

input logic in_c,

input logic in_x,

input logic in_y,

input logic in_z,

input logic mux_sel,

output logic out_q

);

// actions that happen if in_a, in_b or in_c or in_x, in_y or in_z or mux_sel changes

always @(*)

begin

if (mux_sel == 0)

out_q = (~in_a & in_b) | in_c;

else

out_q = (in_x ^ in_y) | ~in_z;

end

endmodule

www.iaik.tugraz.at

Page 127: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

I have designed a circuit - how do I built a physical device that

implements this circuit?

127

www.iaik.tugraz.at

Page 128: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

www.iaik.tugraz.at

128

My Circuit Description

Field Programmable Gate Array

(FPGA)

Application-Specific Integrated Circuit

(ASIC)

Page 129: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

ASIC – Application-Specific Integrated Circuit

www.iaik.tugraz.at

129

A chip that physically realizes your circuit

• Basic steps to building your ASIC (very high level view):• Select your favorite semiconductor manufacturing plant (see

https://en.wikipedia.org/wiki/List_of_semiconductor_fabrication_plants)

• Receive the standard cell library from the plant (“the list of logic gates that the plant can build”)

• Map our circuit to the available cells

• Place and route the cells

• Let the plant physically build your circuit

Page 130: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

FPGAs – Field Programmable Gate Arrays

www.iaik.tugraz.at

130

Existing hardware that can be configured to correspond to your circuit (“programmable hardware”)

• Basic concept (very high level view):• FPGA vendors build huge arrays of LUTs (Look-Up-Tables) and switches (highly

regular repeated physical structure)

• You can map your design to this hardware (the gates are mapped to LUTs and the wiring is mapped to the switches connecting the LUTs)

• An FPGA bitfile stores how a given FPGA needs to be configured to realize your circuit (format is vendor-specific)

• Load the bitfile into the FPGA and the FPGA realizes your circuit

Page 131: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

FPGA boards

• FPGAs are trade-off between hardware and software• Less efficient than hardware, but more efficient than software• Less expensive than hardware, but more expensive than software

• You can get small FPGA boards already for less than EUR 50.

• Interested in putting your practical of this semester on physical hardware?

• Basically any FPGA works for this purpose; ICE40 FGPAs offer an open source toolflow based on the tools we also use in this class (e.g. https://www.mouser.at/ProductDetail/Lattice/ICE40HX1K-STICK-EVN?qs=hJ2CX3hEdVEyBLaHAEXelA%3D%3D)

www.iaik.tugraz.at

131

Page 132: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Mapping a Circuit to the Cells of an FPGA or ASIC

• Logic Synthesis is the process of mapping an abstract description (typically done in a hardware description language) of a circuit to a list of available logic gates

• Synthesis can be parametrized to optimize different properties, like speed or area

www.iaik.tugraz.at

132

Page 133: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Logic Synthesis

133

Circuit Netlist

(“connected logic gates”)

Synthesis

Hardware Description Language

Logic EquationsTruth Table or or

Cell Library

(“a description of available logic gates”)

Constraints

(“definition of optimization goals”)

This is what is provided by the manufacturing

plant or what is available in the FPGA

Bitstream (configuration) for an FPGA or

Physical layout of transistors and wiring for fabrication as ASIC

www.iaik.tugraz.at

Page 134: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

The Toolchain

• iVerilog: • Simulator for Verilog code

• Yosys: • Synthesis Tool

134

Page 135: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

The Commands for Our Examples

• Make • build: Compile code

• run: Run simulation

• view: View simulation result in wave viewer (not relevant yet)

• syn: Synthesize code

• build-syn: compile synthesized code

• run-syn: Run Simulation based on netlist (synthesis result)

• show: Show netlist after synthesis

135

Page 136: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Let’s Try This Out

• See examples con01 available at

https://extgit.iaik.tugraz.at/con/examples-2020.git

www.iaik.tugraz.at

136

Page 137: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Final remarks

• Every logic function can be uniquely specified by its truth table.

• Every truth table can be implemented by an unlimited number of logic circuits.

• Never talk about optimization without specifying what aspect should be optimized: area, speed, energy consumption, number of gates, security,…?

137

www.iaik.tugraz.at

Page 138: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Appendix

138

www.iaik.tugraz.at

Page 139: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 1

Develop the truth table of a multiplier for unsigned binary numbers with 2 digits each. Develop a technical realization of this multiplier by showing its logical equations.

139

www.iaik.tugraz.at

Page 140: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 1Step 1: Unsigned two-bit numbers can have the values 0, 1, 2, and 3. We first derive the multiplication table

0 * 0 = 00 * 1 = 00 * 2 = 00 * 3 = 0

1 * 0 = 01 * 1 = 11 * 2 = 21 * 3 = 3

2 * 0 = 02 * 1 = 22 * 2 = 42 * 3 = 6

3 * 0 = 03 * 1 = 33 * 2 = 63 * 3 = 9

140

www.iaik.tugraz.at

Page 141: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 1Step 2: We re-write the multiplication table in binary notation.

Note that we have ordered the sequenceof mulitplications in such a way that theBinary input pattern is sorted from 0000 to1111.

0 * 0 = 00 * 1 = 00 * 2 = 00 * 3 = 0

1 * 0 = 01 * 1 = 11 * 2 = 21 * 3 = 3

2 * 0 = 02 * 1 = 22 * 2 = 42 * 3 = 6

3 * 0 = 03 * 1 = 33 * 2 = 63 * 3 = 9

00 * 00 = 000000 * 01 = 000000 * 10 = 000000 * 11 = 0000

01 * 00 = 000001 * 01 = 000101 * 10 = 001001 * 11 = 0011

10 * 00 = 000010 * 01 = 001010 * 10 = 010010 * 11 = 0110

11 * 00 = 000011 * 01 = 001111 * 10 = 011011 * 11 = 1001

141

www.iaik.tugraz.at

Page 142: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 1Step 3: The multiplication table becomesthe truth table.

0 * 0 = 00 * 1 = 00 * 2 = 00 * 3 = 0

1 * 0 = 01 * 1 = 11 * 2 = 21 * 3 = 3

2 * 0 = 02 * 1 = 22 * 2 = 42 * 3 = 6

3 * 0 = 03 * 1 = 33 * 2 = 63 * 3 = 9

00 * 00 = 000000 * 01 = 000000 * 10 = 000000 * 11 = 0000

01 * 00 = 000001 * 01 = 000101 * 10 = 001001 * 11 = 0011

10 * 00 = 000010 * 01 = 001010 * 10 = 010010 * 11 = 0110

11 * 00 = 000011 * 01 = 001111 * 10 = 011011 * 11 = 1001

0 0 0 0 0 0 0 00 0 0 1 0 0 0 00 0 1 0 0 0 0 00 0 1 1 0 0 0 0

0 1 0 0 0 0 0 00 1 0 1 0 0 0 10 1 1 0 0 0 1 00 1 1 1 0 0 1 1

1 0 0 0 0 0 0 01 0 0 1 0 0 1 01 0 1 0 0 1 0 01 0 1 1 0 1 1 0

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

a1 a0 b1 b0 p3 p2 p1 p0

142

www.iaik.tugraz.at

Page 143: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 1Step 4: Derive the logic equation for p3. 0 0 0 0 0 0 0 0

0 0 0 1 0 0 0 00 0 1 0 0 0 0 00 0 1 1 0 0 0 0

0 1 0 0 0 0 0 00 1 0 1 0 0 0 10 1 1 0 0 0 1 00 1 1 1 0 0 1 1

1 0 0 0 0 0 0 01 0 0 1 0 0 1 01 0 1 0 0 1 0 01 0 1 1 0 1 1 0

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

a1 a0 b1 b0 p3 p2 p1 p0

p3 = a1 & a0 & b1 & b0

143

www.iaik.tugraz.at

Page 144: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 1Step 4: Derive the logic equation for p3. 0 0 0 0 0 0 0 0

0 0 0 1 0 0 0 00 0 1 0 0 0 0 00 0 1 1 0 0 0 0

0 1 0 0 0 0 0 00 1 0 1 0 0 0 10 1 1 0 0 0 1 00 1 1 1 0 0 1 1

1 0 0 0 0 0 0 01 0 0 1 0 0 1 01 0 1 0 0 1 0 01 0 1 1 0 1 1 0

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

a1 a0 b1 b0 p3 p2 p1 p0

p3 = a1 & a0 & b1 & b0

Step 5: Derive the logic equation for p2.

p2 = (a1 & ~a0 & b1 & ~b0) | (a1 & a0 & b1 & ~b0)

144

www.iaik.tugraz.at

Page 145: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 1Step 6: Derive the logic equation for p1.

p1 = (~a1 & a0 & b1 & ~b0) |(~a1 & a0 & b1 & b0) |( a1 & ~a0 & ~b1 & b0) |( a1 & ~a0 & b1 & b0) |( a1 & a0 & ~b1 & b0) |( a1 & a0 & b1 & ~b0)

= (~a1 & a0 & b1) |( a1 & ~a0 & b0) |( a1 & a0 & ~b1 & b0) |( a1 & a0 & b1 & ~b0)

0 0 0 0 0 0 0 00 0 0 1 0 0 0 00 0 1 0 0 0 0 00 0 1 1 0 0 0 0

0 1 0 0 0 0 0 00 1 0 1 0 0 0 10 1 1 0 0 0 1 00 1 1 1 0 0 1 1

1 0 0 0 0 0 0 01 0 0 1 0 0 1 01 0 1 0 0 1 0 01 0 1 1 0 1 1 0

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

a1 a0 b1 b0 p3 p2 p1 p0

145

www.iaik.tugraz.at

Page 146: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 1Step 6: Derive the logic equation for p1.

p1 = (~a1 & a0 & b1 & ~b0) |(~a1 & a0 & b1 & b0) |( a1 & ~a0 & ~b1 & b0) |( a1 & ~a0 & b1 & b0) |( a1 & a0 & ~b1 & b0) |( a1 & a0 & b1 & ~b0)

= (~a1 & a0 & b1) |( a1 & ~a0 & b0) |( a1 & a0 & ~b1 & b0) |( a1 & a0 & b1 & ~b0)

Step 7: Derive the logic equation for p0.

p0 = ( ~a1 & a0 & ~b1 & b0) |( ~a1 & a0 & b1 & b0) |( a1 & a0 & ~b1 & b0) |( a1 & a0 & b1 & b0)

0 0 0 0 0 0 0 00 0 0 1 0 0 0 00 0 1 0 0 0 0 00 0 1 1 0 0 0 0

0 1 0 0 0 0 0 00 1 0 1 0 0 0 10 1 1 0 0 0 1 00 1 1 1 0 0 1 1

1 0 0 0 0 0 0 01 0 0 1 0 0 1 01 0 1 0 0 1 0 01 0 1 1 0 1 1 0

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

a1 a0 b1 b0 p3 p2 p1 p0

146

www.iaik.tugraz.at

Page 147: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 2

• Develop the logic equations for a 2-to-1 multiplexor.

147

www.iaik.tugraz.at

Page 148: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 2

Step 1: Specify the behavior of a 2-to-1 multiplexer.

if (sel == 0)q = d0;

else if (sel == 1)q = d1;

148

www.iaik.tugraz.at

Page 149: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 2

Step 2: Set up a truth table for the 2-to-1 multiplexer

if (sel == 0)q = d0;

else if (sel == 1)q = d1;

sel d1 d0 q

0 0 0 00 0 1 10 1 0 00 1 1 1

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

Note that the input combinations are ordered from 000 to 111.

149

www.iaik.tugraz.at

Page 150: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 2

Step 3: Derive the logic equation from the truth table

q = (~sel & ~d1 & d0) |(~sel & d1 & d0) | ( sel & d1 & ~d0) | ( sel & d1 & d0)

…and optionally simplify to …

= (~sel & d0) |( sel & d1)

sel d1 d0 q

0 0 0 0 0 0 1 10 1 0 00 1 1 1

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

150

www.iaik.tugraz.at

Page 151: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

Example 2

Optional step 4: Draw logic equations as circuit diagram

q = (~sel & ~d1 & d0) |(~sel & d1 & d0) | ( sel & d1 & ~d0) | ( sel & d1 & d0)

= (~sel & d0) |( sel & d1)

sel d1 d0 q

0 0 0 0 0 0 1 10 1 0 00 1 1 1

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

151

www.iaik.tugraz.at

Page 152: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

www.iaik.tugraz.at

152

Page 153: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

www.iaik.tugraz.at

153

Page 154: Computer Organization and Networks · 2020. 10. 14. · Transistors Logic Gates Combinational Circuits State Machines Processors Assembly Functions/Programs C Programs Applications

www.iaik.tugraz.at

154