ΣSigmaStudio Ask AI Русский Log in

Accelerator Chain Pointer Register (specifically FIR)

Processors & DSP homer Jul 21, 2020 00:00 1 replies Original on forum ↗
Subscribe
homer Question
Jul 21, 2020 00:00

Hello,

I am still learning all the peculiarities of the SHARC processor. I am stumped trying to get the hardware accelerators to work.

Based on my understanding of the documentation, you create a TCB in memory. Then you load the address of this TCB in to the chain pointer register. The accelerator then fills all of it's DMA registers (IBMLC, etc) based on the values in said TCB.

So I have gone ahead and done all that. Unfortunately when I load the chain pointer address into the CPFIR register, the address gets mangled. It appears that it masks everything from bit 19 onward. This means I can only feed it addresses 7FFF or lower. Unfortunately my addressing doesn't go that low.

If I am required to change this (if it is even possible?) please let me know how I may go about doing this. As far as I am aware though, I have a default set up, and in the documents there was no mention of needing to mess around with memory addressing to get this to work.

I figure I am either missing a crucial piece of the puzzle here, or these hardware accelerators have a fatal design flaw. The latter is probably more likely.

I would greatly appreciate some support.

Thank you

ADIApproved Reply
Jul 24, 2020 00:00

Hi,

From your mail, I'm not sure which processor you are referring to? I guess it is ADSP-214xx. If that was the case, can you please check if you have subtracted 0x80000 from the chain pointer register. It will look something like this.
*pCPFIR=(int )FIR_TCB_CH1+12-0x80000;

The chain pointer register’s value is offset to match the starting address of the processor’s internal memory before it is used by the I/O processor. The offset value for ADSP-214xx is 0x80000. So if the actual address was 0xb8000, only write 0xb8000-0x80000= 0x38000 to the CP register, and the hardware will interpret that as 0xb8000.

For your reference, I'm attaching a simple FIRA code that can be directly run on ADSP-21479 Ezkit. Please take this code as a reference and see how you get through this.

ADSP_21479_FIRA.zip

Regards,
Anand Selvaraj.