element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
FPGA
  • Technologies
  • More
FPGA
Blog The Art of FPGA Design Season 2 Post 26
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join FPGA to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: fpgaguru
  • Date Created: 11 Aug 2025 1:11 AM Date Created
  • Views 447 views
  • Likes 8 likes
  • Comments 1 comment
Related
Recommended

The Art of FPGA Design Season 2 Post 26

fpgaguru
fpgaguru
11 Aug 2025

Linear Phase IIR Filters? Part 2

The forward-backward method of turning any non-linear phase IIR into a "linear phase" one at a much lower hardware cost than the classic linear phase FIR implementation I showed in the previous blog post works great if you do not mind the large increase in latency. But what can be done if only approximate linear phase is needed but with a much lower latency? 

Well, LWDF IIR filters can do that too. Remember that such a filter has an architecture like this: 

image

It works by choosing coefficients in such a way so the phases of the two branches match each other very well in the pass band but are offset by 180 degrees in the stop band. The trick for achieving almost linear phase is to force every single coefficient in the odd branch to zero, then it effectively becomes a 2*K-1 delay and all delays have a linear phase transfer function. The even branch will be forced now to be very close to linear phase by constraining the pass band amplitude ripple - the less ripple you have, the closer the phase in the frequency band will be to linear. 

Of course, there are no filters with a perfectly flat pass band, IIR or otherwise, so the phase of the resulting filter, which is the average of the phases of the two branches, will be almost linear. We can get as close as we want with a higher order filter but only in an asymptotic sense. And there is a price to be paid too, these "linear phase" IIRs have at least twice the order of non-linear Cauer (Elliptic) filters with similar amplitude transfer functions. Depending on the order of the FIR we want to replace (the larger the better) and the group delay ripple (the lower the harder it becomes), significant savings relative to a direct equiripple FIR implementation are still possible. 

This type of filters is very well explained in fred harris's book Multirate Signal Processig for Communication Systrems, Second Edition which I highly recommended. The best $50 you can ever spend if you are into DSP. Chapter 11, Recursive Polyphase Filters is dedicated to this very subject. It even provides a Matlab tool to design such filters, and I used it to create a "linear phase" version of the second example IIR filter from Post 24. The specs were FS=1000MHz, f_p=240MHz, a_p<0.1mdB, f_s=260MHz and a_s=100dB. An Elliptic bireciprocal IIR filter of order 21, that used 10 multiplications met these requirements but its phase was highly non-linear. The equivalent equiripple half-band FIR design had of course linear phase but its order was N=303 and required 76 multipliers. 

Rather than designing a single "linear phase" IIR filter with these specs, it is easier to design the square root filter and cascade two such filters. So here are the settings for a filter with half the passband ripple and half the stop band attenuation, which can be implemented with 24 multiplications. Here is the stop band transfer function: 

image

the pass band ripple: 

image

and the pass band group delay ripple: 

image

The transfer function of the two cascaded filters is: 

image

 the pass band ripple also meets the specs: 

image

and this is the group delay ripple: 

image

The final design uses 48 multipliers, this is still 1.58x smaller than the equivalent FIR. 

In conclusion, if the extra latency of the forward-backward method is unacceptable but some group delay ripple can be tolerated, there is a second way to address the problem of the high phase non-linearity of IIR filters. 

Back to the top: The Art of FPGA Design Season 2

  • Sign in to reply
  • DAB
    DAB 20 days ago

    Nicely done.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube