26
Digital System Microprocessor project: Digital watch Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou 2009-2010: Semester 1

Microprocessor project: Digital watch

Embed Size (px)

Citation preview

Page 1: Microprocessor project: Digital watch

Digital System

Microprocessor project: Digital watch

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou

2009-2010: Semester 1

Page 2: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Table of contents

1 Netlists and simulatorNetlistsSpecifications of the simulatorCircuit watch

2 Global functionning

3 MicroprocessorInstruction set - specificationsAssembly translatorNetlist realisationAssembly watch

4 ResultsCompilationResults overview

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 3: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

NetlistsSpecifications of the simulatorCircuit watch

Netlist language

Very simple

Inspired by the course and the instructions

Easily manipulable by the teachers

Examples

o = clk2(){o=Z(c)c=˜ Z(o)

}

s,r = FullAdd(a,b,c){s = aˆ bˆ cr = (a & b) | ((aˆ b) & c)inst o = clk2 () # useless

}

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 4: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

NetlistsSpecifications of the simulatorCircuit watch

PHP Netlist language

Drawback: no high-level functions (loops, recursion...)

⇒ Solution: PHP as a Netlist generator

Easy mix of PHP code and netlist language

Netlists are true overview of real circuits

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 5: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

NetlistsSpecifications of the simulatorCircuit watch

PHP Netlist language (example)

Example

m = main(<?=listV(”a”,0,$m)? >,<?=listV(”s”,0,$n)? >){inst m = mux3(<?=listV(”a”,0,$m)? >,<?=listV(”s”,0,$n)? >)}

Gives for $ m = 3 and $ n = 5

m = main(a[2],a[1],a[0] , s[4],s[3],s[2],s[1],s[0]){inst m = mux3(a[2],a[1],a[0] , s[4],s[3],s[2],s[1],s[0])}

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 6: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

NetlistsSpecifications of the simulatorCircuit watch

PHP Netlist language (example)

Example

m = main(<?=listV(”a”,0,$m)? >,<?=listV(”s”,0,$n)? >){inst m = mux3(<?=listV(”a”,0,$m)? >,<?=listV(”s”,0,$n)? >)}

Gives for $ m = 3 and $ n = 5

m = main(a[2],a[1],a[0] , s[4],s[3],s[2],s[1],s[0]){inst m = mux3(a[2],a[1],a[0] , s[4],s[3],s[2],s[1],s[0])}

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 7: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

NetlistsSpecifications of the simulatorCircuit watch

Specifications of the simulator

Ability to set cycle frequency.Two modes:

Simple interpretation

Compilation towards C++: circuits run like a program

Outputs:

Truthtable

Seven segments interface

Timing diagram

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 8: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

NetlistsSpecifications of the simulatorCircuit watch

Circuit watch

1st watch: circuit watch (huge circuit)⇒ Demonstration

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 9: Microprocessor project: Digital watch

Global functionning

Page 10: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

General presentation

Close to MIPS in order to use our OCAML Compiler.

Harvard architecture(instruction bus separated from data bus).

One instruction per clock cycle.

Bus length, register length/number, ...

All is 16 !

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 11: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

General presentation

Close to MIPS in order to use our OCAML Compiler.

Harvard architecture(instruction bus separated from data bus).

One instruction per clock cycle.

Bus length, register length/number, ...

All is 16 !

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 12: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

General presentation

16 registers of 16 bits

16 bits instructions

Up to 64 K instructions (ROM) (16 bits address length)

Up to 2×64 KB of data RAM (16 bits address/data length)

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 13: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

Special instructions/features

Up to 8 (+2 for the timer) output ports and 8 (+2 for thetimer) input ports of 16 bits−→ controlled by input/output instructions.

Sleep instruction

One 16 bits clock timer

Incremented each clock cycle.Timer period controlled by an output port.Wake up microprocessor each time it reaches its period.

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 14: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

Special instructions/features

Up to 8 (+2 for the timer) output ports and 8 (+2 for thetimer) input ports of 16 bits−→ controlled by input/output instructions.

Sleep instruction

One 16 bits clock timer

Incremented each clock cycle.Timer period controlled by an output port.Wake up microprocessor each time it reaches its period.

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 15: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

Special instructions/features

Up to 8 (+2 for the timer) output ports and 8 (+2 for thetimer) input ports of 16 bits−→ controlled by input/output instructions.

Sleep instruction

One 16 bits clock timer

Incremented each clock cycle.Timer period controlled by an output port.Wake up microprocessor each time it reaches its period.

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 16: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

External interfaces

Input Output

0-7 real 16 bits input port 0-7 real 16 bits output port 0-7

8 16 bits timer period

9 16 bits timer

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 17: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

MIPS comparison

MIPS Our microprocessor

Registers 32 × 32 bits 16 × 16 bits

ALU + − × ÷ mod + −

& | ⊕ � � not & | ⊕ �1 not

Conditional branch on a comparision last result (zero, carry)

Special instructions syscall input, output, sleep

Special features 16 bits timer

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 18: Microprocessor project: Digital watch

Specifications

Page 19: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

Assembly translator

Translates assembly code in machine language (integerinstructions)

Replace labels

Pseudoinstructions : (addui : add a register with a literal)

Simulation in C

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 20: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

Example

li W0 5 ; W0 <- 5

output 0 W0 ; output W0=5 on port 0

input W1 1 ; read port 1 in W1

addu W1 W1 W0 ; W1 <- W1 + W0

output 0 W1 ; output result on port 0

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 21: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

Netlist realisation

ROMInstructions

counteradd by one or

change by jump

Select4 bits

jump

Source14 bits

Source24 bits

Destination4 bits

addu

subu...

xor

16 bits

16 bits

Mux

16 bits

16 bits

16 bits

ALU carryzero

16 bits

1 bit registers

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 22: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

Instruction set - specificationsAssembly translatorNetlist realisationAssembly watch

Assembly watch

2nd watch: assembly watch (slower)⇒ Demonstration

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 23: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

CompilationResults overview

Compilation I

Compile OCAML on our microprocessor thanks to MIni MOdules(MIMO) project:

Add some OCAML functions (sleep, inputs, outputs)

Software multiplication, division, modulo

Software heap management

Conditional branch conversion

Terminal recursion management

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 24: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

CompilationResults overview

Compilation II

Drawbacks:

not very well optimized

longer code due to use of stack(manual watch: only registers !)

big assembly file (1299 line in generated assembly watchinstead of 129 in manual assembly watch)

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 25: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

CompilationResults overview

Compilation III

Advantages of OCAML (high level language):

easy function call

automatic heap/stack management (for big project)

transparent use of software operation (multiplication, division)

easy debugging (just use OCAML executable)

3rd watch: OCAML watch⇒ Demonstration

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch

Page 26: Microprocessor project: Digital watch

Netlists and simulatorGlobal functionning

MicroprocessorResults

CompilationResults overview

Results overview

Netlist

Asm

Ocaml

Compilation Mode Interpreting Mode

6.0× 106 1.5× 106

0.96× 106 0.09× 106

0.96× 106 0.10× 106

Speed Comparison between Different Modes and Different Watches

Number of cycles simulated per minute

Fabrice Ben Hamouda, Yoann Bourse, Hang Zhou Microprocessor project: Digital watch