All Projects → cameronshinn → tiny-tpu

cameronshinn / tiny-tpu

Licence: other
Small-scale Tensor Processing Unit built on an FPGA

Programming Languages

Verilog
626 projects
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to tiny-tpu

managed ml systems and iot
Managed Machine Learning Systems and Internet of Things Live Lesson
Stars: ✭ 35 (-42.62%)
Mutual labels:  fpga, tpu
opencl-hls-cnn-accelerator
OpenCL HLS based CNN Accelerator on Intel DE10 Nano FPGA.
Stars: ✭ 49 (-19.67%)
Mutual labels:  fpga, fpga-accelerator
Convolution network on fpga
CNN acceleration on virtex-7 FPGA with verilog HDL
Stars: ✭ 236 (+286.89%)
Mutual labels:  fpga
vga-clock
Show the time on a VGA monitor. Submitted for the Google MPW1 ASIC shuttle.
Stars: ✭ 48 (-21.31%)
Mutual labels:  fpga
awesome-hwd-tools
A curated list of awesome open source hardware design tools
Stars: ✭ 42 (-31.15%)
Mutual labels:  fpga
Blueoil
Bring Deep Learning to small devices
Stars: ✭ 244 (+300%)
Mutual labels:  fpga
Awesome-Retro-Docs
A curated collection of technical documentation for Arcades, Handhelds, Consoles, Computers and MCU’s.
Stars: ✭ 128 (+109.84%)
Mutual labels:  fpga
Axi
AXI SystemVerilog synthesizable IP modules and verification infrastructure for high-performance on-chip communication
Stars: ✭ 227 (+272.13%)
Mutual labels:  fpga
soap
🎯 soap - Structural Optimisation of Arithmetic Programs
Stars: ✭ 21 (-65.57%)
Mutual labels:  fpga
SpinalDev
Docker Development Environment for SpinalHDL
Stars: ✭ 17 (-72.13%)
Mutual labels:  fpga
fpga-docker
Tools for running FPGA vendor toolchains with Docker
Stars: ✭ 54 (-11.48%)
Mutual labels:  fpga
Forth Cpu
A Forth CPU and System on a Chip, based on the J1, written in VHDL
Stars: ✭ 244 (+300%)
Mutual labels:  fpga
fpbinary
Fixed point package for Python.
Stars: ✭ 30 (-50.82%)
Mutual labels:  fpga
Xrt
Xilinx Run Time for FPGA
Stars: ✭ 236 (+286.89%)
Mutual labels:  fpga
FPGACosmacELF
A re-creation of a Cosmac ELF computer, Coded in SpinalHDL
Stars: ✭ 31 (-49.18%)
Mutual labels:  fpga
Icicle
32-bit RISC-V system on chip for iCE40 and ECP5 FPGAs
Stars: ✭ 234 (+283.61%)
Mutual labels:  fpga
Xilinx axidma
A zero-copy Linux driver and a userspace interface library for Xilinx's AXI DMA and VDMA IP blocks. These serve as bridges for communication between the processing system and FPGA programmable logic fabric, through one of the DMA ports on the Zynq processing system. Distributed under the MIT License.
Stars: ✭ 251 (+311.48%)
Mutual labels:  fpga
basic-ecp5-pcb
Reference design for Lattice ECP5 FPGA. Featuring Raspberry Pi interface and 6 PMODs
Stars: ✭ 71 (+16.39%)
Mutual labels:  fpga
vscode-terosHDL
VHDL and Verilog/SV IDE: state machine viewer, linter, documentation, snippets... and more!
Stars: ✭ 325 (+432.79%)
Mutual labels:  fpga
FPGAmp
720p FPGA Media Player (RISC-V + Motion JPEG + SD + HDMI on an Artix 7)
Stars: ✭ 190 (+211.48%)
Mutual labels:  fpga

tiny-tpu

Overview

Tiny TPU is a small-scale, FPGA-based implementation of Google's Tensor Processing Unit. The goal of this project was to learn about the end-to-end technicalities of accelerator design from hardware to software, while deciphering the lower level intricacies of Google's proprietary technology. In doing so, we explored the possibility of a small scale, low power TPU.

A more detailed report is located in /docs/report/report.pdf.

Current Status

The TPU currently doesn't have all of the hardware validated, but is close to having a complete instruction decoder for an instruction set, as well as functional accumulator tables for large matrix multiplication. Right now it can only do up to 16x16 matrix multiplication on the synthesis branch.

Synthesizing and Programming onto an FPGA

The stable version is the latest commit on the synthesis branch, as master is left open to continue progress on the project. This project was synthesized on Quartus 15.0 and programmed onto an Altera DE1-SoC FPGA. No other setup is guaranteed to work. Synthesis requires the necessary Cyclone V libraries to use the IP blocks instantiated in the Verilog.

The Verilog files for synthesis are located in /hardware/synthesis and the Verilog files are located in /hardware/hdl.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].