element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • 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 18
  • 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: 9 May 2021 9:13 PM Date Created
  • Views 991 views
  • Likes 4 likes
  • Comments 0 comments
  • xilinx
  • fpgafeatured
  • fpga
  • dsp
  • guest writer
Related
Recommended

The Art of FPGA Design Season 2 - Post 18

fpgaguru
fpgaguru
9 May 2021

Multichannel Symmetric FIRs

 

In the last two posts we have considered the case when the FPGA clock frequency is faster than the FIR sample rate. The ratio between the system clock and the data sample rate is called the overclocking factor M. We have seen that there are two ways to take advantage of this, either implement M identical FIR channels with K DSP48s, where the filter order N is K for non-symmetric FIRs, 2*K for even-symmetric ones and 2*K-1 for the odd-symmetric case, or implement a single FIR using only K/M DSP48s. I have addressed all three types of FIR symmetry for the second case but only non-symmetric multi-channel designs for the first case. In this post we will look at even and odd symmetric multi-channel FIRs.

 

Like we did for the non-symmetric multi-channel FIR design, we start with a non-pipelined even-symmetric, single rate FIR, using for illustration a filter with K=8 and M=4 We then replace every single delay in the design with M delays, which transforms it into an M-channel, single rate, even-symmetric FIR:

imageThe next step is deciding where to make the pipelining cuts. We need three longitudinal cuts to pipeline the pre-adder and the multiplier and one transversal cut for each filter tap to pipeline the post-adder:

image

We need to add one register for every wire that crosses a pipeline cut in the forward, input to output direction and remove a delay for every wire crossing a cut in the opposite direction. If you need a refresher on how pipeline cuts work, you can look back at Post 4. In the next diagram, the registers added for crossing the three longitudinal cuts are marked in magenta, the ones added for the transversal cuts in yellow, and the ones removed in cyan:

Note that there is one M-delay register at the last tap which remains unaffected because neither its input wire, nor its output one, cross a pipeline cut. Except for that middle delay, all the forward data delay line registers are now M+1 deep, while all the reverse ones are M-1. We can no longer use the DSP48 A cascade since there are only one or two delays inside the DSP48 for that, and we need at least 3 when M is 2 or larger. This next diagram shows what resources can fit inside DSP48s, and which ones, marked in white, need to be implemented in the FPGA fabric: image

All the blocks that Like all the other FIR implementations we have seen so far, this one too is very efficient and scalable to any filter size. image

 

For the odd-symmetric case we can change directly this pipelined implementation, instead of repeating all the steps. We need to make two changes. First, we need to remove the unique M-delay pipeline register mentioned earlier. This leads to the same data sample being multiplied with the last coefficient and added to the output result twice, so we correct this by dividing that coefficient by a factor of two. Alternatively, we could also scale up all the other coefficients by a factor of two, or leave the coefficients unchanged and remove the pre-adder for the last DSP48 stage: 

image

This concludes the posts dedicated to overclocking FIRs, next we will examine the opposite case, when the system clock rate is smaller than the data sample rate.

 

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

  • Sign in to reply
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