All Projects → hunterlew → Convolution_network_on_fpga

hunterlew / Convolution_network_on_fpga

CNN acceleration on virtex-7 FPGA with verilog HDL

Projects that are alternatives of or similar to Convolution network on fpga

Symbiflow Arch Defs
FOSS architecture definitions of FPGA hardware useful for doing PnR device generation.
Stars: ✭ 137 (-41.95%)
Mutual labels:  verilog, fpga
Tinytpu
Implementation of a Tensor Processing Unit for embedded systems and the IoT.
Stars: ✭ 153 (-35.17%)
Mutual labels:  verilog, fpga
Openfpgaduino
All open source file and project for OpenFPGAduino project
Stars: ✭ 137 (-41.95%)
Mutual labels:  verilog, fpga
Aes
Verilog implementation of the symmetric block cipher AES (Advanced Encryption Standard) as specified in NIST FIPS 197. This implementation supports 128 and 256 bit keys.
Stars: ✭ 131 (-44.49%)
Mutual labels:  verilog, fpga
Openwifi Hw
FPGA/hardware design of openwifi
Stars: ✭ 181 (-23.31%)
Mutual labels:  verilog, fpga
Wbuart32
A simple, basic, formally verified UART controller
Stars: ✭ 133 (-43.64%)
Mutual labels:  verilog, fpga
Logic
CMake, SystemVerilog and SystemC utilities for creating, building and testing RTL projects for FPGAs and ASICs.
Stars: ✭ 149 (-36.86%)
Mutual labels:  verilog, fpga
Tf2
An Open Source Deep Learning Inference Engine Based on FPGA
Stars: ✭ 113 (-52.12%)
Mutual labels:  fpga, cnn
Wb2axip
Bus bridges and other odds and ends
Stars: ✭ 177 (-25%)
Mutual labels:  verilog, fpga
Fpga Chip8
CHIP-8 console on FPGA
Stars: ✭ 169 (-28.39%)
Mutual labels:  verilog, fpga
Open Register Design Tool
Tool to generate register RTL, models, and docs using SystemRDL or JSpec input
Stars: ✭ 126 (-46.61%)
Mutual labels:  verilog, fpga
Red Pitaya Notes
Notes on the Red Pitaya Open Source Instrument
Stars: ✭ 205 (-13.14%)
Mutual labels:  verilog, fpga
Connectal
Connectal is a framework for software-driven hardware development.
Stars: ✭ 117 (-50.42%)
Mutual labels:  verilog, fpga
Tang e203 mini
LicheeTang 蜂鸟E203 Core
Stars: ✭ 135 (-42.8%)
Mutual labels:  verilog, fpga
Vm80a
i8080 precise replica in Verilog, based on reverse engineering of real die
Stars: ✭ 114 (-51.69%)
Mutual labels:  verilog, fpga
Openwifi
open-source IEEE 802.11 WiFi baseband FPGA (chip) design
Stars: ✭ 2,257 (+856.36%)
Mutual labels:  verilog, fpga
Autofpga
A utility for Composing FPGA designs from Peripherals
Stars: ✭ 108 (-54.24%)
Mutual labels:  verilog, fpga
Livehd
Live Hardware Development (LiveHD), a productive infrastructure for Synthesis and Simulation
Stars: ✭ 110 (-53.39%)
Mutual labels:  verilog, fpga
Fpga readings
Recipe for FPGA cooking
Stars: ✭ 164 (-30.51%)
Mutual labels:  verilog, fpga
Verilog Generator Of Neural Net Digit Detector For Fpga
Verilog Generator of Neural Net Digit Detector for FPGA
Stars: ✭ 187 (-20.76%)
Mutual labels:  verilog, fpga

convolution_network_on_FPGA

The repository is part of my graduation project, but focusing on convolution network inference acceleration on FPGA.

Description

The project was built with ISE 14.7 software and vertix-7 FPGA. It performs a 7-layer network forward computation with certain accelerating strategies. First, train a SAR target classification network on MSTAR dataset with MatConvNet and use early-stop. Then, transform the weights and inputs to FPGA using COE files generated by Matlab. Next, design native verilog-written models to fulfil the forward computation. The system uses 16-bit fix-point data to maintain precision. The result proves that it costs less than 1ms per image, outperforming other computing platforms.

Acceleration

For trade-off between FPGA resource and speed, the first conv. layer uses shift-register structures for acceleration, considering that the size of inputs and weights in the first conv. layer are larger. The other conv. layers only uses pipe-line structures. Note that there are 18 files named with m_conv_1, indicating 18 shift-registers in the first conv. layer.

For the limit of bandwidth, the second conv. layer uses channel-grouping parallelization scheme. I used v7-415t and v7-485t FPGA for comparisons, which use different group numbers (4 vs 1) according to their different amounts of resource. You may notice the scheme in the file CNN_top.v, with the signal 'ram_ready' which controls the channel grouping and merging.

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].