5.1 INTRODUCTION
Unfolding is a transformation technique that can be applied to a DSP program to create a new program describing more than one iteration of the original program. More specifically, unfolding a DSP program by the unfolding factor J creates a new program that describes J consecutive iterations of the original program. Unfolding is also referred to as loop unrolling and has been used in compiler theory [1].
For example, consider the DSP program
![]()
for n = 0 to ∞, which is shown in Fig. 5.1(a). Replacing the index n with 2k results in y(2k) = ay(2k − 9) + x(2k) for k = 0 to ∞. Similarly, replacing the index n with 2k + 1 results in y(2k + 1) = ay(2k − 8) + x(2k + 1) for k = 0 to ∞. Together, the 2 equations
![]()
describe the same program as (5.1). The program in (5.2) describes 2 consecutive iterations of the program in (5.1). For example, for k = 7, the equations in (5.2) are y(14) = ay(5) + x(14) and y(15) = ay(6) + x(15). These equations are the same as those described in (5.1) for the 2 consecutive iterations n = 14 and n = 15. The program in (5.2) describes a 2-unfolded version of the program in (5.1).

Fig. 5.1 (a) The original DSP program describing y(n) = ay(n − 9) ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access