Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎06-03-2019

How to clean all the data stored in an FIR filter generated with IP CoreGen?


MY AIM: Design a FIR filter by using IP CoreGen in ISE 12.1. 

IP I am using: DS534 (datasheet:

ISSUE (this is what I would need): TO CLEAN IN NO MORE THAN 1 CLOCK CYCLE THE INTERNAL STORAGE MEMORY WHERE ALL PREVIOUS SAMPLES WERE STORED (with previous samples I mean: x[n-1], x[n-2], x[n-3] etc).

According to the datasheet given above and some simulations I have done, it's not possible to reset the internal stored samples (from previous clock cycles). Isn't there any way to clean all the past samples stored in ONLY ONE CLOCK CYCLE

NOTE: Yes, I know that it could be possible to send continuosly all zeros in order to clean the internal memory. However, cleaning the filter by sending in zeros needs more than one clock cycle and as I said, I need to clean all the internal memories in only 1 clock cycle.

Have you got any tip of adivce? 

Thank you!

Best regards.

0 Kudos
2 Replies
Registered: ‎08-16-2018

FIR Compiler v5.0 does not have this feature in it. You need to flush out the data by sending a series of zero. 


Also, this feature is included in FIR V7.1

/ 7\7     Meher Krishna Patel, PhD
\ \        Senior Product Application Engineer, Xilinx
/ /        
\_\/\7   It is not so much that you are within the cosmos as that the cosmos is within you...
0 Kudos
Registered: ‎05-21-2015


The fundamental problem here is that it is impossible to clear all memory in one clock cycle given a reset signal.

The solution is to adjust how the filter runs so that it *appears* that the memory has been cleared in a single clock cycle.

In the past, I've done this by keeping track of which memories have "valid" data within them, and then only using those memories to calculate the filter output.  As @meherp noted, the Xilinx FIR cores do not have this capability.  It's rarely needed, hard to build, costs logic, etc.

An alternative you might try would be to use two filters.  You feed the first filter with zeros, and the second filter with your samples.  Once you hit the reset, you start feeding the first filter with samples and return the results based upon that first filter's response.  After a delay equal to the length of the filter, you can switch back to the original filter and start feeding the second filter with zeros again.

It's kludgy, but it would work.