Post Go back to editing

IPAT-Inquiry Regarding Fixed Parameter Addresses

Category: Software
Product Number: ADAU1466
Software Version: sigma studio4.7

I understand that IPAT provides a way to access parameters through fixed table entries rather than directly accessing variable memory addresses. However, I'm still facing a practical challenge in my implementation.
 

Currently, my MCU can control algorithm parameters in Sigma Studio through IPAT, but I need to send three commands:

1. Write the parameter value to the IPAT values_11 address (e.g., 0x6015)
2. Write the start_address value (e.g., 0x6008) pointing to the IPAT entry
3. Write the num_of_loads_and_trigger value (e.g., 0x6009) to execute the transfer

 

My concern is: If the addresses for `start_address` (0x6008) and `num_of_loads_and_trigger` (0x6009) can change with each project compilation, then IPAT hasn't completely solved the problem of variable addresses. I would still need to extract these two addresses from the compiled system files after each compilation, just like I would need to do with safe load addresses.
 

The core issue seems to be:
- IPAT fixes the addresses for parameter values (like values_11 at 0x6015)
- But the IPAT control registers themselves (start_address and num_of_loads_and_trigger) still have variable addresses


Could you clarify if there's a way to lock these IPAT control register addresses as well? Or is the standard practice to always extract these addresses from the compiled project?

  • Hello pjs,

    I understand your question.

    Let's think like 50 parameters should be stored at IPAT, once the IPAT is set with those parameters then those 50 parameters' address will NOT change every time you add/remove any blocks, basically any change you make in the schematic.

    Reg the IPAT control register, it may change depends on how big the table is, it has to allocate memory for holding these parameters, if you are using 50 parameters then it allocates memory for those parameters somewhere, let's say at the end of the page. Once you increase the table size to 100, then it may move those 100 parameters to some address. while the original address (actual parameter address) doesn't change, but the indirect address (all IPAT control registers) that holds the original (actual) address may change by some numbers, that will be exposed in the exported files. So, if you are including bulk blocks or adding bulk parameters into the table, then the starting address may change (but the actual address doesn't). So, all you have to do is to look for only the IPAT control address in exported file once you designed your project and done with compilation.

    we can fix all the parameter addresses, but the IPAT control address may change depends on how big your project is and how big the IPAT table is. I guess it won't be cumbersome to look for 7 control registers in the exported file once you are done with the designing.

    Regards,

    Harish

  • Hi Harish,

    Thank you for your detailed explanation.

    To be honest, I was originally hoping to find a  one-time, permanent solution—something that would allow the MCU program to remain unchanged regardless of any modifications on the DSP side, with all addresses completely fixed.

    However, based on your explanation, I understand that this is not feasible. The addresses of the IPAT control registers can shift depending on project scale, parameter table size, and other factors. There’s no way to fully statically lock them.

    Thanks again for your patience!

    Best regards,

    pjs

  • Hello pjs,

    You have some good questions. I need to refresh my memory on some of this. It actually has been a while since I have had to use this feature or anyone has asked!!

    Here is the Wiki page describing how it all works. This might be helpful.

    Indirect Parameter Access Table (IPAT) (ADAU146X, ADAU145X, ADAU144X) [Analog Devices Wiki]

    Dave T