Skip to content

jaideepheer/vhdl_convolution_kernel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Convolution Kernel in VHDL

System design

The convolution kernel is designed as a combinational circuit to compute a convolution of 2^T * 2^T kernel on any input matrix M * M.

This is achieved using Carry Look-Ahead Adders and Array Multipliers.

First, Vector Dot Product component is created using the Carry Look-Ahead Adders and Array Multipliers, then these Vector Dot Product components are used to convolve the given kernel over the input matrix by treating both the kernel and the convolution area as one long flat vector and performing a dot product of both.

The full documentation can be found in Report.pdf.

Compilation Requirements

Compiling the code on ModelSim requires setting the VHDL language version to 2008 for all code files.

This is due to the definition of vector_T and matrix_T data types requiring some newer features.

To set the VHDL version,

  • Select all files in the project.
  • Right-click and click on properties.
  • Under the VHDL tab, select Use 1076-2008 radio button for Language Syntax.
  • Click OK and compile all files.
step1 step2

Results

Array Multiplier

array_multiplier.png

Vector Multiplier

vector_multiplier.png

Convolution Kernel

convolution_kernel_4x4_on_7x7.png

About

A 2D convolution kernel written in VHDL using ModelSim.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages