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 27
  • 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: 18 Aug 2025 2:12 AM Date Created
  • Views 374 views
  • Likes 8 likes
  • Comments 2 comments
  • xilinx
  • fpgafeatured
  • fpga
  • dsp
  • guest writer
Related
Recommended

The Art of FPGA Design Season 2 Post 27

fpgaguru
fpgaguru
18 Aug 2025

Linear Phase IIR Filters? Part 3

Finally, the third and probably most efficient, but also least known and used way to achieve near linear phase IIR filters is the object of this post. 

Absolute linear phase, or equivalently constant group delay, is an expensive design requirement, which explains the huge difference in filter order between a linear phase FIR and a non-linear phase IIR that have otherwise similar amplitude transfer functions. Linear phase in the pass band might be important for many applications, but linear phase in the transition band probably isn't and linear phase in the stop band most certainly is not. Yet, all FIR filters use lots of resources to achieve absolute linear phase everywhere, when approximate linear phase only in the pass band would be good enough. 

Even the two almost linear phase solutions I presented so for are not ideal, the forward-backward technique is almost linear phase everywhere, while the "linear phase" LWDF architecture with one of the two branches a pure delay is close to linear in the pass and stop bands but not in the transition band. Both are sub-optimal if linear phase in the pass band is what matters. One would expect that a filter with only a strict pass band linear phase ripple would be even more efficient, yet I am not aware of any filter design package that would help with that task.

The idea is pretty simple, use a non-linear phase LWDF IIR filter to achieve the amplitude pass band and stop band requirements, ignoring the phase for now. A Cauer (Elliptic) equiripple filter has the smallest possible order that meets given requirements and can be 10x to 40x smaller that the equivalent FIR filter. 

Yes, the pass band phase of this LWDF IIR filter is highly non-linear but if we only had a correction filter that would leave the amplitude untouched and change the phase making it close to linear only in the frequency range of interest, i.e. the pass band, we could solve this problem. But wait, we do have exactly that, this is an all-pass filter and cascading first and second order all-pass sections with the right coefficients and packing factors can in theory produce any phase transfer function we want, including one that would compensate the non-linearity of the original IIR filter! 

Of course, the phase would never be absolutely linear, there will always be some ripple, but by using enough all-pass sections we could get as close as we wanted to that goal. What would be needed is an algorithm to design this phase compensation all-pass IIR, and as I already mentioned, I am not aware of such thing. All I can provide is a proof of concept example, with such a filter hand crafted to show that this idea could actually work. 

The example I have is based on the 3rd degree LWDF filter we have encountered earlier in Post 24: 

image

This is a very modest LWDF IIR filter with the following transfer function: 

image

It has a very flat pass-band (only 0.025dB of ripple) and a modest 23dB stop-band attenuation:

image

image

Its only redeeming quality is the fact that it is multiplier-less and can run at a sample rate equal to the clock frequency. Cascading four such sections however leads to the following 12th order-low pass filter: 

image

with the transfer function: 

image

This has now a much more respectable transfer function, with 90dB stop band attenuation: 

image

and 0.1dB pass band ripple: 

image

but an even more non-linear pass band phase. This plot shows the difference between the IIR filter's phase and the ideal linear phase, the error is up to 80 degrees over the entire pass band: 

image

This is where things get interesting. The following all pass filter, consisting of a cascade of two first order sections with packing factors 5 respectively 3, and more importantly, coefficients that are still powers of 2:

image

happens to have a phase transfer function that compensates most of the phase non-linearity of our original filter, without affecting the amplitude transfer function in any way. The phase non-linearity error in the pass band of the two cascaded filters is now just 5 degrees: 

image

Is it perfectly linear? No, but for applications where this is good enough you cannot beat the performance. This will run as fast as you can clock your FPGA and will use only 10 adders in 7-Series or UltraScale families or 16 adders in Versal, and no multipliers. 

This is just an example I created 20 years ago, the main goal being the multiplierless nature of the filter, not necessarily its near linear phase and it was manually tuned, I do not have a general algorithm to design such filters. I am sure that with non-power of two coefficients and more all-pass sections a wide range of filters with much less pass band phase ripple is possible. I am working on a tool to design such filters consisting of a cascade of an LWDF IIR and an all-pass filter but it is a work in progress and I do not have anything to show for now. 

This concludes the matter of almost linear phase IIR filters, convincingly I hope. In the next post I will look deeper into the subject of multiplierless filters like the example above. 

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

  • Sign in to reply
  • DAB
    DAB 1 month ago

    Very infomative.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • michaelkellett
    michaelkellett 1 month ago

    Thanks for this series of v. interesting filter articles.

    MK

    • 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