I am reviewing long FIR options with SHARC.
Usually the maximum length is a function of memory as opposed to MIPs.
Is there support for external memory? If yes, what is possible?
On the 21489, adding external SRAM is one option. This would be its only purpose.
On the 21469, DDR2 makes more sense.
On a sane 21479 (TQFP-100) package, a SPI based memory buffer would be possible.
The Long FIR module will store the coefficients in the heaps that you determine. I would suggest defining the g_slow_heap in whatever external memory you'd like to allow the Long FIR to store as many coefficients as possible.
I wanted to follow up on this question given that now I have a target that I am testing with. It is a 21469 with external DDR ram. Now when I want to test a long FIR module, it still wants to use the fast heap which is internal memory and when I right click on the module, there is not tab or option to instruct to use the slow heap which is the external ddr memory. Is there a directive or an item I have to add within the AW firmware/platform to make this work? Please elaborate more on your previous statement about the g_slow_heap.
AWE Designer will automatically generate an ordered list of all the object (modules and wires and layouts) that need to be allocated on your target to run that layout. By default, the order things are allocated in are 1. all wires, then 2. all modules in (more or less) the order they appear in the signal flow. Some modules, like Sample Delay, will allow you to choose which heap the memory will be allocated in, but most modules will attempt allocation in the fast heap. If the fast heaps are full, then your target will fallback to the slow heap.
You can adjust the order modules are allocated in, which can affect which heap they are allocated in, by changing the allocationPriority in the Build tab of the module properties of any module in your layout. If you want these Long FIR modules allocated specifically in slow heap so other modules can have access to the fast heaps, then you can set allocationPriority to a negative number so they will allocated last. Positive numbers will make the module be allocated first. You can use the Tools -> Generate Target Files menu to create .aws files, and by looking at the order in which the 'create_module' commands are created you can see how the allocationPriority is affecting the allocation order.
As for the slow heap itself, this is defined in the target BSP by assigning an array to the pSlowHeap member of the AWEInstance structure before calling awe_init (g_slow_heap is just a common global variable name used for the slow heap array in reference examples). You can use linker files or whatever mechanism the target compiler/linker provides for making sure this slow heap buffer is put in the DDR memory of your target.
Hope this info helps you,