276
1

Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

1

Page 2: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Year3014

1

Page 3: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

2

Page 4: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

After aseries ofdemotions

2

Page 5: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

3

Page 6: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Sous-Chef3

Page 7: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Sous-Chef3

Assistant

Page 8: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

4

Page 9: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

ISSIcarus

4

Page 10: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

5

Page 11: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

UnfortunateAccident

5

Page 12: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

6

Page 13: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

PhaseMatter Array

6

Page 14: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

7

Page 15: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

7

Dark MatterCephalopod

Page 16: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

8

Page 17: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Killing8

Page 18: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

9

Page 19: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

TheCaptain

9

Page 20: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

10

Page 21: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

ScienceOfficer

10

Page 22: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

11

Page 23: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Engineer11

Page 24: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

12

Page 25: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

and, ofcourse

12

Page 26: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

13

Page 27: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

TheComputer

13

Page 28: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

14

Page 29: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

I’mstranded!

14

Page 30: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

15

Page 31: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

All IHave

15

Page 32: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

16

Page 33: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

PowerSupply

16

Page 34: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

17

Page 35: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

A Bucket ofNAND gates

17

Page 36: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

18

Page 37: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

andthisbook

18

Page 38: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

19

Page 39: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

I am...19

Page 40: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

20

Page 41: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Lost In Space

20

Page 42: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Let’s Build a Computer!

21

Page 43: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Setting ExpectationsHighly Technical Talk

(I hope) Highly Approachable Talk

200 Slides ≅ 6 ⅔ spm

I have to go incredibly fast.

Not my field of expertise at all. I’m terrified.22

Page 44: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Nand to Tetris

23

Page 45: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

I !

this book24

Page 46: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 25

High Level Language & OS

Virtual Machine

Assembly Language

Machine Language

Hardware Platform

Chips & Logic Gates

Physics

Page 47: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 25

High Level Language & OS

Virtual Machine

Assembly Language

Machine Language

Hardware Platform

Chips & Logic Gates

Physics

High Level Language & OS

Virtual Machine

Assembly Language

Machine Language

Hardware Platform

Chips & Logic Gates

Physics

Page 48: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 26statement of the system’s abstraction—namely, the various services that it isexpected to deliver. Having presented the what, each chapter proceeds to discuss howthe abstraction can be implemented, leading to a (proposed) Implementation section.The next section is always Perspective, in which we highlight noteworthy issues leftout from the chapter. Each chapter ends with a Project section that provides step-by-step building instructions, testing materials, and software tools for actually buildingand unit-testing the system described in the chapter.

Projects

The computer system described in the book is for real—it can actually be built, andit works! A reader who takes the time and effort to gradually build this computer willgain a level of intimate understanding unmatched by mere reading. Hence, the bookis geared toward active readers who are willing to roll up their sleeves and build acomputer from the ground up.

Each chapter includes a complete description of a stand-alone hardware or soft-ware development project. The four projects that construct the computer platformare built using a simple Hardware Description Language (HDL) and simulated on ahardware simulator supplied with the book. Five of the subsequent software projects

c3

c10

c7

c9

c6

c5

c11

c1

c2

c12

c8

c4

Typicalsoftwarehierarchy

Typicalhardwareplatform

High-Level Language / Applications (∞)

Operating System

Compiler

Virtual Machine

Assembler

Computer Architecture

Machine Language

ALU Memory Elements

Boolean Arithmetic

Boolean Logic

Sequential Logic

Figure P.1 Book and proposed course map, with chapter numbers in circles.

xii Preface

From “Elements of Computing Systems”

Page 49: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 26statement of the system’s abstraction—namely, the various services that it isexpected to deliver. Having presented the what, each chapter proceeds to discuss howthe abstraction can be implemented, leading to a (proposed) Implementation section.The next section is always Perspective, in which we highlight noteworthy issues leftout from the chapter. Each chapter ends with a Project section that provides step-by-step building instructions, testing materials, and software tools for actually buildingand unit-testing the system described in the chapter.

Projects

The computer system described in the book is for real—it can actually be built, andit works! A reader who takes the time and effort to gradually build this computer willgain a level of intimate understanding unmatched by mere reading. Hence, the bookis geared toward active readers who are willing to roll up their sleeves and build acomputer from the ground up.

Each chapter includes a complete description of a stand-alone hardware or soft-ware development project. The four projects that construct the computer platformare built using a simple Hardware Description Language (HDL) and simulated on ahardware simulator supplied with the book. Five of the subsequent software projects

c3

c10

c7

c9

c6

c5

c11

c1

c2

c12

c8

c4

Typicalsoftwarehierarchy

Typicalhardwareplatform

High-Level Language / Applications (∞)

Operating System

Compiler

Virtual Machine

Assembler

Computer Architecture

Machine Language

ALU Memory Elements

Boolean Arithmetic

Boolean Logic

Sequential Logic

Figure P.1 Book and proposed course map, with chapter numbers in circles.

xii Preface

From “Elements of Computing Systems”

Page 50: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 26statement of the system’s abstraction—namely, the various services that it isexpected to deliver. Having presented the what, each chapter proceeds to discuss howthe abstraction can be implemented, leading to a (proposed) Implementation section.The next section is always Perspective, in which we highlight noteworthy issues leftout from the chapter. Each chapter ends with a Project section that provides step-by-step building instructions, testing materials, and software tools for actually buildingand unit-testing the system described in the chapter.

Projects

The computer system described in the book is for real—it can actually be built, andit works! A reader who takes the time and effort to gradually build this computer willgain a level of intimate understanding unmatched by mere reading. Hence, the bookis geared toward active readers who are willing to roll up their sleeves and build acomputer from the ground up.

Each chapter includes a complete description of a stand-alone hardware or soft-ware development project. The four projects that construct the computer platformare built using a simple Hardware Description Language (HDL) and simulated on ahardware simulator supplied with the book. Five of the subsequent software projects

c3

c10

c7

c9

c6

c5

c11

c1

c2

c12

c8

c4

Typicalsoftwarehierarchy

Typicalhardwareplatform

High-Level Language / Applications (∞)

Operating System

Compiler

Virtual Machine

Assembler

Computer Architecture

Machine Language

ALU Memory Elements

Boolean Arithmetic

Boolean Logic

Sequential Logic

Figure P.1 Book and proposed course map, with chapter numbers in circles.

xii Preface

From “Elements of Computing Systems”

Page 51: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Complexity builds from Simplicity

27

Boolean Logic

Boolean Arithmetic

Sequential Logic

Computer Logic

Page 52: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Very Important:

28

Page 53: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

This is NOT comic sans!

29

Page 54: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

This is NOT comic sans!

29

ttttt

Page 55: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

This is NOT comic sans!

29

ttttt Hand-drawn font called Sketchnote!

Page 56: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Boolean Logic

30

Page 57: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 31

NAND

Page 58: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

WTF is a

Nand?!?32

Page 59: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Not-And

33

NAND

Page 60: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Not-And

33

NAND

Not

Page 61: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Not-And

33

NAND

And

Not

Page 62: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Nand34

NAND

a b nand

T T F

T F T

F T T

F F T

Page 63: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Rubydef nand a, b ! (a && b) end

35

Page 64: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Rubyclass Object def ⅋⅋ other ! (self && other) end end

36

Page 65: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Rubyclass Object def ⅋⅋ other ! (self && other) end end

36

So Cool!

Page 66: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Universal Gates

37

NAND

NOR

Page 67: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Complexity builds from Simplicity

38

Nand

Not

And

Or

Xor / Mux / Dmux

Page 68: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 39

NOT

Page 69: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Only using ?

40

NAND

Page 70: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

not41

a not

T F

F T

NOT

Page 71: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Nand →

Not?42

NAND

a b nand

T T F

T F T

F T T

F F T

Page 72: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Nand →

Not43

a b nand

T T F

T F T

F T T

F F T

NAND

Page 73: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Not44

NAND

a b nand

T T F

F F T

Page 74: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 45

AND

Page 75: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Only using & ?

46

NOT NAND

Page 76: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

and47

a b and

T T T

T F F

F T F

F F F

AND

Page 77: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

nand →

and?48

NAND

a b nand

T T F

T F T

F T T

F F T

Page 78: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

and =

not nand

49

NAND

a b nand

T T F

T F T

F T T

F F T

Page 79: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

and =

not not and

50

NAND

a b nand

T T F

T F T

F T T

F F T

Page 80: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

and =

not not and

51

NAND

a b nand

T T F

T F T

F T T

F F T

Page 81: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

NAND NOT nand-not

52

a b and

T T T

T F F

F T F

F F F

Page 82: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

NAND NAND

and53

a b and

T T T

T F F

F T F

F F F

Page 83: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 54

OR

Page 84: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Only using      ,      , &     ?

55

NOT

NAND

AND

Page 85: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

or56

OR

a b or

T T T

T F T

F T T

F F F

Page 86: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

De Morgan’s Law!

57

Page 87: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Venn Diagrams??!!

58

Page 88: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014http://en.wikipedia.org/wiki/Venn_diagram

Venn Diagrams??!!

58

Page 89: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Venn Diagrams!

59

Page 90: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Venn Diagrams!

59

http://thisisindexed.com/

Page 91: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Venn Diagrams!

60

A B

Page 92: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

A | B

61

A B

Page 93: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

A B

!(A | B)

62

Page 94: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

!(A | B)

63

A B

Page 95: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

(!A & !B)

64

A B

Page 96: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

!(!A & !B)

65

A B

Page 97: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

!(!A & !B) = A | B

66

A B

Page 98: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

a | b67

OR

a b or

T T T

T F T

F T T

F F F

Page 99: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

!(!a & !b)

68

a b or

T T T

T F T

F T T

F F F

NOT

NOT

AND NOT

Page 100: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

not(and( not(a), not(b)))

69

a b or

T T T

T F T

F T T

F F F

NOT

NOT

AND NOT

Page 101: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

not(and( not(a), not(b)))

70

a b or

T T T

T F T

F T T

F F F

NOT

NOT

AND NOT

Page 102: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

NAND

NOT

NOT nand( not(a), not(b))

71

a b or

T T T

T F T

F T T

F F F

Page 103: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

NAND

NOT

NOT nand( not(a), not(b))

72

a b or

T T T

T F T

F T T

F F F

Page 104: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

nand( nand(a,a), nand(b,b))

73

a b or

T T T

T F T

F T T

F F F

NANDNAND

NAND

Page 105: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 74

XOR

Page 106: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Only using      ,      ,

& ?75

NOT NAND

ANDOR

Page 107: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

a b xor

T T F

T F T

F T T

F F F

xor76

XOR

Page 108: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

a b xor

T T F

T F T

F T T

F F F

!

a & !b | !a & b

77

AND

ANDOR

Page 109: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

a b xor

T T F

T F T

F T T

F F F

!

a & !b | !a & b

77

AND

ANDOR

Page 110: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

AND

ANDOR

NAND

NAND

a b xor

T T F

T F T

F T T

F F F

!

a & !b | !a & b

78

Page 111: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

AND

ANDOR

NAND

NAND

a b xor

T T F

T F T

F T T

F F F

!

a & !b | !a & b

78

Page 112: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

a b xor

T T F

T F T

F T T

F F F

!

a & !b | !a & b

79

OR

NAND

NAND

NAND NAND

NAND NAND

Page 113: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

a b xor

T T F

T F T

F T T

F F F

!

a & !b | !a & b

79

OR

NAND

NAND

NAND NAND

NAND NAND

Page 114: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

a b xor

T T F

T F T

F T T

F F F

!

a & !b | !a & b

80

NAND

NAND

NAND NAND

NAND NAND

NAND

NAND

NAND

Page 115: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

NAND

NAND

NAND NAND

NAND NAND

NAND

NAND

NAND

a b xor

T T F

T F T

F T T

F F F

!

a & !b | !a & b

81

Page 116: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

NAND

NAND

NAND

NAND

NAND

a b xor

T T F

T F T

F T T

F F F

!

a & !b | !a & b

82

Page 117: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

NAND

NAND

NAND

NAND

NAND

a b xor

T T F

T F T

F T T

F F F

!

a & !b | !a & b

83

Page 118: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

xor84

a b xor

T T F

T F T

F T T

F F F

NAND

NAND

NAND

NAND

Page 119: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

mux

85

Page 120: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Muxes are Easy!mux = if sel then b else a end

86

Page 121: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Muxes are Easy!mux = if sel then b else a end

86

Just an if

stateme

nt!

Page 122: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

mux87

mux

sel a b xorT T T TT T F FT F T TT F F FF T T TF T F TF F T FF F F F

Page 123: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

mux88

sel a b xorT T T TT T F FT F T TT F F FF T T TF T F TF F T FF F F F

mux

Page 124: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

mux89

sel a b xorT T T TT T F FT F T TT F F FF T T TF T F TF F T FF F F F

mux

Page 125: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

mux90

AND

AND

OR

sel a b xorT T T TT T F FT F T TT F F FF T T TF T F TF F T FF F F F

Page 126: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

mux91

NAND

NAND

NAND

sel a b xorT T T TT T F FT F T TT F F FF T T TF T F TF F T FF F F F

Page 127: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 92

dmux

Page 128: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

DMuxes are easy, kindaif sel then a = in else b = in end

93

Page 129: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

dmux

dmux94

sel in a b

T T T F

T F F F

F T F T

F F F F

Page 130: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

AND

AND

dmux95

sel in a b

T T T F

T F F F

F T F T

F F F F

Page 131: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

dmux96

NAND NAND

NAND NAND

sel in a b

T T T F

T F F F

F T F T

F F F F

Page 132: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

N-way Gates

97

Page 133: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

or8way

98

Page 134: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

or8waydef or8way a,b,c,d,e,f,g,h a || b || c || d || e || f || g || h end

99

Page 135: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 100

OR

OR

OR

OR

OR

OR

OR

Page 136: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 100

OR

OR

OR

OR

OR

OR

OR

ab

c

d

e

f

g

h

inpu

ts

Page 137: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 100

OR

OR

OR

OR

OR

OR

OR

ab

c

d

e

f

g

h 1 output

inpu

ts

Page 138: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 100

OR

OR

OR

OR

OR

OR

OR

ab

c

d

e

f

g

h 1 output

1

2

3

4

5

6

inpu

tsdepth/tim

e

Page 139: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 101

OR

OR

OR

OR

OR

OR

OR

Page 140: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 101

OR

OR

OR

OR

OR

OR

OR

ab

cd

ef

gh

inpu

ts

Page 141: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 101

OR

OR

OR

OR

OR

OR

OR

ab

cd

ef

gh

1 output

inpu

ts

Page 142: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 101

OR

OR

OR

OR

OR

OR

OR

ab

cd

ef

gh

1 output

inpu

ts1

2

depth/time

Page 143: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Muxes

102

Page 144: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

mux4way

mux4way

103

2 bit selector

Page 145: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

mux8way

3 bit selector

mux8way

104

Page 146: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

dmux4way

dmux4way

105

2 bit selector

Page 147: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

dmux8way

dmux8way

3 bit selector

Page 148: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

“Trivial”107

Page 149: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Exercise for the

“Reader”108

Page 150: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Just Remember

109

Page 151: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Complexity builds from Simplicity

110

Page 152: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

16 Bit Logic & More

111

Page 153: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 112

NOT

NOT

NOT

NOT

NOT

NOT

NOT

NOT

NOT

NOT

NOT

NOT

NOT

NOT

NOT

NOT

Page 154: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 113

AND

AND

AND

AND

AND

AND

AND

AND

AND

AND

AND

AND

AND

AND

AND

AND

Page 155: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 114

OR

OR

OR

OR

OR

OR

OR

OR

OR

OR

OR

OR

OR

OR

OR

OR

Page 156: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 115

mux

mux

mux

mux

mux

mux

mux

mux

mux

mux

mux

mux

mux

mux

mux

mux

Page 157: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

“Trivial”116

Page 158: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Exercise for the Reader

117

Page 159: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Boolean Arithmetic

118

Page 160: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders!

119

Page 161: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Not these Adders

120

https://www.flickr.com/photos/79818573@N04/14226945188

Page 162: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Nor Black Adder

121

Page 163: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Just Good, Simple,

Arithmetic!122

Page 164: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders, Elementary-School Style

123

11 +012

Page 165: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders, Elementary-School Style

123

11 +01

A

2

Page 166: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders, Elementary-School Style

123

11 +01

A

B2

Page 167: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders, Elementary-School Style

123

11 +01

A

B

02

Page 168: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders, Elementary-School Style

123

11 +01

A

B

Sum0

2

Page 169: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders, Elementary-School Style

123

11 +01

1

A

B

Sum0

2

Page 170: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders, Elementary-School Style

123

11 +01

1

A

B

Sum

Carry

02

Page 171: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders, Elementary-School Style

123

11 +01

1

A

B

Sum

Carry

002

Page 172: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders, Elementary-School Style

123

11 +01

11

A

B

Sum

Carry

002

Page 173: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders, Elementary-School Style

123

11 +01

11

A

B

Sum

Carry

1 002

Page 174: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Adders

124

11 +01

11

A

B

Sum

Carry

1 00

half adder

2

Page 175: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

11 +01

Adders

125

11

A

B

Sum

Cin

1 00

Carry

full adder

2

Page 176: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Half Adder

126

AND

XOR Sum

Carry

A

B

Page 177: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Full Adder

127

XOR XOR

AND

AND

OR

Sum

Carry

A

B

Cin

Page 178: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

16-bit Adder

128

Page 179: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

add16

129

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

FullAdder

0

x0

y0

x1

y1

s13

s14

s15

x2

y2

...

Page 180: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

But Ryan!130

Page 181: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Doesn’t this have the same problem as or8way?

131

Page 182: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Why, Yes!132

Page 183: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Yes, it does!

133

Page 184: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

What they don’t teach you in grade school…

134

Page 185: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Full Adder

135

XOR XOR

AND

AND

OR

Sum

Carry

A

B

Cin

Page 186: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

XOR XOR

AND

AND

OR

Sum

Carry

A

B

Cin

Full Adder?

136

Page 187: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

XOR XOR

AND

Sum

A

B

Cin

Propagate

Generate

OR

Partial Full Adder

137

Page 188: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

S0S1S2S3P0P1P2P3

G0G1G2G3PFA

CLA

C0

A0 B0

PFA

A1 B1

PFA

A2 B2

PFA

A3 B3

C4

Add4

138

Page 189: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Add16

139

S0-3S4-7S8-11S12-15P0P1P2P3

G0G1G2G3add4

CLA

C0

A0-3 B0-3

add4

A4-7 B4-7

add4

A8-11 B8-11

add4

A12-15 B12-15

C4

Page 190: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Carry Lookahead Monster

140

cla2 (1

of 1)

c1x1

p3x1

p1x1g2x1

c3x1c2x1

p0x1g0x1

p2x1c0x1

c4x1

g3x1g1x1

Page 191: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Slightly Less Scary? (define (cla g0 g1 g2 g3 p0 p1 p2 p3 cin c1 c2 c3 pout gout) (let-values ([(w1c0 w1c1 w1c2) (wires w 3)] [(w2c1 w2c2) (wires w 2)] [(w3c2) (w)] [(w1g w2g w3g) (wires w 3)]) (append (list (comment (comment-cla))) (And p0 cin w1c0) (Or g0 w1c0 c1) ! (And p1 g0 w1c1) (and3 p1 p0 cin w2c1) (or3 g1 w1c1 w2c1 c2) ! (And p2 g1 w1c2) (and3 p2 p1 g0 w2c2) (and4 p2 p1 p0 cin w3c2) (or4 g2 w1c2 w2c2 w3c2 c3) ! (And p3 g2 w1g) (and3 p3 p2 g1 w2g) (and4 p3 p2 p1 g0 w3g) ! (or4 g3 w1g w2g w3g gout) (and4 p3 p2 p1 p0 pout))))

141

Page 192: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Slightly Less Scary? (define (cla g0 g1 g2 g3 p0 p1 p2 p3 cin c1 c2 c3 pout gout) (let-values ([(w1c0 w1c1 w1c2) (wires w 3)] [(w2c1 w2c2) (wires w 2)] [(w3c2) (w)] [(w1g w2g w3g) (wires w 3)]) (append (list (comment (comment-cla))) (And p0 cin w1c0) (Or g0 w1c0 c1) ! (And p1 g0 w1c1) (and3 p1 p0 cin w2c1) (or3 g1 w1c1 w2c1 c2) ! (And p2 g1 w1c2) (and3 p2 p1 g0 w2c2) (and4 p2 p1 p0 cin w3c2) (or4 g2 w1c2 w2c2 w3c2 c3) ! (And p3 g2 w1g) (and3 p3 p2 g1 w2g) (and4 p3 p2 p1 g0 w3g) ! (or4 g3 w1g w2g w3g gout) (and4 p3 p2 p1 p0 pout))))

141

No, not really.

Page 193: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Least Scary, Most Abstract

142

Ci = Gi + PiCi-1 Gi = AiBi Pi = Ai + Bi

Page 194: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Least Scary, Most Abstract

142

Ci = Gi + PiCi-1 Gi = AiBi Pi = Ai + Bi

Page 195: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Least Scary, Most Concrete

143

C1 = G0 + P0C0 C2 = G1 + P1G0 + P1P0C0 C3 = G2 + P2G1 + P2P1G0 + P2P1P0C0 C4 = G3 + P3P2G1 + P3P2P1G0 + P3P2P1P0C0

Page 196: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Least Scary, Most Concrete

143

C1 = G0 + P0C0 C2 = G1 + P1G0 + P1P0C0 C3 = G2 + P2G1 + P2P1G0 + P2P1P0C0 C4 = G3 + P3P2G1 + P3P2P1G0 + P3P2P1P0C0

I can handle that…

Page 197: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Just Details

144

Page 198: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Incrementers

145

Page 199: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Inc16

146

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

Half Adder

1

i1

i2

i3

i4

o15

o14

o13

o12…

Page 200: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Faster, but Scarier

147

����������

����������

����������

����������

����������

����������

����������� ���������

�����������������

����

��� ��������

������ ������ ����� ������ ������ ������ ����� ����� �����

����� ����� ����� ���� ����� ����� �����

������������ ��

�� ���������

������

http://www.righto.com/2013/11/the-z-80s-16-bit-incrementdecrement.html

Page 201: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

ALU

148

Page 202: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Arithmetic Logic Unit

149

f(x,y)ALU

zx zynx ny f no

zr ng

x

y

out

Page 203: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Arithmetic Logic Unit

149

f(x,y)ALU

zx zynx ny f no

zr ng

x

y

out

Page 204: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Arithmetic Logic Unit

149

f(x,y)ALU

zx zynx ny f no

zr ng

x

y

out

Page 205: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Arithmetic Logic Unit

149

f(x,y)ALU

zx zynx ny f no

zr ng

x

y

out

Page 206: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Arithmetic Logic Unit

149

f(x,y)ALU

zx zynx ny f no

zr ng

x

y

out

Page 207: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Arithmetic Logic UnitIN x[16], y[16], // 16-bit inputs zx, // zero the x input? nx, // negate the x input? zy, // zero the y input? ny, // negate the y input? f, // compute out = x+y (f=1) else x&y no; // negate the out output? !OUT out[16], // 16-bit output zr, // 1 if (out == 0), 0 otherwise ng; // 1 if (out < 0), 0 otherwise

150

Page 208: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Arithmetic Logic UnitIN x[16], y[16], // 16-bit inputs zx, // zero the x input? nx, // negate the x input? zy, // zero the y input? ny, // negate the y input? f, // compute out = x+y (f=1) else x&y no; // negate the out output? !OUT out[16], // 16-bit output zr, // 1 if (out == 0), 0 otherwise ng; // 1 if (out < 0), 0 otherwise

150

YUCK!

Page 209: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 151

Arithmetic Logic UnitMux16(a=x, b=false, sel=zx, out=x2); Mux16(a=y, b=false, sel=zy, out=y2); !Not16(in=x2, out=notx2); // if (zx==1) set x = 0 Not16(in=y2, out=noty2); // if (zy==1) set y = 0 !Mux16(a=x2, b=notx2, sel=nx, out=x3); // if (nx==1) set x = ~x Mux16(a=y2, b=noty2, sel=ny, out=y3); // if (ny==1) set y = ~y !Add16(a=x3, b=y3, out=add16); // if (f==1) set out = x + y And16(a=x3, b=y3, out=and16); // if (f==0) set out = x & y Mux16(a=and16, b=add16, sel=f, out=out1); !Not16(in=out1, out=notout); Mux16(a=out1, b=notout, sel=no, out=out, // if (no==1) set out = ~out out[0..7]=out2a, out[8..15]=out2b, out[15]=ng); // if (out<0) set ng = 1 !Or8Way(in=out2a, out=outa); Or8Way(in=out2b, out=outb); Or(a=outa, b=outb, out=nzr); !Not(in=nzr, out=zr); // if (out==0) set zr = 1

Page 210: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 151

Arithmetic Logic Unit

YUCK!Mux16(a=x, b=false, sel=zx, out=x2);

Mux16(a=y, b=false, sel=zy, out=y2); !Not16(in=x2, out=notx2); // if (zx==1) set x = 0 Not16(in=y2, out=noty2); // if (zy==1) set y = 0 !Mux16(a=x2, b=notx2, sel=nx, out=x3); // if (nx==1) set x = ~x Mux16(a=y2, b=noty2, sel=ny, out=y3); // if (ny==1) set y = ~y !Add16(a=x3, b=y3, out=add16); // if (f==1) set out = x + y And16(a=x3, b=y3, out=and16); // if (f==0) set out = x & y Mux16(a=and16, b=add16, sel=f, out=out1); !Not16(in=out1, out=notout); Mux16(a=out1, b=notout, sel=no, out=out, // if (no==1) set out = ~out out[0..7]=out2a, out[8..15]=out2b, out[15]=ng); // if (out<0) set ng = 1 !Or8Way(in=out2a, out=outa); Or8Way(in=out2b, out=outb); Or(a=outa, b=outb, out=nzr); !Not(in=nzr, out=zr); // if (out==0) set zr = 1

Page 211: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 151

Arithmetic Logic Unit

YUCK!Mux16(a=x, b=false, sel=zx, out=x2);

Mux16(a=y, b=false, sel=zy, out=y2); !Not16(in=x2, out=notx2); // if (zx==1) set x = 0 Not16(in=y2, out=noty2); // if (zy==1) set y = 0 !Mux16(a=x2, b=notx2, sel=nx, out=x3); // if (nx==1) set x = ~x Mux16(a=y2, b=noty2, sel=ny, out=y3); // if (ny==1) set y = ~y !Add16(a=x3, b=y3, out=add16); // if (f==1) set out = x + y And16(a=x3, b=y3, out=and16); // if (f==0) set out = x & y Mux16(a=and16, b=add16, sel=f, out=out1); !Not16(in=out1, out=notout); Mux16(a=out1, b=notout, sel=no, out=out, // if (no==1) set out = ~out out[0..7]=out2a, out[8..15]=out2b, out[15]=ng); // if (out<0) set ng = 1 !Or8Way(in=out2a, out=outa); Or8Way(in=out2b, out=outb); Or(a=outa, b=outb, out=nzr); !Not(in=nzr, out=zr); // if (out==0) set zr = 1

Page 212: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 151

Arithmetic Logic Unit

My Mind,

She Asplodes!

YUCK!Mux16(a=x, b=false, sel=zx, out=x2);

Mux16(a=y, b=false, sel=zy, out=y2); !Not16(in=x2, out=notx2); // if (zx==1) set x = 0 Not16(in=y2, out=noty2); // if (zy==1) set y = 0 !Mux16(a=x2, b=notx2, sel=nx, out=x3); // if (nx==1) set x = ~x Mux16(a=y2, b=noty2, sel=ny, out=y3); // if (ny==1) set y = ~y !Add16(a=x3, b=y3, out=add16); // if (f==1) set out = x + y And16(a=x3, b=y3, out=and16); // if (f==0) set out = x & y Mux16(a=and16, b=add16, sel=f, out=out1); !Not16(in=out1, out=notout); Mux16(a=out1, b=notout, sel=no, out=out, // if (no==1) set out = ~out out[0..7]=out2a, out[8..15]=out2b, out[15]=ng); // if (out<0) set ng = 1 !Or8Way(in=out2a, out=outa); Or8Way(in=out2b, out=outb); Or(a=outa, b=outb, out=nzr); !Not(in=nzr, out=zr); // if (out==0) set zr = 1

Page 213: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Mux16(a=y2, b=noty2, sel=ny, out=y3); // if (ny==1) set y = ~y !Add16(a=x3, b=y3, out=add16); // if (f==1) set out = x + y And16(a=x3, b=y3, out=and16); // if (f==0) set out = x & y Mux16(a=and16, b=add16, sel=f, out=out1); !Not16(in=out1, out=notout); Mux16(a=out1, b=notout, sel=no, out=out, // if (no==1) set out = ~out out[0..7]=out2a, out[8..15]=out2b, out[15]=ng); // if (out<0) set ng = 1 !Or8Way(in=out2a, out=outa); Or8Way(in=out2b, out=outb); Or(a=outa, b=outb, out=nzr); !Not(in=nzr, out=zr); // if (out==0) set zr = 1152

My Mind,

She Asplodes!

Page 214: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

b0-7

b8-15

mux

mux

mux mux

mux muxNOT

NOT

NOT AND

add16

OR8

OR8

OR

out

zr

0

zy

0

y

x

zx

nx

ny

fno

ng

b15

Arithmetic Logic Unit

153

Page 215: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

b0-7

b8-15

mux

mux

mux mux

mux muxNOT

NOT

NOT AND

add16

OR8

OR8

OR

out

zr

0

zy

0

y

x

zx

nx

ny

fno

ng

b15

Arithmetic Logic Unit

153

Page 216: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

b0-7

b8-15

mux

mux

mux mux

mux muxNOT

NOT

NOT AND

add16

OR8

OR8

OR

out

zr

0

zy

0

y

x

zx

nx

ny

fno

ng

b15

Arithmetic Logic Unit

153

Always

Both

Page 217: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

b0-7

b8-15

mux

mux

mux mux

mux muxNOT

NOT

NOT AND

add16

OR8

OR8

OR

out

zr

0

zy

0

y

x

zx

nx

ny

fno

ng

b15

Arithmetic Logic Unit

153

Always

Both

Page 218: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

b0-7

b8-15

mux

mux

mux mux

mux muxNOT

NOT

NOT AND

add16

OR8

OR8

OR

out

zr

0

zy

0

y

x

zx

nx

ny

fno

ng

b15

Arithmetic Logic Unit

153

Always

Both Multiple &

Partial!!

Page 219: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

f(x,y)

zx zynx ny f no

zr ng

x

y

out

Arithmetic Logic Unit

154

b0-7

b8-15

mux

mux

mux mux

mux muxNOT

NOT

NOT AND

add16

OR8

OR8

OR

out

zr

0

zy

0

y

x

zx

nx

ny

fno

ng

b15

Page 220: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

6 little flags = Instruction set

155

01 -1x y

!x !y-x -y

x+1 y+1x-1 y-1x+yx-y y-xx&y x|y

Page 221: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

ALU in 440 NAND Gates By Mark Armbrust w/ Koen Simmons’ optimizations.

via forums for nand2tetris

156

Page 222: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

ALU in 440 NAND Gates By Mark Armbrust w/ Koen Simmons’ optimizations.

via forums for nand2tetris

156

Page 223: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

ALU in 440 NAND Gates By Mark Armbrust w/ Koen Simmons’ optimizations.

via forums for nand2tetris

156

Page 224: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

ALU in 440 NAND Gates By Mark Armbrust w/ Koen Simmons’ optimizations.

via forums for nand2tetris

156

Page 225: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Sequential Logic

157

Page 226: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Combinational vs

Sequential158

Page 227: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

SomeLogicin out

Combinational Chips

159

Page 228: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

InputLogic

OutputLogicMemoryin out

Sequential Chips

160

Page 229: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

InputLogic

OutputLogicMemoryin out

Sequential Chips

160Clock Input

Page 230: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

DFF

161

Page 231: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

DFF “Magic” Logic:

out(t) = in(t-1)

162

Page 232: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Atomic in nand2tetris

163

Page 233: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Can be created with nands!

164

Page 234: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Building a DFF using the TECS Hardware Simulator, by Mark Armbrust.

http://www.marksmath.com/tecs/dff/

From NAND to DFF

165

Page 235: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Building a DFF using the TECS Hardware Simulator, by Mark Armbrust.

http://www.marksmath.com/tecs/dff/

From NAND to DFF

165

NAND

NAND

Page 236: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Building a DFF using the TECS Hardware Simulator, by Mark Armbrust.

http://www.marksmath.com/tecs/dff/

From NAND to DFF

165

NAND

NAND

NAND

NAND

NAND

NAND

Page 237: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Building a DFF using the TECS Hardware Simulator, by Mark Armbrust.

http://www.marksmath.com/tecs/dff/

From NAND to DFF

165

NAND

NAND

NAND

NAND

NAND

NAND

NAND

NAND

NAND

NAND

NAND

NAND

NAND

NAND

NOT

Page 238: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

!

Details166

Just

Page 239: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

!

Details166

Interesting

Page 240: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

bit

load

in out

167

Page 241: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

bitbit(t) = if load then in else bit(t-1) end !return bit(t)

168

bit

load

in out

Page 242: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

dff(t) = if load then in else dff(t-1) end !return dff(t)

bit

load

in outdff

bit

169

Page 243: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

dff(t) = if load then in else dff(t-1) end !return dff(t)

load

inout mux dff

bit

170

Page 244: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 171

register

load

in out

Page 245: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

load

in outbit0 bit1 bit15…

register

172

Page 246: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

bit0

load

in0 out0

bit1in1 out1

bit2in2 out2

…inN outN

bit15in15 out15

Simple Linear Layout

173

Page 247: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 174

RAMn

in

load

addr

out

Page 248: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

in

load

addr

out

register

load

in out

register

load

in out

register

load

in out

register

load

in out

175

Page 249: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

InputLogic

OutputLogicMemoryin out

Sequential Logic

176

register

load

in out

register

load

in out

register

load

in out

register

load

in out

…Addressing Addressing

Page 250: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

InputLogic

OutputLogicMemoryin out

RAM8

177

register

load

in out

register

load

in out

register

load

in out

register

load

in out

…dmux8way mux8way

Page 251: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

DFFBit

RegisterRam8Ram64Ram512Ram4KRam16K

Complexity builds from Simplicity

178

Page 252: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

DFFBit

RegisterRam8Ram64Ram512Ram4KRam16K

Complexity builds from Simplicity

178

×8

×8

×8

×8

×4

1bit×16

Page 253: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

RAM64+?179

Page 254: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Again180

Page 255: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Exercise for the

“Reader”181

Page 256: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

outcounter

load

in

resetincr

182

Page 257: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

AKA Program Counter

183

Page 258: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Addresses current instruction

in ROM184

Page 259: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

RegisterInc16

Mux16

reset load inc

0

in

outMux16AND

AND

OR

OR

Mux16

185

Page 260: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

RegisterInc16

Mux16

reset load inc

0

in

outMux16AND

AND

OR

OR

Mux16

185

Blah Blah Logic

Page 261: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

RegisterInc16

Mux16

reset load inc

0

in

outMux16AND

AND

OR

OR

Mux16

185

The Magic

Blah Blah Logic

Page 262: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Computer Architecture

186

Page 263: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 187

Memory

code&

data

CPUInput

Output

ALU

Registers

Control

Page 264: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

cpu

188

CPU

outM

writeM

addressM

pc

inM

instruction

reset

Page 265: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

CPU Guts

?189

Page 266: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

address outROM32K

rom32k

190

Page 267: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

outKeyboard

keyboard

191

Page 268: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

screen

192

load outScreen8K words

in

address

Page 269: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

keyboard

addr

in

RAM

Screen

Keyboard

out

screen

Memory

193

Page 270: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014 194

Memory

code&

data

CPUInput

Output

ALU

Registers

Control

Page 271: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

computer

195

address outROM32K

CPU

outM

writeM

addressM

pc

inM

instruction

reset

keyboard

addr

in

RAM

Screen

Keyboard

out

screen

Page 272: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Let’s Go Home!

196

Page 273: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

apollo guidance computer197

Page 274: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Julian Simioni, MWRC 2014Software Development Lessons from the

Apollo Program

16-bit words.

Most software in ROM

Never had an error in flight.

http://www.ibiblio.org/apollo/ to fly your own.

198

Page 275: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

2,800 dual 3-input

NOR ICs!!199

http://upload.wikimedia.org/wikipedia/commons/1/13/Agc_flatp.jpg

Page 276: Let's Build a Computer - zenspider.comryan/presentations/2014_gogaruco_lets_build… · Sous-Chef 3. Sous-Chef 3 Assistant. 4. ISS Icarus 4. 5. Unfortunate Accident 5. 6. Phase Matter

Ryan Davis, Seattle.rbLet’s Build a Computer!

@the_zenspiderGoGaRuCo 3014

Thank You200