On-the-fly FIR coefficient update (1701)
After researching the 1701 datasheet and the SigmaStudio help, am I to understand that having 5 safeload address registers and data registers would restrict your FIR filter size to 5-taps in order to perform on-the-fly coefficient updates?
Is there any sigmaDSP capable of safeloading FIR coefficient, say 128-taps? Anyway of dynamically allocating safeload ram?
And why is my name used instead of my username???????
Hi ael-
I can answer the username question. When you view your own posts or profile on EngineerZone, you will always see your full name. Other users, however, will only see your username displayed in these places by default. To see what other users see, you can log-out and view one of your postings.
Regards,
AndyR
EngineerZone Community Manager
Good...
That’s a relief incase my question is really dumb.
The ADAU1701's safeload is done with hardware registers, so the limitation of 5 simultaneous safeloaded parameters comes from this hardware limit. Five registers were chosen because safeload is most often used for IIR coefficient updates, for which there are 5 parameters. Unfortunately, there are no SigmaDSPs that have the ability to do a safeload of more than 5 parameters at a time.
Thanks for the reply..
So to be clear, in order to update more than 5 FIR coefficients you must:
"Mute the DSP, write directly into the filter’s coefficient space in parameter memory, and then unmute the DSP to prevent unstable results"
Excluding serial write speed, approximately how much time does the above sequence take? Assume 128tap FIR.
ael wrote:
Excluding serial write speed, approximately how much time does the above sequence take? Assume 128tap FIR.
The time the sequence will take will be almost completely determined by your serial write speed. Each SigmaDSP parameter word is 4 bytes long. If you want to write 128 parameters, you'll need to write 4096 bytes plus a few additional bytes for addressing and muting/unmuting. With a 400 kHz I2C clock, writing these values will take about 8-9 ms. With a faster SPI clock - let's assume 5 MHz - your load time will be only about 0.7 ms.
There is another way that you could do this that requires some extra processor utilization. If you only need a couple of different pre-defined filter settings, you could design all of the filters in parallel in your signal flow and just switch between them as needed. For a 128-tap FIR that will require that you have 128 free memory locations in your program, parameter, and data memories. It's certainly not very efficient in terms of processor utilization, but it will reduce your mute time if that's important to you.
This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.
Thank you,
EZ Admin
Please log in to reply.