Hello all,I am currently working on a FIR filter with streaming interface. Actually its just a moving average filter, so i don't have any coefficients. I do not use any tools like FIR compiler or anything. I am not sure how to treat the additional streaming protocol signals correctly(valid, start of packet , etc...). I guess the start_of_packet and signal as well as the channel can just be delayed according to the number of taps. But how do i treat the valid signal? An exemple: there is an invalid data sample at the input of the filter, so i do not latch this sample into the filter, so the output of the filter is invalid for this cycle, since the registers contain still the same data as during the last cycle. So, we could say if an invalid sample occurs at the input, the output of the filter is also invalid.(note that i leave aside any pipeline-registers in the adder tree for this exemple). but during start-up (untill all the register stages of the filter are filled). during start-up the output is always invalid. i ended up defining states and treat the valid output different in each state. My question is: Is there any standard way to do something like that? is there a simple solution to pass this additional signals through a filter structure? Many thanks! rookie2017
The valid acts an enable to your filter. You ignore the first n valids until the filter is fully loaded, then you can just set output valid whenever the input is valid. If you are filtering a steam of data with no end, then this is fine, but if you need to do something special at the end of a set of data, you'll need extra logic to track of where you are in the data so you can take action at the appropriate time, and maybe flush the filter.