Giter Club home page Giter Club logo

jtp75 / advanced-digital-design Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 0.0 126.79 MB

University of Pittsburgh ECE 1195

VHDL 59.20% Verilog 14.77% Pascal 0.01% HTML 9.29% Tcl 0.61% JavaScript 0.10% Shell 0.07% Batchfile 0.01% TeX 0.02% PureBasic 0.01% SuperCollider 0.13% C 6.58% C++ 5.87% Makefile 0.04% Assembly 0.06% CartoCSS 0.01% Python 0.01% SystemVerilog 1.86% V 1.38% Stata 0.01%
data-path finite-state-machine fpga fpga-accelerator hardware hardware-acceleration mips32cpu vhdl-coursework vivado vivado-hls

advanced-digital-design's Introduction

Advanced-Digital-Design

University of Pittsburgh ECE 1195

Brief

Designing hardware components using Vivado/Vivado HLS and testing designs on a field programmable gate array. Coursework includes a multicycle MIPS CPU, hardware accelerators for matrix multiplication and 2d convolution, and various smaller components.

Semester

Spring 2023

IP Repository

Contains IPs for all top-level designs create in labs. Also contains various prewritten components to aid in the design process.

Labs

Lab 1 - Generic Adder

Intended for learning the basics of Vivado. A generic combinational hardware adder written in asynchronous VHDL.

Lab 2 - Arithmetic Logic Unit

A fully functional 32-bit ALU comprised of four components:

  • Logic Unit for bitwise logic operations
  • Arithmetic Unit for addition/subtraction operations (from Lab 1)
  • Shift Unit for register shift operations
  • Comparator for comparison operations

Lab 3 - Sequential Hardware Multiplier

An unsigned 32-bit multiplier implemented using a shift registers, an adder, and finite state machine controller. The completion of an operation is signaled by a 'done' bit and the result is stored in a 64-bit register. Each operation takes 33 clock cycles to run.

*** Lab 4 - Multicycle MIPS CPU

A fully synchronous CPU that implements part of the MIPS instruction set. I designed the components and controller using behavioral VHDL. I combined these components in a Vivado block diagram to implement the top-level design (based on Von Neumann architecture). The top-level design is capable of executing MIPS assembly programs. Features include:

  • ALU operations using ALU from Lab 2 (arithmetic, logic, comparison, and shift)
  • Memory interfacing (lw, lh, sw)
  • Program Counter functionality
  • Branch/Jump instructions (j, jr, bne)
  • Count leading ones instruction (clo)
  • Multiplication using multiplier from Lab 3 (umult, mflo, mfhi)
  • Immediate operands

Lab 5 - Matrix Multiplication Hardware Accelerator

A hardware accelerator for multiplying matrices implemented with Vivado HLS. Intended for learning how to use Vivado HLS.

Lab 6 - Image Convolution Hardware Accelerator

A fully implemented hardware accelerator for grayscale image convolution. Runtime complexity is the same as the size of the input image. The onboard hardware implementation relies on a low-overhead Linux distribution. For results, see lab_6/lab6_report.pdf. Features both shift register and ring buffer implementations.

advanced-digital-design's People

Contributors

jtp75 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

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.