Processor: Not Relevant
Submitted by kadhiem Ayob on Oct 22 2011
Licensed under a Creative Commons Attribution 3.0 Unported License
Complex FIR filtering of complex input requires 4 multipliers per tap. It is possible to reduce that to 3 at the expense of extra adder/two subtractors. This can be verified by simple algebra, as follows:
(A+jB)(C+jD) = AC-BD + j(AD+BC)
Add BC-BC to the real term: AC-BD = AC-BD + BC-BC
= B(C-D) - C(B-A)
Add AC-AC to the imaginary term: AD+BC = AD+BC + AC-AC
= A(C+D) + C(B-A)
Thus, the term C*(B-A) is shared between real and imaginary outputs. The new structure is made up of three subfilters. The code below describes and verifies the structure functionality and can be modified into bit true model.
Additionally, if your design can run at three times the speed of input then you can time fold the three subfilters neatly.