- 89 Views
- Uploaded on

Download Presentation
## PowerPoint Slideshow about 'Toward a general purpose computer' - herman

**An Image/Link below is provided (as is) to download presentation**

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

### Toward a general purpose computer

Putting it all together: implementing what to do with ROM

Example: Game of Life

Modularity

- Generation Module
- Matrix Module
- Line Module
- Cell Module

Algorithm for the Generation Module

- CurrentGen = 0
- Solve for current Matrix
- CurrentGen++
- If CurrentGen < MAX_GEN

goto 2

Calculate Line j

0. i = 0, tmp = 0

1. Calculate Cell i.

2. If alive, set location i in tmp to alive

3. If i < MAX_CELL

3.1 i++

3.2 goto 1.

4. Store tmp in :

even generation: i+16 odd generation : i-16

CellAlive(cell index i, line index j)

0. N = Count_Neighbors(i,j-1,false)

1. N = N+Count_Neighbors(i,j,true)

2. N = N+Count_Neighbors(i,j+1,false)

3. If N > MIN && N < MAX

3.1 Return alive

4. Return dead

Count_Neighbors (index i,line j, center)

0. N = 0

1. If alive in location [i-1,j]: N=N+1

2. If not center:

2.1 If alive in location [i,j]: N=N+1

3. If alive in location [i+1,j]: N=N+1

4. Return N

The operation:Defining interfaces

(i-1) location

Return Number of Neighbor: N

CountNeighbors

Alive: 0..010..0

CellAlive

Return

Dead: 0000000

Calculate Line

Return the line

Solve Matrix

The matrix

Generation

Implementing instructionsModule Count_Neighbors, instruction 1, 2.1, 3

If alive in location [i-1,j]

decode(i-1) = 0001000

AND

Line (j) = 00010100

decode(i-1) = 0001000

AND

Line (j) = 00000100

Result = 00000000

Result = 00010000

Non Zero – cell in

location i is alive

Zero – cell in

location i is dead

Implementing instructionsModule Count_Neighbors, instruction 1, 2.1, 3

If alive in location [i-1,j]

Alive if AND(line,decode(i-1))

is not zero

Implementation of AND(line,decode(i+1))

Reg1

1

ReadA

ReadB

Reg2

2

Write Address

Reg3

Write Data

Regn

Decoder

Write

Enable

Implementation of AND(line,decode(i+1))

Registers

Data 1 Address

Data 1

Data 2 Address

Data 2

WriteAddress

Write Data

Write

Register/ALU circuit

Registers

Data 1 Address

Op

Data 2 Address

WriteAddress

ALU

Extend 1to 16

MUX

R0R1

Write

2

0

ExternalInput

1

Control Algorithm is zero[AND(line,decode(i+1))]

If alive in location [i+1,j]: N=N+1

Algorithm instruction

Instruction

- Tmp = is zero[AND(Currentline,
- decode(i+1))]
- If controlVariable=0000001: N=N+1

Control Algorithm is zero[AND(line,decode(i-1))]

Tmp = is zero[AND(line,decode(i-1))]

Instruction

t0. Tmp = i-1

t1. Tmp = decode(Tmp)

t2. controlVariable = is zero[AND(CurrentLine, Tmp)]

Micro-Instruction

Micro instruction implementation

- Tmp = i+1
- Tmp = decode(Tmp)
- controlVariable = is zero[AND(CurrentLine, Tmp)]

Micro-Instruction

i

t0. Data 1 Address = 1Data 2 Address = 5

WriteAddress = 3

Write = 1

Op = 01R0R1 = 01

1

tmp

Subtract

The result of the ALU

Micro instruction implementation

- Tmp = i+1
- Tmp = decode(Tmp)
- controlVariable = is zero[AND(CurrentLine, Tmp)]

Micro-Instruction

tmp

t1. Data 1 Address = 3Data 2 Address = 0

WriteAddress = 4

Write = 1

Op = 11R0R1 = 01

Irrelevant

tmp

Decode

The result of the ALU

Micro instruction implementation

- Tmp = i+1
- Tmp = decode(Tmp)
- controlVariable = is zero[AND(CurrentLine, Tmp)]

Micro-Instruction

Line in register i

t2. Data 1 Address = 0Data 2 Address = 3

WriteAddress = 6

Write = 1

Op = 10R0R1 = 00

tmp

controlVariable

And

The zero status bit

Instruction Hierarchy

Algorithmic Instruction

Instruction

Micro-Instruction

Micro-Instruction

Instruction

Micro-Instruction

Micro-Instruction

Instruction Hierarchy

Timing Variables

Instruction

t0: Micro-Instruction

tn: Micro-Instruction

Each micro

instruction = 1 cycle

Instruction

t0:Micro-Instruction

tn: Micro-Instruction

Putting it all together:implementing what to do with ROM

ROM Output

ROM Input

Center

Register 7 (16bits)

Control variable (16bits)

The current state

(4 bits)

The current timing variable(1 bits)

Putting it all together: implementing what to do with ROM

ROM Output

ROM Input

Data 1 Address

Data 2 Address

Write-Data MUX control

WriteAddress

Write

ALU Operation

Putting it all together: implementing what to do with ROM

ROM Output

ROM Input

t0. Tmp = i+1

t1. Tmp = decode(Tmp)

t2. controlVariable = is zero[AND(CurrentLine, Tmp)]

t3. do nothing

Putting it all together: implementing what to do with ROM

ROM Output

ROM Input

t0. Tmp = i+1

t1. Tmp = decode(Tmp)

t2. controlVariable = is zero[AND(CurrentLine, Tmp)]

t3. do nothing

Putting it all together: implementing what to do with ROM

ROM Output

ROM Input

t0. Tmp = i+1

t1. Tmp = decode(Tmp)

t2. controlVariable = is zero[AND(CurrentLine, Tmp)]

t3. do nothing

ROM Output

ROM Input

t0. Tmp = i+1

t1. Tmp = decode(Tmp)

t2. controlVariable = is zero[AND(CurrentLine, Tmp)]

t3. do nothing

Control of Count_Neighbor

0000

0001

0010

Current State = 0001

t0. Set Current State 0001

t1. Set Current State 0001

t2. Set Current State 0001

t3. If ControlVariable=1

Set Current State 0010

t3. If ControlVariable=0

Set Current State 0011

0011

0100

0101

0110

0111

1000

CurrentState

Current State

Next State

ROM

Op

Write

Registers

D1

D2

WA

WriteData

ALU

MUX

R0R1

Extend 1to 16

Result

zerobit

1

Download Presentation

Connecting to Server..