Recap – Our First Computer WR System Bus 8 ALU Carry output A B S C OUT F 8 8 To registers’...

21
Recap – Our First Computer W R System Bus 8 ALU Carry output A B S C OUT F 8 8 To registers’ input/output and clock inputs Sequence of control signal combinations
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    216
  • download

    1

Transcript of Recap – Our First Computer WR System Bus 8 ALU Carry output A B S C OUT F 8 8 To registers’...

Recap – Our First Computer

W R

System Bus 8

ALU

Carry output

A B

S

COUT F

8

8

To registers’ input/output

and clock inputs

Sequence of control signal combinations

Updating the Paper Tape Approach

The paper tape programming method has a number of disadvantages

Not very quick or compact Can’t randomly access (i.e. no jumps, loops etc.) Requires a lot of bits of storage

Solid state program memory (a big bank of read-only registers) solves the first two problems

The last requires the introduction of operation codes (op-codes)

Solid-State Read-Only-Memory Read-Only-Memory (ROM) can be thought of as a

bank of registers None of them can be written to (contents are fixed) Only one can be read from at a time That register is selected by an index number, its address

R.O.M.

Address in

Data out

(No. of bits depends on how much

memory there is)

(No. of bits depends on how many control

lines there are)

Operation Codes Useful

operations A B B A A C C A B C C B

Only 6, could be coded into just 3 bits

8

SystemBus

Con

trol U

nit

Op

-C

od

e

A I/OCLK

I/O

B I/OCLK

I/O

C I/OCLK

I/O

Op-Codes The paper tape program can recreate absolutely

any permutation of control signals, ALU inputs etc.

Many permutations are either not permitted or are just not very useful, so only a restricted set of possible data transfers are allowed.

This means that instructions can be coded into much shorter words, or op-codes (12 bits for PICs)

It does, however, require an extra block of logic to decode the op-codes.

Machine Code & Assembly Language A sequence of op-codes forms a program It is just a list of ones and zeros though, ideal for

the processor – not so easy for humans A program in this form is written in machine code Each op-code has a mnemonic equivalent (e.g.

ADD, SUB, OR etc.) A program written in such mnemonics can be

converted to machine code using an assembler It is, therefore, known as assembly language

Examples

For the Z80 processor:

Assembly Languag

e

Machine Code

SUB B 10010000

OR C 10110001

LD D,E 01010011

Using Program Memory

W R

System Bus 8

ALU

Carry output

A B

S

COUT F

8

8

To registers’ read/write and

clock inputs

ControlUnit

ProgramMemory

ProgramCounter

Using Program Memory

W R

System Bus 8

ALU

Carry output

A B

S

COUT F

8

8

To registers’ read/write and

clock inputs

ControlUnit

ProgramMemory

ProgramCounter

Program Counter, PCStores the position (or address) in program memory of the next instruction. It is automatically incremented after each operation.

Using Program Memory

W R

System Bus 8

ALU

Carry output

A B

S

COUT F

8

8

To registers’ read/write and

clock inputs

ControlUnit

ProgramMemory

ProgramCounter

Program MemoryA block of programmable read-only memory (ROM) containing a list of op-codes, i.e. a program.

Using Program Memory

W R

System Bus 8

ALU

Carry output

A B

S

COUT F

8

8

To registers’ read/write and

clock inputs

ControlUnit

ProgramMemory

ProgramCounter

Control UnitA block of logic that translates the op-code into the corresponding ALU select inputs and the control signals to the registers.

More on the Program Counter

The Program Counter is a special purpose register used to address program memory.

After each instruction, its contents are incremented by one.

It can also be written to using the system bus, allowing the processor to ‘jump’ to any address in program memory.

Its contents can also be temporarily stored on a stack allowing easy implementation of sub-routines.

Pipelining With this architecture, a typical instruction cycle

consists of several stages: Increment program counter Wait for program memory propagation delay Wait for control unit propagation delay Set tri-state port on appropriate register to be read from Wait for ALU propagation delay Trigger working register to store result

This adds up to a significant delay To speed things up, some of the operations can

be started during the previous instruction cycle This is known as pipelining

Instruction Register

W R

System Bus 8

ALU

Carry output

A B

S

COUT F

8

8

To registers’ read/write and

clock inputs

ControlUnit

InstructionRegister

ProgramMemory

ProgramCounter

Instruction RegisterA special register whose only purpose is to temporarily store the op-code of the instruction currently being executed. The next instruction is fetched whilst the current one is executed.

Pipelining implications Whilst each instruction is being executed, the

program counter and program memory are fetching the next one

At the end of the instruction cycle, the next op-code is loaded into the instruction register

If the instruction was a jump: The contents of the instruction register will not be

valid and must be ignored It will take another instruction cycle to fetch the valid

code from the correct part of program memory Jump instructions, therefore, take an extra cycle to

complete

A (Nearly) Complete Micro-Controller

PC

Program Memory

Instruction Register

Control Unit

ALU

SR

System Bus

W I/O

Inputs / Outputs

General Purpose Registers

Control signals to registers, ALU, etc.

PC = Program Counter (register) W = Working Register SR = Status Register

8

The Status Register (SR) The ALU produces a variety of flags after most

operations, the most important are: Carry Flag Zero Flag

The states of these flags are stored in the status register, SR.

This register can be read like any other. More usefully, some operations (usually jumps)

can be conditional on the state of one or more flags.

Using these op-codes, ‘if-then’ operations, ‘for’ loops etc. are possible.

Input/Output Registers

Input/Output (I/O) registers behave just like general purpose ones…

… except that I/O registers can be written to or read from externally via the pins of the chip housing the micro-controller.

The pins are configured as tri-state ports, i.e. they can input or output.

These registers are vital, they’re the only way the device can communicate and do something useful.

Programming

Micro-controller op-codes represent very simple operations:

Data transfers Arithmetic or logical operations Flow of control (manipulating the program counter)

Even the most elaborate of tasks can be broken down into a sequence of these primitive operations.

Breaking down jobs in such an elemental way is what programming is all about.

Part One of EE1A2 Number Systems

You should be able to: Convert numbers between decimal, hex and binary forms Perform binary arithmetic operations

Binary Arithmetic Circuits Adder, carry look-ahead Addition/Subtraction Circuit

ALUs Design of basic logic devices capable of a several

binary arithmetic and/or logical operations.

Part One of EE1A2 (cont) Registers

Memory elements storing one byte of data. Interconnection using tri-state ports connected to a

common bus. Control signals necessary to transfer data.

Micro-controllers All the basic components required to make a

computer integrated onto a single chip. The ALU, registers, program memory and

input/output circuitry – what they all do. Programming using assembly language - welcome to

the rest of the course !