Next Article in Journal
Contact Resistance Parallel Model for Edge-Contacted 2D Material Back-Gate FET
Next Article in Special Issue
OQPSK Synchronization Parameter Estimation Based on Burst Signal Detection
Previous Article in Journal
Optimizing Filter-Based Feature Selection Method Flow for Intrusion Detection System
Previous Article in Special Issue
Optical Flow Filtering-Based Micro-Expression Recognition Method
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Some Algorithms for Computing Short-Length Linear Convolution

by
Aleksandr Cariow
* and
Janusz P. Paplinski
Faculty of Computer Science and Information Technology, West Pomeranian University of Technology, Żołnierska 49, 71-210 Szczecin, Poland
*
Author to whom correspondence should be addressed.
Electronics 2020, 9(12), 2115; https://doi.org/10.3390/electronics9122115
Submission received: 19 October 2020 / Revised: 30 November 2020 / Accepted: 7 December 2020 / Published: 10 December 2020
(This article belongs to the Special Issue Theory and Applications in Digital Signal Processing)

Abstract

:
In this article, we propose a set of efficient algorithmic solutions for computing short linear convolutions focused on hardware implementation in VLSI. We consider convolutions for sequences of length N = 2, 3, 4, 5, 6, 7, and 8. Hardwired units that implement these algorithms can be used as building blocks when designing VLSI -based accelerators for more complex data processing systems. The proposed algorithms are focused on fully parallel hardware implementation, but compared to the naive approach to fully parallel hardware implementation, they require from 25% to about 60% less, depending on the length N and hardware multipliers. Since the multiplier takes up a much larger area on the chip than the adder and consumes more power, the proposed algorithms are resource-efficient and energy-efficient in terms of their hardware implementation.

1. Introduction

Discrete convolution is found in many applications in science and engineering. Above all, it plays a key role in modern digital signal and image processing. In digital signal processing, it is the basis of filtering, multiresolution decomposition, and optimization of the calculation of orthogonal transform [1,2,3,4,5,6,7,8,9,10]. In digital image processing, convolution is a basic operation of denoising, smoothing, edge detection, blurring, focusing, etc. [11,12,13]. There are two types of discrete convolutions: the cyclic convolution and the linear convolution. General principles for the synthesis of convolution algorithms were described in [1,2,3]. The main emphasis in these works was made primarily on the calculation of cyclic convolution, while in many digital signal and image processing applications, the calculation of linear convolutions is required.
In recent years, convolution has found unusually wide application in neural networks and deep learning. Among the various kinds of deep neural networks, convolutional neural networks (CNNs) are most widely used [14,15,16,17]. In CNNs, linear convolutions are the most computationally intensive operations, since in a typical implementation, their multiple computations occupy more than 90% of the CNN execution time [14]. Only one convolutional level in a typical CNN requires more than two thousand multiplications and additions. Usually, there are several such levels in the CNN. That is why developers of such type of networks seek and design efficient ways of implementing linear convolution using the smallest possible number of arithmetic operations.
To speed up linear convolution computation, various algorithmic methods have been proposed. The most common approach to effective calculating linear convolution is dipping it in the space of a double-size cyclic convolution with the subsequent application of a fast Fourier transform (FFT) algorithm [15,16,17]. The FFT-based linear convolution method is traditionally used for large length finite impulse response (FIR) filters; however, modern CNNs use predominantly small length FIR filters. In this situation, the most effective algorithms used in the computation of a small-length linear convolution are the Winograd-like minimal filtering algorithms [18,19,20], which are the most used currently. The algorithms compute linear convolution over small tiles with minimal complexity, which makes them more effective with small filters and small batch sizes; however, these algorithms do not calculate the whole convolution. They calculate only two inner products of neighboring vectors formed from the current data stream by a moving time window of length N; therefore, these algorithms do not compute the true linear convolution.
At the same time, there are a number of CNNs in which it is necessary to calculate full-size small-length linear convolutions. In addition, in many applications of digital signal processing, there is the problem of calculating a one-dimensional convolution using its conversion into a multidimensional convolution. The algorithm thus obtained has a modular structure, and each module calculates a short-length one-dimensional convolution [21].
The most popular sizes of sequences being convoluted are sequences of length 2, 3, 4, 5, 6, 7, and 8. However, in the papers known to the authors, there is no description of resource-efficient algorithms for calculation of linear convolutions for lengths greater than four [1,4,6,21,22]. In turn, the solutions given in the literature for N = 2, N = 3, and N = 4 do not give a complete imagination about the organization of the linear convolution calculation process, since their corresponding signal flow graphs are not presented anywhere. In this paper, we describe a complete set of solutions for linear convolution of small length N sequences from 2 to 8.

2. Preliminaries

Let { h m } and, { x n } , m = 0 , 1 , , M 1 , n = 0 , 1 , , N 1 be two finite sequences of length M and N, respectively. Their linear convolution is the sequence { y 1 } , i = 0 , 1 , , M + N 2 defined by [1]:
y i = n = 0 N 1 h i n x n ,
where we take h i n = 0 , if i n < 0 .
As a rule, the elements of one of the sequences to be convolved are constant numbers. For definiteness, we assume that it will be a sequence { h m } .
Because sequences { x n } and { h m } are finite length, then their linear convolution (1) can also be implemented as matrix-vector multiplication:
Y ( N + M 1 ) × 1 = H ( N + M 1 ) × N X N × 1
where
H ( N + M 1 ) × N = h 0 h 1 h 0 h 1 h M 1 h 0 h M 1 h 1 h M 1 ,
X N × 1 = [ x 0 , x 1 , x N 1 ] T ,
Y ( N + M 1 ) × 1 = [ y 0 , y 1 , , y N + M 2 ] T ,
H M × 1 = [ h 0 , h 1 , , h M 1 ] T .
In the future, we assume that X N × 1 is a vector of input data, Y ( N + M 1 ) × 1 is a vector of output data, and H M × 1 is a vector containing constants.
Direct computation of (3) takes MN multiplications and (M − 1)(N − 1) addition. This means that the fully parallel hardware implementation of the linear convolution operation requires MN multipliers and N + M − 3 multi-input adders with a different number of inputs, which depends on the length of the sequences being convolved. Traditionally, the convolution for which M = N is assumed as a basic linear convolution operation. Resource-effective cyclic convolution algorithms for benchmark lengths (N = 2, 3,...,16) have long been published [1,2,3,4,5,6,7,8,9]. For linear convolution, optimized algorithms are described only for the cases N = 2, 3, 4 [4,6,21,22]. Below we show how to reduce the implementation complexity of some benchmark-lengths linear convolutions for the case of completely parallel hardware their implementation. For completeness, we also consider algorithms for the sequences of lengths M = N = 2, 3, and 4.
So, considering the above, the goal of this article is to develop and describe fully parallel resource-efficient algorithms for N = 2, 3, 4, 5, 6, 7, 8.

3. Algorithms for Short-Length Linear Convolution

The main idea of presented algorithm is to transform the linear convolution matrix into circular matrix and two Toeplitz matrices. Then we can rewrite (3) in following form:
Y ( 2 N 1 ) × 1 = H ( 2 N 1 ) × N X N × 1 = H K × N H ˘ N H L × N 0 K × N H L × N 0 1 × N H K × N 0 L × N X N × 1
where H K × N = T K ( l ) 0 K × ( N K ) and H L × N = 0 L × ( N L ) T L ( r ) are matrices that are horizontal concatenations of null matrices and left-triangular or right-triangular Toeplitz matrices, respectively:
T K × N ( l ) = h 0 0 0 h 1 h 0 0 h K 1 h K 2 h 0 ,   T L ( r ) = h N 1 h N 2 h N L 2 0 h N 1 h N L 1 0 0 h N 1 ,
which gives
H K × N = h 0 0 0 0 0 0 h 1 h 0 0 0 0 0 h K 1 h K 2 h 0 0 0 0 ,
H L × N = 0 0 0 0 0 0 0 0 0 h N 1 h N 2 h N L 2 0 h N 1 h N L 1 0 0 h N 1 .
A circulant matrix H ˘ N is a matrix of cyclic convolution HN with rows cyclically shifted by n positions down:
H ˘ N = I N n H N = h K h K 1 h K + 1 h K + 1 h K h K + 2 h N 1 h N 2 h 0 h 0 h N 1 h 1 h K 1 h K 2 h K ,
where I N ( n ) - is permutation matrix obtained from the identity matrix by cyclic shift of its columns by n positions to the left and:
H N = h 0 h N 1 h 1 h 1 h 0 h 2 h N 1 h N 2 h 0 .
The coefficients K and L are natural numbers arbitrary taken and fulfilling the dependence K + L = N − 1. These values are selected heuristically for each N separately.
The product H ˘ N X N × 1 is calculated using the well-known fast convolution algorithm. The products of H K × N X N × 1 and H L × N X N × 1 are also calculated using fast algorithms for matrix-vector multiplication with Toeplitz matrices. We use all of the above techniques to synthesize the final short-length linear convolution algorithms with reduced multiplicative complexity.

3.1. Algorithm for N = 2

Let X 2 × 1 = [ x 0 , x 1 ] T and H 2 × 1 = [ h 0 , h 1 ] T be 2-dimensional data vectors being convolved and Y 3 × 1 = [ y 0 , y 1 , y 2 ] T be an input vector representing a linear convolution. The problem is to calculate the product
Y 3 × 1 = H 3 × 2 X 2 × 1 ,
where
H 3 × 2 = h 0 h 1 h 0 h 1 .
Direct computation of (5) takes four multiplications and one addition. It is easy to see that the matrix H 3 × 2 possesses an uncommon structure. By the Toom–Cook algorithmic trick, the number of multiplications in the calculation of the 2-point linear convolution can be reduced [1,21].
With this in mind, the rationalized computational procedure for computing 2-point linear convolution has the following form:
Y 3 × 1 = A 3 ( 2 ) D 3 A 3 × 2 ( 2 ) X 2 × 1
where
A 3 × 2 ( 2 ) = 1 1 1 1 ,   A 3 ( 2 ) = 1 1 1 1 1 ,   D 3 = d i a g ( h 0 , h 0 h 1 , h 1 ) ,
s 0 ( 2 ) = h 0 ,   s 1 ( 2 ) = h 0 h 1 ,   s 2 ( 2 ) = h 1 .
Figure 1 shows a signal flow graph for the proposed algorithm, which also provides a simplified schematic view of a fully parallel processing unit for resource-effective implementing of 2-point linear convolution. In this paper, the all data flow graphs are oriented from left to right. Straight lines in the figures denote the data transfer (data path) operations. The circles in these figures show the operation of multiplication (multipliers in the case of hardware implementation) by a number inscribed inside a circle. Points where lines converge denote summation (adders in the case of hardware implementation) and dotted lines indicate the sign-change data paths (data paths with multiplication by −1). We use the usual lines without arrows on purpose, so as not to clutter the picture [23].
As it can be seen, the calculation of 2-point linear convolution requires only three multiplications and three additions. In terms of arithmetic units, a fully parallel hardware implementation of the processor unit for calculating a 2-point convolution will require three multipliers, one two-input adder, and one three-input adder. In terms of arithmetic units, a fully parallel hardware implementation of the processor unit for calculating a 2-point convolution will require three multipliers, one two-input adder, and one three-input adder instead of four multipliers and one two-input adder in the case of completely parallel implementation of (6). So, we exchanged one multiplier for one three-input adder.

3.2. Algorithm for N = 3

Let X 3 × 1 = [ x 0 , x 1 , x 2 ] T and H 3 × 1 = [ h 0 , h 1 , h 2 ] T be 3-dimensional data vectors being convolved and Y 5 × 1 = [ y 0 , y 1 , y 2 , y 3 , y 4 ] T be an input vector represented linear convolution for N = 3. The problem is to calculate the product
Y 5 × 1 = H 5 × 3 X 3 × 1 ,
where
H 5 × 3 = h 0 h 1 h 0 h 2 h 1 h 0 h 2 h 1 h 2 .
Direct computation of (9) takes nine multiplications and five addition. Because the matrix H 5 × 3 also possesses uncommon structure, the number of multiplications in the calculation of the 3-point linear convolution can be reduced too [1,4,21].
An algorithm for computation 3-point linear convolution with reduced multiplicative complexity can be written with the help of following matrix-vector calculating procedure:
Y 5 × 1 ( 3 ) = A 5 × 6 ( 3 ) D 6 ( 3 ) A 6 × 3 ( 3 ) X 3 × 1 ,
where
A 6 × 3 ( 3 ) = 1 1 1 1 1 1 1 1 1 ,   A 5 × 6 ( 3 ) = 1 1 1 1 1 1 1 1 1 1 1 1 ,
D 6 ( 3 ) = d i a g ( h 0 , h 1 , h 2 , h 0 + h 1 , h 0 + h 2 , h 1 + h 2 ) .
Figure 2 shows a signal flow graph of the proposed algorithm for the implementation of 3-point linear convolution. As it can be seen, the calculation of 3-point linear convolution requires only 6 multiplications and 10 additions. Thus, the proposed algorithm saves six multiplications at the cost of six extra additions compared to the ordinary matrix-vector multiplication method.
In terms of arithmetic units, a fully parallel hardware implementation of the processor unit for calculating a 3-point linear convolution (11) will require only six multipliers, four two-input adders, one three-input adder, and one four-input adder instead of 12 multipliers, 2 two-input adders, and 1 two-input adder in the case of fully parallel implementation of (9).

3.3. Algorithm for N = 4

Let X 4 × 1 = [ x 0 , x 1 , x 2 , x 3 ] T and H 4 × 1 = [ h 0 , h 1 , h 2 , h 3 ] T be 4-dimensional data vectors being convolved and Y 7 × 1 = [ y 0 , y 1 , y 2 , y 3 , y 4 , y 5 , y 6 ] T be an input vector represented linear convolution for N = 4.
The problem is to calculate the product:
Y 7 × 1 = H 7 × 4 X 4 × 1 ,
where
H 7 × 4 = h 0 h 1 h 0 h 2 h 1 h 0 h 3 h 2 h 1 h 0 h 3 h 2 h 1 h 3 h 2 h 3 .
Direct computation of (14) takes 16 multiplications and 9 addition. Due to the specific structure of matrix H 7 × 4 , the number of multiplication operations in the calculation of (14) can be significantly reduced.
An algorithm for computation 4-point linear convolution with reduced multiplicative complexity can be written using the following matrix-vector calculating procedure:
Y 7 × 1 = A 7 × 8 ( 4 ) A 8 × 9 ( 4 ) D 9 ( 4 ) A 9 × 8 ( 4 ) A 8 × 4 ( 4 ) X 4 × 1 ,
where
A 8 × 4 ( 4 ) = 1 1 1 1 1 1 1 1 1 1 1 1 ,   A 9 × 8 ( 4 ) = 1 H 2 1 1 1 1 I 3 ,
where I N is anidentity N × N matrix, H 2 is the ( 2   ×   2 ) Hadamard matrix, and sign,”⊕” denotes direct sum of two matrices [23,24,25].
D 9 ( 4 ) = d i a g ( s 0 ( 4 ) s 1 ( 4 ) , , s 8 ( 4 ) ) ,
s 0 ( 4 ) = h 0 , s 1 ( 4 ) = ( h 0 + h 1 + h 2 + h 3 ) / 4 , s 2 ( 4 ) = ( h 0 h 1 + h 2 h 3 ) / 4 ,
s 3 ( 4 ) = ( h 0 h 1 h 2 + h 3 ) / 2 , s 4 ( 4 ) = ( h 0 + h 1 h 2 h 3 ) / 2 , s 5 ( 4 ) = ( h 0 h 2 ) / 2 , s 6 ( 4 ) = h 3 ,
s 7 ( 4 ) = h 2 , s 8 ( 4 ) = h 3 ,
A 8 × 9 ( 4 ) = 1 H 2 1 1 1 1 I 3 ,   A 7 × 8 ( 4 ) = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 .
Figure 3 shows a signal flow graph of the proposed algorithm for the implementation of 4-point linear convolution. So, the proposed algorithm saves 7 multiplications at the cost of 11 extra additions compared to the ordinary matrix-vector multiplication method.
In terms of arithmetic units, a fully parallel hardware implementation of the processor unit for calculating a 4-point linear convolution will require only 9 multipliers, 13 two-input adders, 2 three-input adders, and 1 four-input adder instead of 16 multipliers, 2 two-input adders, 2 three-input adders, and 1 four-input adder in the case of fully parallel implementation of (14).

3.4. Algorithm for N = 5

Let X 5 × 1 = [ x 0 , x 1 , x 2 , x 3 , x 4 ] T and H 5 × 1 = [ h 0 , h 1 , h 2 , h 3 , h 4 ] T be 5-dimensional data vectors being convolved and Y 9 × 1 = [ y 0 , y 1 , y 2 , y 3 , y 4 , y 5 , y 6 , y 7 , y 8 ] T be an input vector representing a linear convolution for N = 5.
The problem is to calculate the product:
Y 9 × 1 = H 9 × 5 X 5 × 1 ,
where
H 9 × 5 = h 0 h 1 h 0 h 1 h 4 h 0 h 4 h 1 h 4 .
Direct computation of (16) takes 25 multiplications and 16 addition. Due to the specific structure of matrix H 9 × 5 , the number of multiplication operations in the calculation of (16) can be significantly reduced.
Thus, an algorithm for computation 5-point linear convolution with reduced multiplicative complexity can be written using the following matrix-vector calculating procedure:
Y 9 × 1 = A 9 × 11 ( 5 ) A 11 × 13 ( 5 ) A 13 × 16 ( 5 ) D 16 ( 5 ) A 16 × 15 ( 5 ) A 15 × 11 ( 5 ) A 11 × 5 ( 5 ) X 5 × 1 ,
where
A 11 × 5 ( 5 ) = 1 1 0 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 3 1 1 , A 15 × 11 ( 5 ) = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 11 × 4 0 4 × 7 I 4
and 0 M × N is a null matrix of order M × N [23,24,25],
D 16 ( 5 ) = d i a g ( s 0 ( 5 ) s 1 ( 5 ) , ,   s 15 ( 5 ) ) ,
s 0 ( 5 ) = h 0 , s 1 ( 5 ) = h 1 , s 2 ( 5 ) = h 0 , s 3 ( 5 ) = ( h 0 h 2 + h 3 h 4 ) / 4 , s 4 ( 5 ) = ( h 1 h 2 + h 3 h 4 ) / 4 ,
s 5 ( 5 ) = ( 3 h 2 2 h 1 + 2 h 0 2 h 3 + 3 h 4 ) / 5 , s 6 ( 5 ) = ( h 0 + h 1 h 2 + h 3 ) , s 7 ( 5 ) = ( h 0 + h 1 h 2 + h 3 ) ,
s 8 ( 5 ) = ( 3 h 0 2 h 1 + 3 h 2 2 h 3 2 h 4 ) / 5 , s 9 ( 5 ) = h 2 + h 3 , s 10 ( 5 ) = h 1 h 2 ,
s 11 ( 5 ) = ( h 0 h 1 + 4 h 2 h 3 h 4 ) / 5 , s 12 ( 5 ) = ( h 0 + h 1 + h 2 + h 3 + h 4 ) / 5 , s 13 ( 5 ) = h 4 , s 14 ( 5 ) = h 3 ,
s 15 ( 5 ) = h 4 ,
A 16 × 15 ( 5 ) = 1 1 1 1 1 1 1 1 1 1 1 1 1 0 12 × 4 0 4 × 11 I 4 ,
A 13 × 16 ( 5 ) = I 3 1 1 1 1 0 3 1 1 1 1 0 3 1 1 1 1 I 4 ,
A 11 × 13 ( 5 ) = I 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 I 3 ,
A 9 × 11 ( 5 ) = 1 0 2 × 6 1 1 1 1 1 0 3 × 5 1 1 1 1 1 0 2 × 6 1 1 1 0 2 × 5 1 1 1 .
Figure 4 shows a data flow diagram of the proposed algorithm for the implementation of 5-point linear convolution. The algorithm saves 9 multiplications at the cost of 22 extra additions compared to the ordinary matrix-vector multiplication method.
In terms of arithmetic units, a fully parallel hardware implementation of the processor unit for calculating a 5-point linear convolution will require 16 multipliers, 20 two-input adders, 2 three-input adders, 1 four-input adder, and 1 five-input adder instead of 25 multipliers, 2 two-input adders, 2 three-input adders, 2 four-input adders, and 1 five-input adder in the case of fully parallel implementation of expression (16).

3.5. Algorithm for N = 6

Let X 6 × 1 = [ x 0 , x 1 , x 2 , x 3 , x 4 , x 5 ] T and H 6 × 1 = [ h 0 , h 1 , h 2 , h 3 , h 4 , h 5 ] T be 6-dimensional data vectors being convolved and Y 11 × 1 = [ y 0 , y 1 , y 2 , y 3 , y 4 , y 5 , y 6 , y 7 , y 8 , y 9 , y 10 ] T be an input vector representing a linear convolution for N = 6.
The problem is to calculate the product:
Y 11 × 1 = H 11 × 6 X 6 × 1 ,
where
H 11 × 6 = h 0 h 1 h 0 h 1 h 5 h 0 h 5 h 1 h 5 .
Direct computation of (18) takes 36 multiplications and 25 addition. We proposed an algorithm that takes only 16 multiplications and 44 additions. It saves 20 multiplications at the cost of 19 extra additions compared to the ordinary matrix-vector multiplication method.
Proposed algorithm for computation 6-point linear convolution can be written with the help of following matrix-vector calculating procedure:
Y 11 ( 6 ) = A 11 ( 6 ) A ˘ 11 ( 6 ) A 11 × 14 ( 6 ) A ^ 14 ( 6 ) A ˘ 14 ( 6 ) A 14 × 16 ( 6 ) D 16 ( 6 ) A 16 × 14 ( 6 ) A ˘ 14 ( 6 ) A 14 ( 6 ) A 14 × 6 ( 6 ) X 6 × 1 ,
where
A 14 × 6 ( 6 ) = 1 1 1 1 1 0 5 × 3 0 3 1 1 1 1 0 3 1 1 1 0 2 × 3 1 1 1 , A 14 ( 6 ) = I 3 ( H 2 I 3 ) I 5 ,
A ˘ 14 ( 6 ) = I 3 I 2 1 1 1 1 1 1 1 I 5 ,   A 16 × 14 ( 6 ) = I 3 I 2 1 1 1 1 1 I 5 ,
D 16 = d i a g ( s 0 ( 6 ) , s 1 ( 6 ) , , s 15 ( 6 ) ) ,
s 0 ( 6 ) = 6 h 0 , s 1 ( 6 ) = 6 h 1 , s 2 ( 6 ) = 6 h 0 , s 3 ( 6 ) = h 0 + h 3 + h 4 + h 1 + h 2 + h 5 , s 4 ( 6 ) = 3 ( h 4 + h 1 h 0 h 3 ) , s 5 ( 6 ) = 3 ( h 2 + h 5 h 0 h 3 ) , s 6 ( 6 ) = 3 ( h 0 + h 3 ) ( h 0 + h 3 + h 4 + h 1 + h 2 + h 5 ) , s 7 ( 6 ) = h 0 h 3 + h 4 h 1 + h 2 h 5 ) , s 8 ( 6 ) = 3 ( h 4 h 1 h 0 + h 3 ) , s 9 ( 6 ) = 3 ( h 2 h 5 h 0 + h 3 ) , s 10 ( 6 ) = 3 ( h 0 + h 3 ) ( h 0 h 3 + h 4 h 1 + h 2 h 5 ) , s 11 ( 6 ) = 6 h 5 , s 12 ( 6 ) = 6 ( h 4 + h 5 ) , s 13 ( 6 ) = 6 ( h 3 h 4 ) , s 14 ( 6 ) = 6 h 4 , s 15 ( 6 ) = 6 h 5 ,
A 14 × 16 ( 6 ) = I 4 1 1 1 1 0 2 × 4 0 1 × 3 1 0 1 × 3 0 2 × 4 1 1 1 1 I 5 , A ^ 14 ( 6 ) = I 4 1 1 1 1 1 I 5 ,
A 11 × 14 ( 6 ) = 1 1 1 ( H 2 I 3 ) 1 1 1 1 1 1 ,   A ˘ 11 ( 6 ) = I 3 0 3 × 4 0 3 0 4 × 3 1 1 1 1 0 4 × 3 0 4 × 3 0 4 × 3 I 4 ,
Electronics 09 02115 i001
and sign “⊗” denotes tensor or Kronecker product of two matrices [23,24,25].
Figure 5 shows a data flow diagram of the proposed algorithm for the implementation of 6-point linear convolution.
In terms of arithmetic units, a fully parallel hardware implementation of the processor unit for calculating a 6-point linear convolution will require 16 multipliers, 32 two-input adders, and 5 three-input adders, instead of 36 multipliers, 2 two-input adders, 2 three-input adders, 2 four-input adders, 2 five-input adders, and 1 six-input adder in the case of completely parallel implementation of expression (18).

3.6. Algorithm for N = 7

Let X 7 × 1 = [ x 0 , x 1 , x 2 , x 3 , x 4 . x 5 , x 6 ] T and H 7 × 1 = [ h 0 , h 1 , h 2 , h 3 , h 4 , h 5 , h 6 ] T be 7-dimensional data vectors being convolved and Y 13 × 1 = [ y 0 , y 1 , y 2 , y 3 , y 4 , y 5 , y 6 , y 7 , y 8 , y 9 , y 10 , y 11 , y 12 ] T be an input vector representing a linear convolution for N = 7.
The problem is to calculate the product:
Y 13 × 1 = H 13 × 7 X 7 × 1 ,
where
H 13 × 7 = h 0 h 1 h 0 h 1 h 6 h 0 h 6 h 1 h 6 .
Direct computation of (20) takes 49 multiplications and 36 addition. We developed an algorithm that contains only 26 multiplications and 79 additions. It saves 23 multiplications at the cost of 43 extra additions compared to the ordinary matrix-vector multiplication method.
The proposed algorithm for computation 7-point linear convolution with reduced multiplicative complexity can be written using the following matrix-vector calculating procedure:
Y 13 × 1 ( 7 ) = A 13 × 26 ( 7 ) D 26 ( 7 ) A 26 × 7 ( 7 ) X 7 × 1 ,
where
A 13 × 26 ( 7 ) = A 13 × 15 ( 7 ) A 15 × 20 ( 7 ) A 20 × 21 ( 7 ) A 21 × 22 ( 7 ) A 22 × 25 ( 7 ) A 25 × 21 ( 7 ) A 21 ( 7 ) A 21 × 26 ( 7 ) ,
A 26 × 7 ( 7 ) = A 26 ( 7 ) A 26 × 28 ( 7 ) A 28 × 21 ( 7 ) A 21 × 18 ( 7 ) A 18 × 7 ( 7 )
and
A 18 × 7 ( 7 ) = 1 1 1 1 1 1 1 1 1 0 6 × 3 I 4 0 4 × 2 1 4 × 1 0 2 × 4 1 1 1 1 0 6 × 4 1 1 1 1 1 1 1 , A 21 × 18 ( 7 ) = I 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 I 5 ,
1 4 × 1 = [ 1 , 1 , 1 , 1 ] T ,
A 28 × 21 ( 7 ) = I 7 1 1 0 3 × 4 0 3 1 1 1 1 1 0 4 × 3 1 1 1 1 1 1 0 6 × 3 1 0 6 × 3 1 1 1 1 1 1 0 4 × 3 0 4 1 1 I 4 ,
A 26 × 28 ( 7 ) = I 10 1 1 1 1 1 1 1 1 0 6 1 1 1 1 1 1 1 1 I 8
A 26 ( 7 ) = I 5 1 1 1 1 1 1 1 1 0 6 0 7 1 1 1 1 1 1 1 1 I 8 ,
D 26 ( 7 ) = d i a g ( s 0 ( 7 ) , s 1 ( 7 ) , , s 25 ( 7 ) ) ,
s 0 ( 7 ) = h 0 ,   s 1 ( 7 ) = h 2 h 1 , s 2 ( 7 ) = h 0 h 1 , s 3 ( 7 ) = h 1 , s 4 ( 7 ) = h 0 , s 5 ( 7 ) = ( h 6 + h 5 + h 4 + h 3 + 2 h 2 + h 1 + h 0 ) / 7 , s 6 ( 7 ) = ( h 6 2 h 5 + 3 h 4 h 3 2 h 2 + h 1 + 2 h 0 ) / 2 , s 7 ( 7 ) = ( 2 h 4 h 3 2 h 2 + h 1 ) / 2 , s 8 ( 7 ) = ( h 6 + h 5 + 2 h 4 h 3 2 h 2 + 3 h 1 h 0 ) / 2 , s 9 ( 7 ) = ( 10 h 6 + 3 h 5 11 h 4 + 10 h 3 + 3 h 2 11 h 1 4 h 0 ) / 14 , s 10 ( 7 ) = ( 2 h 6 2 h 5 2 h 4 + 12 h 3 + 5 h 2 9 h 1 2 h 0 ) / 14 , s 11 ( 7 ) = ( 2 h 6 + 3 h 5 h 4 2 h 3 + 3 h 2 h 1 ) / 6 , s 12 ( 7 ) = ( 3 h 6 11 h 5 4 h 4 + 10 h 3 + 3 h 2 11 h 1 + 10 h 0 ) / 14 , s 13 ( 7 ) = ( 2 h 3 + 3 h 2 h 1 ) / 6 , s 14 ( 7 ) = ( 3 h 6 h 5 2 h 3 + 3 h 2 h 1 2 h 0 ) / 6 , s 15 ( 7 ) = ( h 6 + h 4 h 3 + h 1 ) / 6 , s 16 ( 7 ) = ( h 3 + h 1 ) / 6 , s 17 ( 7 ) = ( h 5 h 3 + h 1 h 0 ) / 6 , s 18 ( 7 ) = 2 h 6 h 5 2 h 4 + 3 h 3 2 h 2 2 h 1 + h 0 , s 19 ( 7 ) = 2 h 3 h 2 2 h 1 + h 0 , s 20 ( 7 ) = h 6 2 h 5 + h 4 + 2 h 3 h 2 2 h 1 + 3 h 0 , s 21 ( 7 ) = h 6 , s 22 ( 7 ) = h 4 h 5 , s 23 ( 7 ) = h 6 h 5 , s 24 ( 7 ) = h 5 , s 25 ( 7 ) = h 6 ,
A 21 × 26 ( 7 ) = I 6 1 1 1 1 1 1 0 3 × 6 0 2 × 9 1 1 1 1 1 1 1 1 1 1 0 3 × 6 0 2 × 9 1 1 1 1 I 5 ,
A 21 ( 7 ) = I 7 1 1 1 1 1 0 4 0 4 1 1 1 1 1 I 6 ,   A 25 × 21 ( 7 ) = I 7 1 1 1 1 1 1 1 1 0 6 × 4 0 6 × 4 1 1 1 1 1 1 1 I 6 ,
A 22 × 25 ( 7 ) = I 6 1 1 1 0 3 1 1 1 1 1 1 1 0 5 × 7 0 6 × 7 1 1 0 3 1 1 1 1 1 1 1 1 I 5 ,
A 21 × 22 ( 7 ) = I 6 1 1 1 1 1 1 1 1 0 5 0 5 × 6 1 1 1 1 1 1 I 5 ,   A 20 × 21 ( 7 ) = I 10 1 1 1 1 1 I 6 ,
A 15 × 20 ( 7 ) = 1 1 1 1 1 1 I 5 1 1 1 1 1 1 0 4 × 5 0 3 × 5 1 1 1 1 1 1 ,
A 13 × 15 ( 7 ) = I 3 0 3 × 4 0 3 × 5 0 3 0 4 × 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 3 0 3 × 4 0 3 0 3 × 5 I 3 ,
Figure 6 shows a data flow diagram of the proposed algorithm for the implementation of 7-point linear convolution.
In terms of arithmetic units, a fully parallel hardware implementation of the processor unit for calculating a 7-point linear convolution will require 27 multipliers, 49 two-input adders, 7 three-input adders, and 5 four-input adders, instead of 49 multipliers, 2 two-input adders, 2 three-input adders, 2 four-input adders, 2 five-input adders, 2 six-input adders, and 1 seven-input adder in the case of completely parallel implementation of expression (20).

3.7. Algorithm for N = 8

Let X 8 × 1 = [ x 0 , x 1 , x 2 , x 3 , x 4 . x 5 , x 6 , x 7 ] T and H 8 × 1 = [ h 0 , h 1 , h 2 , h 3 , h 4 , h 5 , h 6 , h 7 ] T be 8-dimensional data vectors being convolved and Y 15 × 1 = [ y 0 , y 1 , y 2 , y 3 , y 4 , y 5 , y 6 , y 7 , y 8 , y 9 , y 10 , y 11 , y 12 , y 13 , y 14 ] T be an input vector representing a linear convolution for N = 8.
The problem is to calculate the product:
Y 15 × 1 = H 15 × 8 X 8 × 1 ,
where
H 15 × 8 = h 0 h 1 h 0 h 1 h 7 h 0 h 7 h 1 h 7 .
Direct computation of (22) takes 64 multiplications and 49 addition. We developed an algorithm that contains only 27 multiplications and 67 additions. Thus, the proposed algorithm saves 22 multiplications at the cost of 18 extra additions compared to the ordinary matrix-vector multiplication method.
Proposed algorithm for computation 8-point linear convolution with reduced multiplicative complexity can be written using the following matrix-vector calculating procedure:
Y 15 × 1 = A 15 ( 8 ) A ^ 15 ( 8 ) A ˘ 15 ( 8 ) A 15 × 17 ( 8 ) A 17 × 27 ( 8 ) D 27 ( 8 ) A 27 × 17 ( 8 ) A 17 × 15 ( 8 ) A 15 × 8 ( 8 ) X 8 × 1
where
A 15 × 8 ( 8 ) = I 3 0 3 × 5 I 4 I 4 I 4 I 4 0 4 I 4 ,   A 17 × 15 ( 8 ) = I 3 ( H 2 I 2 ) I 2 0 2 0 2 I 2 I 2 I 2 I 4 ,
A 27 × 17 ( 8 ) = 1 1 1 1 1 1 H 2 I 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ,
D 27 ( 8 ) = d i a g ( s 0 ( 8 ) , s 1 ( 8 ) , . . . , s 27 ( 8 ) ) ,
s 0 ( 8 ) = h 0 , s 1 ( 8 ) = h 2 h 1 , s 2 ( 8 ) = h 0 h 1 , s 3 ( 8 ) = h 1 , s 4 ( 8 ) = h 0 , s 5 ( 8 ) = 1 8 ( h 0 + h 1 + h 2 + h 3 + h 4 + h 5 + h 6 + h 7 ) , s 6 ( 8 ) = 1 8 ( h 0 h 1 + h 2 h 3 + h 4 h 5 + h 6 h 7 ) , s 7 ( 8 ) = 1 4 ( h 0 + h 1 + h 2 h 3 h 4 + h 5 + h 6 h 7 ) , s 8 ( 8 ) = 1 4 ( h 0 h 1 + h 2 + h 3 h 4 h 5 + h 6 + h 7 ) , s 9 ( 8 ) = 1 4 ( h 0 h 2 + h 4 h 6 ) , s 10 ( 8 ) = 1 2 ( h 0 h 1 h 2 + h 3 h 4 + h 5 + h 6 h 7 ) , s 11 ( 8 ) = 1 2 ( h 0 + h 1 h 2 + h 3 h 4 h 5 + h 6 h 7 ) , s 12 ( 8 ) = 1 2 ( h 0 + h 2 + h 4 h 6 ) , s 13 ( 8 ) = 1 2 ( h 0 h 1 + h 2 h 3 h 4 + h 5 h 6 + h 7 ) , s 14 ( 8 ) = 1 2 ( h 0 h 1 + h 2 + h 3 h 4 + h 5 h 6 h 7 ) , s 15 ( 8 ) = 1 2 ( h 0 h 2 + h 4 + h 6 ) , s 16 ( 8 ) = 1 2 ( h 0 + h 1 + h 4 h 5 ) , s 17 ( 8 ) = 1 2 ( h 0 h 3 + h 4 + h 7 ) , s 18 ( 8 ) = 1 2 ( h 0 h 4 ) , s 19 ( 8 ) = h 4 h 6 , s 20 ( 8 ) = 1 2 ( h 5 + h 6 ) , s 21 ( 8 ) = 1 2 ( h 6 h 5 ) , s 22 ( 8 ) = h 5 h 7 , s 23 ( 8 ) = h 7 , s 24 ( 8 ) = h 6 , s 25 ( 8 ) = h 7 , s 26 ( 8 ) = h 7 ,
A 17 × 27 ( 8 ) = 1 1 1 1 1 1 H 2 I 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ,
A 15 × 17 ( 8 ) = I 3 ( H 2 I 2 ) 0 2 I 2 I 2 I 2 0 2 I 2 I 4 ,   A ˘ 15 ( 8 ) = I 3 ( H 2 I 4 ) I 4 ,
A ^ 15 ( 8 ) = I 3 0 5 × 3 I 5 I 3 0 3 × 5 I 4 ,   A 15 ( 8 ) = I 7 0 3 × 4 ( I 4 ) 1 1 1 I 4 I 8 .
Figure 7 shows a data flow diagram of the proposed algorithm for the implementation of 8-point linear convolution.
In terms of arithmetic units, a fully parallel hardware implementation of the processor unit for calculating a 8-point linear convolution will require 27 multipliers, 57 two-input adders, 4 three-input adders and 1 four-input adder, instead of 64 multipliers, 2 two-input adders, 2 three-input adders, 2 four-input adders, 2 five-input adders, 2 six-input adders, 2 seven-point adders and 1 eight-input adder in the case of completely parallel implementation of expression (22).

4. Implementation Complexity

Since the lengths of the input sequences are relatively small, and the data flow graphs representing the organization of the computation process are fairly simple, it is easy to estimate the implementation complexity of the proposed solutions. Table 1 shows estimates of the number of arithmetic blocks for the fully parallel implementation of the short lengths linear convolution algorithms. Since a parallel N-input adder consists of N-1 two-input adders, we give integrated estimates of the implementing costs of the sets of adders for each proposed solution expressed as the sums of two-input adders. The penultimate column of the Table 1 shows the percentage reduction in the number of multipliers, while the last column shows the percentage increase in the number of adders. As you can see, the implementation of the proposed algorithms requires fewer multipliers than the implementation based on naive methods of performing the linear convolution operations.
It should be noted that our solutions are primarily focused on efficient implementation in application specific integrated circuits (ASICs). In low-power designing low-power digital circuits, optimization must be performed both at the algorithmic level and at the logic level. From the point of view of designing an ASIC-chip that implements fast linear convolution, you should pay attention to the fact that the hardwired multiplier is a very resource-intensive arithmetic unit. The multiplier is also the most energy-intensive arithmetic unit, occupying a large crystal area [26] and dissipating a lot of energy [27]. Reducing the number of multipliers is especially important in the design of specialized fully parallel ASIC-based processors because minimizing the number of necessary multipliers reduces power dissipation and lowers the cost implementation of the entire system being implemented. It is proved that the implementation complexity of a hardwired multiplier grows quadratically with operand size, while the hardware complexity of a binary adder increases linearly with operand size [28]. Therefore, a reduction in the number of multipliers, even at the cost of a small increase in the number of adders, has a significant role in the ASIC-based implementation of the algorithm. Thus, it can be argued categorically that algorithmic solutions that require fewer hardware multipliers in an ASIC-based implementation are better than those that require more embedded multipliers.
This statement is also true for field-programmable gate array (FPGA)-based implementations. Most modern high-performance FPGAs contain a number of built-in multipliers. This means that instead of implementing the multipliers with a help of a set of conventional logic gates, you can use the hardwired multipliers embedded in the FPGA. Thus, all multiplications contained in a fully parallel algorithm can be efficiently implemented using these embedded multipliers; however, their number may not be enough to meet the requirements of a fully parallel implementation of the algorithm. So, the developer uses the embedded multipliers to implement the multiplication operations until all of the multipliers built into the chip have been used. If the embedded multipliers available in the FPGA run out, the developer will be forced to use ordinary logic gates instead. This will lead to significant difficulties in the design and implementation of the computing unit. Therefore, the problem of reducing the number of multiplications in fully parallel hardware-oriented algorithms is critical. It is clear that you can go the other way—use a more complex FPGA chip from the same or another family, which contains a larger number of embedded multipliers; however, it should be remembered that the hardwired multiplier is a very resource-intensive unit. The multiplier is the most resource-intensive and energy-consuming arithmetic unit, occupying a large area of the chip and dissipating a lot of power; therefore, the use of complex and resource-intensive FPGAs containing a large number of multipliers without a special need is impractical.
Table 2 shows FPGA devices of the Spartan-3 family, in which the number of hardwired multipliers allows one to implement the linear convolution operation in a single chip. So, for example, a 4-point convolution implemented using our proposed algorithm can be implemented using a single Spartan XC3S200 device, while a 4-point convolution implemented using a naive method requires a more voluminous Spartan XC3S400 device. A 5-point convolution implemented using our proposed algorithm can be implemented using a single Spartan XC3S200A chip, while a 5-point convolution implemented using a naive method requires a more voluminous Spartan XC3S1500A chip, and so on.
Thus, the hardware implementation of our algorithms requires fewer hardware multipliers than the implementation of naive calculation methods, all other things being equal. Taking into account the previously listed arguments, this proves their effectiveness.

5. Conclusions

In this paper, we analyzed possibilities to reduce the multiplicative complexity of calculating the linear convolutions for small length input sequences. We also synthesized new algorithms for implementing these operations for N = 3, 4, 5, 6, 7, and 8. Using these algorithms reduces the computational complexity of linear convolution, thus reducing its hardware implementation complexity too. In addition, as can be seen from Figure 1, Figure 2, Figure 3, Figure 4, Figure 5, Figure 6 and Figure 7, the proposed algorithms have a pronounced parallel modular structure. This simplifies the mapping of the algorithms into an ASIC structure and unifies its implementation in FPGAs. Thus, the acceleration of computations during the implementation of these algorithms can also be achieved due to the parallelization of the computation processes.

Author Contributions

Conceptualization, A.C.; methodology, A.C.; validation, J.P.P.; formal analysis, A.C. and J.P.P.; writing—original draft preparation, A.C.; writing—review and editing, J.P.P.; visualization, A.C. and J.P.P.; supervision, A.C. and J.P.P. Both authors have read and agreed to the published version of the manuscript.

Funding

This research received no external funding.

Conflicts of Interest

The authors declare no conflict of interest.

References

  1. Blahut, R.E. Fast Algorithms for Signal Processing; Cambridge University Press: Cambridge, UK, 2010. [Google Scholar]
  2. Tolimieri, R.; An, M.; Lu, C. Algorithms for Discrete Fourier Transform and Convolution; Springer Science & Business Media: New York, NY, USA, 1989. [Google Scholar]
  3. McClellan, J.H.; Rader, C.M. Number Theory in Digital Signal Processing; Prentice-Hall: Englewood Cliffs, NJ, USA, 1979. [Google Scholar]
  4. Berg, L.; Nussbaumer, H. Fast Fourier Transform and Convolution Algorithms. Z. fur Angew. Math. Und Mech. 1982, 62, 282. [Google Scholar] [CrossRef]
  5. Burrus, C.S.; Parks, T. Convolution Algorithms; John Wiley and Sons: New York, NY, USA, 1985. [Google Scholar]
  6. Krishna, H. Digital Signal Processing Algorithms: Number Theory, Convolution, Fast Fourier Transforms, and Applications; Routledge: New York, NY, USA, 2017. [Google Scholar]
  7. Bi, G.; Zeng, Y. Transforms and Fast Algorithms for Signal Analysis and Representations; Springer Science & Business Media: New York, NY, USA, 2004. [Google Scholar]
  8. Mallat, S.G. A theory for multiresolution signal decomposition: The wavelet representation. IEEE Trans. Pattern Anal. Mach. Intell. 1989, 11, 674–693. [Google Scholar] [CrossRef] [Green Version]
  9. Parhi, K.K. VLSI Digital Signal Processing Systems: Design and Implementation; John Wiley & Sons: New York, NY, USA, 2007. [Google Scholar]
  10. Chan, Y.H.; Siu, W.C. General approach for the realization of DCT/IDCT using convolutions. Signal Process. 1994, 37, 357–363. [Google Scholar] [CrossRef]
  11. Huang, T.S. Two-dimensional digital signal processing II. Transforms and median filters. In Two-Dimensional Digital Signal Processing II. Transforms and Median Filters; Topics in Applied Physics; Springer: Berlin/Heidelberg, Germany, 1981; Volume 43. [Google Scholar]
  12. Pratt, W.K. Digital Image Processing; John Wiley & Sons: Hoboken, NJ, USA, 2007. [Google Scholar]
  13. Wolberg, G.; Massalin, H. A fast algorithm for digital image scaling. In Communicating with Virtual Worlds; Springer: Tokyo, Japan, 1993; pp. 526–539. [Google Scholar]
  14. Krizhevsky, A.; Sutskever, I.; Hinton, G.E. Imagenet classification with deep convolutional neural networks. Commun. ACM 2017, 60, 84–90. [Google Scholar] [CrossRef]
  15. Mathieu, M.; Henaff, M.; LeCun, Y. Fast training of convolutional networks through ffts. arXiv 2013, arXiv:1312.5851. [Google Scholar]
  16. Lin, S.; Liu, N.; Nazemi, M.; Li, H.; Ding, C.; Wang, Y.; Pedram, M. FFT-based deep learning deployment in embedded systems. In Proceedings of the 2018 Design, Automation & Test in Europe Conference & Exhibition (DATE), Dresden, Germany, 19–23 March 2018; pp. 1045–1050. [Google Scholar]
  17. Abtahi, T.; Shea, C.; Kulkarni, A.; Mohsenin, T. Accelerating convolutional neural network with fft on embedded hardware. IEEE Trans. Very Large Scale Integr. (VLSI) Syst. 2018, 26, 1737–1749. [Google Scholar] [CrossRef]
  18. Lavin, A.; Gray, S. Fast algorithms for convolutional neural networks. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, Las Vegas, NV, USA, 27–30 June 2016; pp. 4013–4021. [Google Scholar]
  19. Wang, X.; Wang, C.; Zhou, X. Work-in-progress: WinoNN: Optimising FPGA-based neural network accelerators using fast winograd algorithm. In Proceedings of the 2018 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ ISSS), Turin, Italy, 30 September–5 October 2018; pp. 1–2. [Google Scholar]
  20. Cariow, A.; Cariowa, G. Minimal Filtering Algorithms for Convolutional Neural Networks. arXiv 2020, arXiv:2004.05607. [Google Scholar]
  21. Wang, Y.; Parhi, K. Explicit Cook-Toom algorithm for linear convolution. In Proceedings of the 2000 IEEE International Conference on Acoustics, Speech, and Signal Processing, Istanbul, Turkey, 5–9 June 2000; Volume 6, pp. 3279–3282. [Google Scholar]
  22. Ju, C.; Solomonik, E. Derivation and Analysis of Fast Bilinear Algorithms for Convolution. arXiv 2019, arXiv:1910.13367. [Google Scholar]
  23. Cariow, A. Strategies for the Synthesis of Fast Algorithms for the Computation of the Matrix-vector Products. J. Signal Process. Theory Appl. 2014, 3, 1–19. [Google Scholar] [CrossRef]
  24. Regalia, P.A.; Sanjit, M.K. Kronecker products, unitary matrices and signal processing applications. SIAM Rev. 1989, 31, 586–613. [Google Scholar] [CrossRef]
  25. Granata, J.; Conner, M.; Tolimieri, R. The tensor product: A mathematical programming language for FFTs and other fast DSP operations. IEEE Signal Process. Mag. 1992, 9, 40–48. [Google Scholar] [CrossRef]
  26. Wong, H.; Betz, V.; Rose, J. Comparing FPGA vs. custom CMOS and the impact on processor microarchitecture. In Proceedings of the 19th ACM/SIGDA International Symposium on Field Programmable Gate Arrays, Monterey, CA, USA, 27 February–1 March 2011; pp. 5–14. [Google Scholar]
  27. Jhamb, M.; Lohani, H. Design, implementation and performance comparison of multiplier topologies in power-delay space. Eng. Sci. Technol. Int. J. 2016, 19, 355–363. [Google Scholar] [CrossRef] [Green Version]
  28. Oudjida, A.K.; Chaillet, N.; Berrandjia, M.L.; Liacha, A. A new high radix-2r (r ≥ 8) multibit recoding algorithm for large operand size (N ≥ 32) multipliers. J. Low Power Electron. 2013, 9, 50–62. [Google Scholar] [CrossRef] [Green Version]
Figure 1. The signal flow graph of the proposed algorithm for computation of 2-point linear convolution.
Figure 1. The signal flow graph of the proposed algorithm for computation of 2-point linear convolution.
Electronics 09 02115 g001
Figure 2. The signal flow graph of the proposed algorithm for computation of 3-point linear convolution.
Figure 2. The signal flow graph of the proposed algorithm for computation of 3-point linear convolution.
Electronics 09 02115 g002
Figure 3. The signal flow graph of the proposed algorithm for computation of 4-point linear convolution.
Figure 3. The signal flow graph of the proposed algorithm for computation of 4-point linear convolution.
Electronics 09 02115 g003
Figure 4. The signal flow graph of the proposed algorithm for computation of 5-point linear convolution.
Figure 4. The signal flow graph of the proposed algorithm for computation of 5-point linear convolution.
Electronics 09 02115 g004
Figure 5. The signal flow graph of the proposed algorithm for computation of 6-point linear convolution.
Figure 5. The signal flow graph of the proposed algorithm for computation of 6-point linear convolution.
Electronics 09 02115 g005
Figure 6. The signal flow graph of the proposed algorithm for computation of 7-point linear convolution.
Figure 6. The signal flow graph of the proposed algorithm for computation of 7-point linear convolution.
Electronics 09 02115 g006
Figure 7. The signal flow graph of the proposed algorithm for computation of 8-point linear convolution.
Figure 7. The signal flow graph of the proposed algorithm for computation of 8-point linear convolution.
Electronics 09 02115 g007
Table 1. Implementation complexities of naïve method and proposed solutions.
Table 1. Implementation complexities of naïve method and proposed solutions.
Length N Number of Arithmetical Units (Multipliers — “×” and Adders — “+”)
Naïve MethodProposed SolutionsPercentage Stimate
“×”“+”“×”“+”“×"“+”
2413325%66.7%
39461033.3%60%
416992043.8%55%
52516163857.9%66%
63625164455.6%43.2%
74936267947%54.4%
86449276758%26.9%
Table 2. The possibility of implementation the naive method and proposed solution on the field-programmable gate array (FPGA) devices of the Spartan-3 family.
Table 2. The possibility of implementation the naive method and proposed solution on the field-programmable gate array (FPGA) devices of the Spartan-3 family.
Length N Features of the Implementation in Spartan-3 Family Devices
Naïve MethodProposed Solutions
Type of DeviceType of Device
2XC3S50XC3S50AN
3XC3S200XC3S200
4XC3S400XC3S200
5XC3S1400ANXC3S200AN
6XC3S2000XC3S200
7XC3S4000XC3S1400AN
Sample Availability: Samples of the compounds are available from the authors.
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Share and Cite

MDPI and ACS Style

Cariow, A.; Paplinski, J.P. Some Algorithms for Computing Short-Length Linear Convolution. Electronics 2020, 9, 2115. https://doi.org/10.3390/electronics9122115

AMA Style

Cariow A, Paplinski JP. Some Algorithms for Computing Short-Length Linear Convolution. Electronics. 2020; 9(12):2115. https://doi.org/10.3390/electronics9122115

Chicago/Turabian Style

Cariow, Aleksandr, and Janusz P. Paplinski. 2020. "Some Algorithms for Computing Short-Length Linear Convolution" Electronics 9, no. 12: 2115. https://doi.org/10.3390/electronics9122115

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop