Green - Ece

Green

From Ece

Jump to: navigation, search

Contents

Team Members

Team Leader: Richard Sween
Team Member: Sean Bradford
Team Member: Matt Campassi

Design Overview

Instruction Format

  • R-Format:
Opcode rs rt rd Func
4 bits 3 bits 3 bits 3 bits 3 bits


  • I-Format:
Opcode rs rt Immediate Func
4 bits 3 bits 3 bits 3 bits 3 bits


  • J-Format:
Opcode address
4 bits 12 bits


  • L-Format:
Opcode rd Immediate Half (upper = 0, lower = 1)
4 bits 3 bits 8 bits 1 bit


  • B-Format:
Opcode rs rt Address
4 bits 3 bits 3 bits 6 bit

Instructions

Name Mnemonic Operation Opcode Func Format
Add add add $s1, $s2, $s3; $s3 = $s1 + $s2 0001 000 R
Add immediate addi addi $s1, $s2, 100; $s2 = $s1 + 100 1000 000 I
Branch Equal beq beq $s1, $s2, Loc; if($s1==$s2) goto Loc 0100 000 B
Branch Not Equal bne bne $s1, $s2, Loc; if($s1!=$s2) goto Loc 0100 001 B
Divide div div $s1, $s2, $s3; $s3 = $s1 / $s2 0001 001 R
Exclusive Or xor xor $s1, $s2, $s3; $s3 = $s1 ⊕ $s2 0001 010 R
Jump j j Loc; goto Loc 0110 000 J
Load Word lw lw $s1, $s2, 0; $s2 = Mem[$s1] 1001 000 I
Load Half Immediate lhi lhi $s1, imm, 0; $s1(15-8) = imm 1011 000 L
Multiply mult mult $s1, $s2, $s3; $s3 = $s1 * $s2 0001 011 R
Null Operation nop nop 0000 000 R
Or or or $s1, $s2, $s3; $s3 = $s1 ¦ $s2 0001 100 R
Set Greater Than sgt sgt $s1, $s2, $s3; if($s1 > $s2) $s3 = 1 else $s3 = 0 0001 101 R
Set Greater Than Immediate sgti sgti $s1, $s2, 0; if ($s1 > 0) $s2 = 1 else $s2 = 0 1000 001 I
Shift Left Logical sll sll $s1, $s2, 2; $s2 = $s1 << 2 1000 010 I
Shift Right Logical srl srl $s1, $s2, 2; $s2 = $s1 >> 2 1000 011 I
Store Word sw sw $s1, $s2, 0; Mem[$s1] = $s2 1010 000 I
Subtract sub sub $s1, $s2, $s3; $s3 = $s1 - $s2 0001 110 R


Assembly Language and Machine Code for the Test Program

Test Program:

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;

Assembly Language and Machine Code:

Label Assembly Language Machine Code
while: sgti $t1, $a1, 0; 1000 010 101 000 001
beq $t1, $0, end_while; 0100 101 000 011110
addi $t1, $0, 1; 1000 000 101 001 000
sub $a1, $a1, $t1; 0001 010 101 010 110
lw $t0, 0($a0); 1001 001 100 000 000
lhi $t1, 00000001, 0 1011 101 00000001 0
lhi $t1, 00000000, 1 1011 101 00000000 1
sgt $t1, $t0, $t1; 0001 100 101 101 101
beq $t1, $0, else; 0100 101 000 010011
lw $v0, 0($a2) 1001 011 110 000 000
lw $v1, 2($a2) 1001 011 111 010 000
srl $v0, $v0, 3 1000 110 110 011 011
or $v1, $v1, $v0; 0001 111 110 111 100
lhi $t1, 11111111, 0 1011 101 11111111 0
lhi $t1, 00000000, 1 1011 101 00000000 1
sw $t1, 0($a0) 1010 001 101 000 000
sw $v0, 0($a2) 1010 011 110 000 000
sw $v1, 2($a2) 1010 011 111 010 000
j endif; 0110 000000011100
else: lw $v0, 4($a2) 1001 011 110 100 000
lw $v1, 6($a2) 1001 011 111 110 000
sll $v0, $v0, 2; 1000 110 110 010 010
xor $v1, $v1, $v0; 0001 111 110 111 010
lhi $t1, 00000000, 0; 1011 101 00000000 0
lhi $t1, 11111111, 1; 1011 101 11111111 1
sw $t1, 0($a0) 1010 001 101 000 000
sw $v0, 4($a2) 1010 011 110 100 000
sw $v1, 6($a2) 1010 011 111 110 000
endif: addi $a0, $a0, 2 1000 001 001 010 000
j while; 0110 000000000000
end_while: nop 0000 000 000 000 000


Tasks & Schedule

Name Tasks 1st Week 2nd Week 3rd Week 4th Week 5th Week
Richard Sween
  1. Web Page Dev, Instruction Set
  2. Design Hazard Detection
  3. Write Hazard Detection Code
  4. Testing
  5. Report
--------






--------

--------






--------

--------
--------






--------
--------





--------
--------
Matthew Campassi
  1. Design Data Path
  2. Assemble Data Path
  3. Write Data Path Code
  4. Testing
  5. Demonstration
--------






--------
--------




--------
--------
--------





--------
--------




--------
--------
Sean Bradford
  1. Control and Forwarding Logic
  2. Code
  3. Testing
  4. Report
--------



--------

--------




--------
--------




--------
--------



--------
--------


Planned Meetings

  • Weekly on Thursday afternoons at 2pm
  • Saturday afternoons, as needed

Meeting Notes

  • Wednesday April 6
    • Members Present: Richard, Sean, Matt
    • Discussed data path design, selected Java programming language, set next meeting for Friday afternoon
  • Sunday April 10
    • Members Present: Richard, Sean, Matt
    • Worked on data path, tweaked instruction set, started hazard detection and forwarding design
  • Tuesday April 12
    • Members Present: Richard, Sean, Matt
    • Worked on data path, worked on hazard detection and forwarding units
  • Thursday April 14
    • Members Present: Richard, Sean, Matt
    • Finished implementing data path, continued hazard detection and forwarding units
  • Saturday April 16
    • Members Present: Richard, Sean, Matt
    • Tested data path, started implementation of hazard detection and forwarding units