You are on page 1of 18

C3PU

PROCCESSOR DESIGN FOR RECONFIGURABLE PLATFORMS


TEAM LEADER: IVAN SOVI LUKA KOVA SIMON COSSART FILIP KERI

WHAT ARE PROCESSORS?

Processors are devices which can process binary information with basic operations, they are in most of our electronic devices. They are made from several main components like ALU, CU, Registers...

WHAT ARE SOFT-CORE AND HARD-CORE PROCESSORS?


Soft-Core processor is a processor which can change their logic circuits, their main advantages are: Limit speed 250 MHz and less Can be multi-core Reprogrammable Their main disadvantage is their speed, they are slower.
Hard-Core processors are processors that have their logics circuits engraved; they have some advantages compared to the Soft-Core: Fast speed from 100MHz to 1GHz of speed Cannot be modified Optimized

FPGA
Field Programmable Gate Arrays Can be reconfigured Based around a matrix of configurable logic blocks (CLBs)
connected via programmable interconnects

CLB Configurable Logic Block IOB Input/Output Block Block RAM Multipliers (general purpose) DCM Digital Clock Management Interconnect network Configuration logic

CPU COMPONENTS
SEQUENTIAL

The basic registers are: The Single register The Tri-register The Register array

CPU COMPONENTS
COMBINATIONAL

The basic components are: The ALU(Arithmetic-Logic Unit) The Shifter The Comparator

CPU ARCHITECTURE
SIMPLIFIED MODEL

Picture taken from: http://www.spring-alpha.org/images/module_01/talk/mf_vnarch.png

C3PU ARCHITECTURE

RAM

INSTRUCTIONS
opcode

00011_00000_001_010
ALU operations AND OR NOT XOR opcode Shifter operations opcode Control operations

c = a and b 01001 c = a or b c = not a c = a xor b 01010 01100 01011

SHL
SHR ROTR ROTL

Shift 1 bit to the left


Shift 1 bit to the right Rotate 1 bit to the right Rotate 1 bit to the left

10000
10001 10010 10011

NOP
LOAD MOV LOADI JMPI JMPCI

00000
00001 00011 00100 00101 00110

ADD
SUB INC DEC ZERO

c=a+b
c=ab c=a+1 c=a1 c=0

01101
01110 00111 01100 01111

END

10110

ASSEMBLY
Our language Assembly ( C++ & Python ) Machine code

CONTROL UNIT
Unit which coordinates components
in computer system

It fetches the code of all of the


instructions in the program.

This is used to decode the


instructions that make up a program when they are being processed, and to determine in what actions must be taken in order to process them

PIPELINE

RESET FETCH
Puts the zero value in all the registers

DECODE
Retrieves commands from RAM on the address from PC register

EXECUTE
Checks the opcode of retrieved command
Performs the instruction

HOW A COMMAND IS EXECUTED IN OUR CPU?

RESULTS

We made a code for our processor to make a Fibonacci sequence Fibonacci sequence: f[ i ] = f[ i-1 ]+f[ i-2 ] where f[ 0 ] = f[ 1 ] = 1 ( 1, 1, 2, 3, 5, 8, 13, 21, 34...)

assembly

simulation

Next slide

RESULTS
SIMULATION

Fibonnacci sequence

CONCLUSION
Our goal was to make a CPU and we succeeded We learned a lot of new things, especially about VHDL Future -> execution on real hardware Everyone who has an FPGA board can use our processor since our
code is published on github.com

QUESTIONS?

You might also like