Slide 1

Slide 1 text

I wanted a computer, but all I got was a transistor. Denis Defreyne 1

Slide 2

Slide 2 text

2 I will explain how to build a computer from scratch. I cannot do this without taking some shortcuts. I will tell lies. CAUTION

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

In the beginning, the transistor was created. 4

Slide 5

Slide 5 text

5 GATE SOURCE DRAIN

Slide 6

Slide 6 text

6 GATE SOURCE DRAIN

Slide 7

Slide 7 text

7 GATE SOURCE DRAIN

Slide 8

Slide 8 text

8

Slide 9

Slide 9 text

9

Slide 10

Slide 10 text

10

Slide 11

Slide 11 text

11

Slide 12

Slide 12 text

12 AND

Slide 13

Slide 13 text

13

Slide 14

Slide 14 text

14

Slide 15

Slide 15 text

15

Slide 16

Slide 16 text

16

Slide 17

Slide 17 text

OR 17

Slide 18

Slide 18 text

Now we have gates, and we can forget about transistors. 18

Slide 19

Slide 19 text

19 OR AND XOR NAND NOT …

Slide 20

Slide 20 text

A B Sum 0 0 0 0 1 1 1 0 1 1 1 0 20

Slide 21

Slide 21 text

A B Carry 0 0 0 1 A B Sum Carry 0 0 0 0 1 1 1 0 1 1 1 0 21 AND XOR

Slide 22

Slide 22 text

22 AND A B CARRY XOR SUM

Slide 23

Slide 23 text

ADD CARRY SUM A B 23

Slide 24

Slide 24 text

24 ADD CARRY SUM A B CARRY

Slide 25

Slide 25 text

25 ADD SUM 0 A 0 B 0

Slide 26

Slide 26 text

26 ADD SUM 0 A 0 B 0 ADD SUM 1 A 1 B 1

Slide 27

Slide 27 text

27 ADD SUM 0 A 0 B 0 ADD SUM 1 A 1 B 1 ADD SUM 0 A 0 B 0 ADD SUM 1 A 1 B 1 ADD A 2 B 2 SUM 2

Slide 28

Slide 28 text

28 ADD A B SUM

Slide 29

Slide 29 text

ADD 00010001 00000101 00010110 29

Slide 30

Slide 30 text

ADD 17 5 22 30

Slide 31

Slide 31 text

31 ADD R A B MUL R A B DIV R A B MOD R A B

Slide 32

Slide 32 text

A B ADD MUL DIV MOD R R R R 32

Slide 33

Slide 33 text

A B ADD MUL DIV MOD MUX S R 33

Slide 34

Slide 34 text

34 MUX

Slide 35

Slide 35 text

35 0 MUX

Slide 36

Slide 36 text

36 1 MUX

Slide 37

Slide 37 text

37 2 MUX

Slide 38

Slide 38 text

38 3 MUX

Slide 39

Slide 39 text

39 A B ADD MUL DIV MOD MUX S R

Slide 40

Slide 40 text

40 ALU R A B S

Slide 41

Slide 41 text

A B S Result 15 7 0 (+) 22 15 7 1 (*) 105 15 7 2 (/) 2 15 7 3 (%) 1 41

Slide 42

Slide 42 text

Now we have an arithmetic logic unit. 42

Slide 43

Slide 43 text

43 OR NOT OR NOT Q S R

Slide 44

Slide 44 text

OR NOT OR NOT Q S R 44

Slide 45

Slide 45 text

OR NOT OR NOT Q S R 45

Slide 46

Slide 46 text

OR NOT OR NOT Q S R 46

Slide 47

Slide 47 text

OR NOT OR NOT Q S R 47

Slide 48

Slide 48 text

OR NOT OR NOT Q S R 48

Slide 49

Slide 49 text

49 SR-LATCH S R Q set reset

Slide 50

Slide 50 text

D-LATCH D E Q 50 data enable write

Slide 51

Slide 51 text

51 D-LATCH D 0 Q 0 D-LATCH D 1 Q 1 D-LATCH D 2 Q 2 D-LATCH D 3 Q 3 D-LATCH D 4 Q 4 D-LATCH D 5 Q 5 D-LATCH D 6 Q 6 D-LATCH D 7 Q 7 E

Slide 52

Slide 52 text

52 REGISTER (8 BIT) D E Q

Slide 53

Slide 53 text

Now we have registers. 53

Slide 54

Slide 54 text

Q: What distinguishes a computer from a simple calculator? 54

Slide 55

Slide 55 text

A: You can program a computer, but not a calculator. 55

Slide 56

Slide 56 text

56 OPCODE VALUE 1 VALUE 2 2 7 15

Slide 57

Slide 57 text

57 OPCODE VALUE 1 VALUE 2 ALU R

Slide 58

Slide 58 text

OPCODE VALUE 1 VALUE 2 ALU REGISTER (8 BIT) 1 58

Slide 59

Slide 59 text

OPCODE VALUE 1 VALUE 2 ALU REGISTER FILE OUTPUT REG 1 59

Slide 60

Slide 60 text

OPCODE INPUT REG 1 INPUT REG 2 REGISTER FILE OUTPUT REG ALU 0 0 1 60

Slide 61

Slide 61 text

61 OPCODE INPUT REG 1 INPUT REG 2 OUTPUT REG

Slide 62

Slide 62 text

62 INSTRUCTION REGISTER OPCODE INPUT REG 1 INPUT REG 2 OUTPUT REG

Slide 63

Slide 63 text

63 MEMORY INSTRUCTION REGISTER OPCODE INPUT REG 1 INPUT REG 2 OUTPUT REG

Slide 64

Slide 64 text

MEMORY INSTRUCTION REGISTER OPCODE INPUT REG 1 INPUT REG 2 OUTPUT REG 0 64

Slide 65

Slide 65 text

65 INSTRUCTION POINTER REGISTER MEMORY INSTRUCTION REGISTER OPCODE INPUT REG 1 INPUT REG 2 OUTPUT REG

Slide 66

Slide 66 text

66 INSTRUCTION POINTER REGISTER MEMORY INSTRUCTION REGISTER ADD 4 OPCODE INPUT REG 1 INPUT REG 2 OUTPUT REG

Slide 67

Slide 67 text

Now we have the hardware for a programmable computer, and we can forget the hardware. 67

Slide 68

Slide 68 text

68 0 3 0 2 Add register 0 and register 2, and store result in register 3: OPCODE INPUT REG 1 OUTPUT REG INPUT REG 2

Slide 69

Slide 69 text

69 “add r3 r0 r2” Add register 0 and register 2, and store result in register 3:

Slide 70

Slide 70 text

70 “add r3 r0 r2” 0 3 0 2 assembly language machine code assembler

Slide 71

Slide 71 text

16 0 0 12 127 56 16 1 0 3 224 211 18 1 0 0 0 0 7 32 15 2 1 19 1 0 1 15 0 2 6 12 14 0 255 0 71

Slide 72

Slide 72 text

li r0, 819000 li r1, 254163 cmpi r1, 0 jeq @end mov r2, r1 mod r1, r0, r1 mov r0, r2 jmp @start prn r0 halt 72

Slide 73

Slide 73 text

73 cmp mod add sub mul div xor or and shl shr not ARITHMETIC

Slide 74

Slide 74 text

74 j je jne jg jge jl jle cmp mod add sub mul div xor or and shl shr not lw lh lb sw sh sb STACK FUNC SPECIAL call ret push pop prn halt BRANCHING ARITHMETIC mov li MEMORY REG

Slide 75

Slide 75 text

DEMO 75

Slide 76

Slide 76 text

github.com/ddfreyne/rcpu 76

Slide 77

Slide 77 text

77

Slide 78

Slide 78 text

78 slack @denis / mail [email protected] Denis Defreyne Ask me about Belgian beer.