Skip to content Skip to navigation

Connexions

You are here: Home » Content » Block, Multi-rate, Multi-dimensional Processing and Distributed Arithmetic

Navigation

Content Actions

  • Download module PDF
  • Add to ...
    Add the module to:
    • My Favorites
    • A lens
    • An external social bookmarking service
    • My Favorites (What is 'My Favorites'?)
      'My Favorites' is a special kind of lens which you can use to bookmark modules and collections directly in Connexions. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need a Connexions account to use 'My Favorites'.
    • A lens (What is a lens?)

      Definition of a lens

      Lenses

      A lens is a custom view of Connexions content. You can think of it as a fancy kind of list that will let you see Connexions through the eyes of organizations and people you trust.

      What is in a lens?

      Lens makers point to Connexions materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

      Who can create a lens?

      Any individual Connexions member, a community, or a respected organization.

    • External bookmarks
  • E-mail the author

Recently Viewed

This feature requires Javascript to be enabled.

Block, Multi-rate, Multi-dimensional Processing and Distributed Arithmetic

Module by: C. Sidney Burrus

Introduction

The partitioning of long or infinite strings of data into shorter sections or blocks has been used to allow application of the FFT to realize on-going or continuous convolution Entry 40, Entry 25. These notes develop the idea of block processing and shows that it is a generalization of the overlap-add and overlap-save methods Entry 40, Entry 22. They further generalize the idea to a multidimensional formulation of convolution Entry 1, Entry 10. Moving in the opposite direction, it is shown that, rather than partitioning a string of scalars into blocks and then into blocks of blocks, one can partition a scalar number into blocks of bits and then include the operation of multiplication in the signal processing formulation. This is called distributed arithmetic Entry 9 and, since it describes operations at the bit level, is completely general. These notes try to present a coherent development of these ideas.

Block Signal Processing

In this section the usual convolution and recursion that implements FIR and IIR discrete-time filters are reformulated in terms of vectors and matrices. Because the same data is partitioned and grouped in a variety of ways, it is important to have a consistent notation in order to be clear. The nthnth element of a data sequence is expressed h(n)h(n) or, in some cases to simplify, hnhn. A block or finite length column vector is denoted h̲nh̲n with nn indicating the nthnth block or section of a longer vector. A matrix, square or rectangular, is indicated by an upper case letter such as HH with a subscript if appropriate.

Block Convolution

The operation of a finite impulse response (FIR) filter is described by a finite convolution as

y ( n ) = k = 0 L - 1 h ( k ) x ( n - k ) y ( n ) = k = 0 L - 1 h ( k ) x ( n - k ) (1)

where x(n)x(n) is causal, h(n)h(n) is causal and of length LL, and the time index nn goes from zero to infinity or some large value. With a change of index variables this becomes

y ( n ) = k = 0 n h ( n - k ) x ( k ) y ( n ) = k = 0 n h ( n - k ) x ( k ) (2)

which can be expressed as a matrix operation by

y 0 y 1 y 2 = h 0 0 0 0 h 1 h 0 0 h 2 h 1 h 0 x 0 x 1 x 2 . y 0 y 1 y 2 = h 0 0 0 0 h 1 h 0 0 h 2 h 1 h 0 x 0 x 1 x 2 . (3)

The HH matrix of impulse response values is partitioned into NN by NN square sub matrices and the XX and YY vectors are partitioned into length-NN blocks or sections. This is illustrated for N=3N=3 by

H 0 = h 0 0 0 h 1 h 0 0 h 2 h 1 h 0 H 1 = h 3 h 2 h 1 h 4 h 3 h 2 h 5 h 4 h 3 etc. H 0 = h 0 0 0 h 1 h 0 0 h 2 h 1 h 0 H 1 = h 3 h 2 h 1 h 4 h 3 h 2 h 5 h 4 h 3 etc. (4)
x ̲ 0 = x 0 x 1 x 2 x ̲ 1 = x 3 x 4 x 5 y ̲ 0 = y 0 y 1 y 2 etc. x ̲ 0 = x 0 x 1 x 2 x ̲ 1 = x 3 x 4 x 5 y ̲ 0 = y 0 y 1 y 2 etc. (5)

Substituting these definitions into (Equation 3) gives

y ̲ 0 y ̲ 1 y ̲ 2 = H 0 0 0 0 H 1 H 0 0 H 2 H 1 H 0 x ̲ 0 x ̲ 1 x ̲ 2 y ̲ 0 y ̲ 1 y ̲ 2 = H 0 0 0 0 H 1 H 0 0 H 2 H 1 H 0 x ̲ 0 x ̲ 1 x ̲ 2 (6)

The general expression for the nthnth output block is

y ̲ n = k = 0 n H n - k x ̲ k y ̲ n = k = 0 n H n - k x ̲ k (7)

which is a vector or block convolution. Since the matrix-vector multiplication within the block convolution is itself a convolution, (Equation 8) is a sort of convolution of convolutions and the finite length matrix-vector multiplication can be carried out using the FFT or other fast convolution methods.

The equation for one output block can be written as the product

y ̲ 2 = H 2 H 1 H 0 x ̲ 0 x ̲ 1 x ̲ 2 y ̲ 2 = H 2 H 1 H 0 x ̲ 0 x ̲ 1 x ̲ 2 (8)

and the effects of one input block can be written

H 0 H 1 H 2 x ̲ 1 = y ̲ 0 y ̲ 1 y ̲ 2 . H 0 H 1 H 2 x ̲ 1 = y ̲ 0 y ̲ 1 y ̲ 2 . (9)

These are generalize statements of overlap save and overlap add Entry 40, Entry 22. The block length can be longer, shorter, or equal to the filter length.

Block Recursion

Although less well-known, IIR filters can be implemented with block processing Entry 20, Entry 12, Entry 42, Entry 7, Entry 8. The block form of an IIR filter is developed in much the same way as for the block convolution implementation of the FIR filter. The general constant coefficient difference equation which describes an IIR filter with recursive coefficients alal, convolution coefficients bkbk, input signal x(n)x(n), and output signal y(n)y(n) is given by

y ( n ) = l = 1 N - 1 a l y n - l + k = 0 M - 1 b k x n - k y ( n ) = l = 1 N - 1 a l y n - l + k = 0 M - 1 b k x n - k (10)

using both functional notation and subscripts, depending on which is easier and clearer. The impulse response h(n)h(n) is

h ( n ) = l = 1 N - 1 a l h ( n - l ) + k = 0 M - 1 b k δ ( n - k ) h ( n ) = l = 1 N - 1 a l h ( n - l ) + k = 0 M - 1 b k δ ( n - k ) (11)

which can be written in matrix operator form

1 0 0 0 a 1 1 0 a 2 a 1 1 a 3 a 2 a 1 0 a 3 a 2 h 0 h 1 h 2 h 3 h 4 = b 0 b 1 b 2 b 3 0 1 0 0 0 a 1 1 0 a 2 a 1 1 a 3 a 2 a 1 0 a 3 a 2 h 0 h 1 h 2 h 3 h 4 = b 0 b 1 b 2 b 3 0 (12)

In terms of NN by NN submatrices and length-NN blocks, this becomes

A 0 0 0 0 A 1 A 0 0 0 A 1 A 0 h ̲ 0 h ̲ 1 h ̲ 2 = b ̲ 0 b ̲ 1 0 A 0 0 0 0 A 1 A 0 0 0 A 1 A 0 h ̲ 0 h ̲ 1 h ̲ 2 = b ̲ 0 b ̲ 1 0 (13)

From this formulation, a block recursive equation can be written that will generate the impulse response block by block.

A 0 h ̲ n + A 1 h ̲ n - 1 = 0 for n 2 A 0 h ̲ n + A 1 h ̲ n - 1 = 0 for n 2 (14)
h ̲ n = - A 0 - 1 A 1 h ̲ n - 1 = K h ̲ n - 1 for n 2 h ̲ n = - A 0 - 1 A 1 h ̲ n - 1 = K h ̲ n - 1 for n 2 (15)

with initial conditions given by

h ̲ 1 = - A 0 - 1 A 1 A 0 - 1 b ̲ 0 + A 0 - 1 b ̲ 1 h ̲ 1 = - A 0 - 1 A 1 A 0 - 1 b ̲ 0 + A 0 - 1 b ̲ 1 (16)

This can also be written to generate the square partitions of the impulse response matrix by

H n = K H n - 1 for n 2 H n = K H n - 1 for n 2 (17)

with initial conditions given by

H 1 = K A 0 - 1 B 0 + A 0 - 1 B 1 H 1 = K A 0 - 1 B 0 + A 0 - 1 B 1 (18)

ane K=-A0-1A1K=-A0-1A1. This recursively generates square submatrices of HH similar to those defined in (Equation 4) and (Equation 6) and shows the basic structure of the dynamic system.

Next, we develop the recursive formulation for a general input as described by the scalar difference equation (Equation 11) and in matrix operator form by

1 0 0 0 a 1 1 0 a 2 a 1 1 a 3 a 2 a 1 0 a 3 a 2 y 0 y 1 y 2 y 3 y 4 = b 0 0 0 0 b 1 b 0 0 b 2 b 1 b 0 0