GithubHelp home page GithubHelp logo

debasishpanda529 / ee224_iitb-cpu Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 1.0 31.16 MB

Github repo containing all the VHDL files for the EE224 course project involving designing a rudimentary CPU.

VHDL 93.28% HTML 4.48% Standard ML 0.17% Scheme 0.03% Stata 2.04%
cpu-design vhdl

ee224_iitb-cpu's Introduction

IITB-CPU

Course Instructor :- Prof. Virendra Singh

Team members :-

IITB-CPU is a 16-bit elementary computer developed for teaching that is based on the Little Computer Architecture. The IITB-CPU is an 8-register, 16-bit computer system. It has 8 general-purpose registers (R0 to R7). Register R7 always stores Program Counter (also known as the Instruction Pointer). PC points to the next instruction. All addresses are short word addresses (i.e. address 0 corresponds to the first two bytes of main memory, address 1 corresponds to the second two bytes of main memory, etc.). This architecture uses a condition code register which has two flags Carry flag(C) and Zero flag(Z). The IITB-CPU is very simple, but it is general enough to solve complex problems. The architecture allows predicated instruction execution and multiple load and store execution. There are three machine-code instruction formats (R, I, and J type) and a total of 14 instructions.

Entities designed for implementing the CPU:

  • Arithmetic Logic Unit(ALU): As the name suggests, it performs various arithmetic operations on operands, such as addition, NAND and XOR.

  • Memory unit: Stores the program (sequential set of instructions) to be uploaded to the CPU.

  • Sign extenders (SE6, SE9): The sign extenders pad a specified number of zeroes to the most significant or least significant part of the binary numbers.

  • Temporary registers: These registers help store variables while processing the instructions. As is evident, they all store 16-bit binary values.

  • Register file: It is essentially a collection of registers (which store data and addresses), and can be controlled by an enable input.

N.B. : The reader is advised to exercise caution while using the code as a reference. Although the fundamental idea behind the code is more or less correct, we were unable to verify the correctness of the code for various instructions through testing and verification. Constructive suggestions regarding any change in the code are most welcome, and can be mailed here.

ee224_iitb-cpu's People

Contributors

debasishpanda529 avatar

Watchers

 avatar

Forkers

bhakti2305

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.