1.4. ORGANIZATION OF CHAPTERS 7
with the overflow problem. is lab experiment involves running an FIR filter on a smartphone
using fixed-point arithmetic. 16 bits are used to quantize the double precision floating-point fil-
ter coefficients generated by a filter design package. Due to quantization, the frequency response
of the filter is affected. e quantization word length can be adjusted in the settings menu and
the deviation of the frequency response magnitude can be observed in a graph displayed auto-
matically in the user interface. e settings menu allows the user to alter the quantization bits
to examine the deviation of the frequency response from the frequency response of the floating-
point implementation. In addition, due to quantization, overflows may occur depending on the
number of coefficients. is experiment shows how scaling can be used to overcome overflows
by scaling down input samples and scaling back up output samples generated by the filter.
Chapters 6 and 7 discuss common filters used in digital signal processing applications.
Lab L6 in Chapter 6 covers FIR (finite impulse response) filtering and Lab L7 in Chapter 7
shows how adaptive filtering can be used to perform system identification. e experiment in
Lab L7 exhibits adaptive filtering where an adaptive FIR filter based on the least mean squares
(LMS) coefficient update is implemented to match the output of an IIR (infinite impulse re-
sponse) filter. e error between the output of the adaptive FIR filter and the IIR filter for an
input signal is measured and displayed on the smartphone screen in real-time as the app runs.
Over time the error between the two outputs converges toward zero. e user can experiment
with the rate of convergence by altering the adaptive filter order through the settings menu with-
out needing to recompile the code. As the filter order is increased, it can be observed that the
convergence rate also increases. e drawback of increasing the filter order, that is an increase
in the processing time, can also be observed. is experiment allows one to see how a tradeoff
between convergence rate and real-time throughput can be established.
Chapter 8 covers frequency domain transforms and their implementation using frame-
based processing. Lab L8 explores the computational complexity of Fourier transform algo-
rithms and shows the utilization of Fourier transform for solving linear systems. e first part
of this lab experiment compares the computational complexity of discrete Fourier transform
(DFT) and fast Fourier transform (FFT) by first computing the DFT directly, having the com-
putational complexity of O.N
2
/, and then via FFT, having the computational complexity of
O.N log N /. In the second part of this lab, a filter is implemented in the frequency domain by
using Fourier transform three times. Frequency domain filtering is done by complex multipli-
cation between two transformed signals. is approach is observed to be more computationally
efficient than convolution when the length of the filter is made long.
Code efficiency issues are addressed in Chapter 9, in which optimization techniques, as
well as the use of intrinsics to access hardware features of the ARM processor, are discussed.
Lab L9 in this chapter provides a walkthrough of optimization techniques and their impact
on a signal processing app. In this lab experiment, the steps one can take to speed up code
execution on a smartphone target are covered. ese steps include changing compiler settings,
writing efficient C code, and using architecture-specific functions for the ARM processor. e