Team 1337: - Ece

Team 1337:

From Ece

Jump to: navigation, search

Contents

Team 1337

  • Team member: Jonathan Chapman
  • Team member: Austin Lee
  • Team member: Josh Richardson

Design Overview

We are building a 16-bit processor. This means the instruction memory, data memory, and registers will all be 16-bits. Due to the fact that we are using 3-bits for rs, rt, and rd we can have no more than 8 registers. Of these eight registers, we will reserve one for the zero register. Our clocking methodology will be a rising-edge triggered methodology except on write-back which will be falling-edge triggered. Team 1337's language of choice for this project is Verilog.

Instruction format

Example:

R-Format:

Opcode

Rs

rt

rd

Func

 

4 bits

3 bits

3 bits

3 bits

3 bits

 

 

 

 

 

 

 

Opcode

Rs

rt

immediate

I–Format:

4 bits

3 bits

3 bits

6 bits

 

 

 

 

 

 

J- Format:

Opcode

address

 

4 bits

12 bits

Instructions

Example:

Name

Mnemonic

Operation

Opcode

Funct

Format

No Operation

nop

No Operation

0000

X

J

Add

add

add $s1, $s2, $s3;   $s1 = $s2 + $s3

0001

000

R

Add Immediate

addi

addi $s1, $s2 immediate;   $s1 = $s2 + immediate

0010

X

I

And

and

and $s1, $s2, $s3;   $s1 = $s2 & $s3

0001

001

R

Branch Equal

beq

beq $s1, $s2, addy  ;   if ($s1 == $s2) PC=PC+2+( addy *2);

0100

X

I

Branch Not Equal

bne

bne $s1, $s2, addy  ;   if ($s1 != $s2) PC=PC+2+( addy *2)

0101

X

I

Branch Not Zero

bnz

bnz $s1 addy  ;   if ($s1 != 0) PC=PC+2+( addy *2)

 

0110

X

I

 

Branch Zero

bz

bz $s1 addy  ;   if ($s1 == 0) PC=PC+2+( addy *2)

 

0111

X

I

Jump

jump

jump address;   PC = address

 

1000

X

J

Load Word

lw

lw $s1, num($s2);   $s1 = mem [$s2+num]

0011

X

I

Or

or

or $s1, $s2, $s3;   $s1 = $s2 | $s3

0001

010

R

Or Immediate

ori

ori $s1, $s2, immediate; $s1 = $s2 | immediate

1001

X

I

Set Equal

seq

seq $s1, $s2, $s3;   if($s2 == $s3) $s1 = 1;

else $s1 = 0;

 

0010

011

R

Set Less Than immediate

slti

slti $s1, $s2, number;   if($s2 < number) $s1 = 1;

else $s1 = 0;

 

1101

X

I

Set Less Than or Equal To

sle

sle $s1, $s2, $s3;   if($s2 <= $s3) $s1 = 1;

else $s1 = 0;

 

0010

101

R

Shift Left Immediate

sll

sll $s1, $s2, immediate; $s1 = $s2 << immediate

1010

X

I

Shift Right Immediate

srl

srl $s1, $s2, immediate; $s1 = $s2 >> immediate

1011

X

I

Store Word

sw

sw   $s1, num($s2);   mem [$s1+num] = $s2

1100

X

I

Subtract

sub

sub $s1, $s2, $s3;   $s1 = $s2 xor $s3

 

0001

110

R

Xor

xor

xor $s1, $s2, $s3;   $s1 = $s2 ^ $s3

 

0001

111

R

Pseudocode for the test program

$zero=0000hex; // Reg 0

$v0 = 0040hex; // Reg 1

$v1 = 1010hex; // Reg 2

$v2 = 000Fhex; // Reg 3

$v3 = 00F0hex; // Reg 4

$t0 = 0000hex; // Reg 5

$a0 = 0010hex; // Reg 6

$a1 = 0005hex; // Reg 7

 

while ($a1 > 0) do {

$a1 = $a1 –1;

$t0 = Mem [ $a0];

 

if ($t0 > 0100hex) then {

$v0 = $v0 ÷ 8;

$v1 = $v1 | $v0; //or

Mem [ $a0] = FF00hex;

}

else {

$v2 = $v2 • 4;

$v3 = $v3 $v2; // xor

Mem [ $a0] = 00FFhex;

}

 

$a0 = $a0 + 2;

}

 

return;

 

WhileLoop :

//branch back up to here for while loop

2

slti

$t0, $a1, 1

4

bne

$t0, $zero, end

6

addi

$a1, $a1, -1

8

lw

$t0, 0($a0)

10

if

 

12

slti

$t0, $t0, 0x4

14

bne

$t0, $zero, else

16

srl

$v0, $v0, 3

18

or

$v1, $v1, $v0

20

addi

$t0, $zero, 63

22

sll

$t0, $t0, 6

24

addi

$t0, $t0, 48

26

sll

$t0, $t0, 4

28

sw

$t0, 0($a0)

30  

j

endofelse

32

else

 

34

sll

$v2, $v2, 2

36

xor

$v3, $v3, $v2

38

addi

$t0, $zero, 63

40

sll

$t0, $t0, 6

42

addi

$t0, $t0, 48

44

srl

$t0, $t0, 4

46

sw

$t0, 0($a0)

48

endofelse

 

50

addi

$a0, $a0, 2

52

j

While Loop

54

end

 

56

Assembly Language

Assembly Language

Machine Code

slti           $t0, $a1, 1

1101 101 111 000001

bne         $t0, $zero, end

0101 000 000 011000

addi        $a1, $a1, -1

0010 111 111111111

lw            $t0, X($a0)

0011 101 000010000

slti           $t0, $t0, 0x4

1101 101 101 000010

bne         $t0, $zero, else

0101 101 000 001000

srl            $v0, $v0, 3

1011 001 001 000011

or            $v1, $v1, $v0

0001 010 001 010 010

addi        $t0, $zero, 63

0010 101 000 111111

sll            $t0, $t0, 6

1010 101 101 000110

addi        $t0, $t0, 48

0010 101 101 110000

sll            $t0, $t0, 4

1010 101 101 000100

sw           $t0, X($a0)

1100 101 000010000

j                endofelse

1000 000000110010

sll            $v2, $v2, 2

1010 011 011 000010

xor           $v3, $v3, $v2

0001 100 011 100 111

addi         $t0, $zero, 63

0010 101 000 111111

srl            $t0, $t0, 4

1011 101 101 000100

addi        $t0, $t0, 48

0010 101 101 110000

sll            $t0, $t0, 4

1010 101 101 000100

sw            $t0, X($a0)

 

1100 101 000010000

addi         $a0, $a0, 2

 

0010 110 110 000010

j                While Loop

 

1000 000000000010

Tasks and Schedule

Name

Tasks

Jonathan Chapman

Control Unit

Austin Lee

Datapath

 

Josh Richardson

Web Design

 

All

Instruction

Report

Coding

 

Planned Meetings

The design team will meet every Tuesday at 5:15 p.m. until the project is completed.

November 2, 2010 Met from 1715 - 2030. All members were present.

November 9, 2010 Met from 1715 - 1930. All members were present.

November 16, 2010 Met from 17:15 - 2000. All members were present.

November 23, 2010 Met from 17:15 - 2400. All members were present.

November 24, 2010 Met from 08:15 - 13:30. All members were present.

November 29, 2010 Met from 09:00 - 01:00 on 30 November. All members were present until 17:00. Austin and Josh remained until 01:00 on 30 November.