I am trying to interface with the SDM via the Mailbox Client IP. I have created my own AVALON like interface to communicate with the mailbox client. I have been able to successfully read the Command FIFO Empty Space @ Addr Base + 2, and the ISR @ base +8. I have also been able to write and read back sucessfully changes to the IER@ base +7.
Where I am having problems is with actually interfacing with the SDM via the actual Codes, for example GET_IDCODE. I watched the youtube video about the Mailbox Client and I am trying to reproduce the GET_IDCODE example. Here is what I am doing.
Interface Clock is 100 Mhz.
- I write 0x10, which is the GET_IDCODE into the writedata signal.
- I set the address signal to 0x1 as it is a zero command length command.
- I send a single clock width pulse to the write signal.
- I then read back the ISR register and I always see 0x2h, not 0x3h as expected.
I do some additional checking by reading the Command FIFO empty space register and I do see that the command fifo level doesn't change. In signaltap I see that the command goes into the fifo and is then popped out, but there is no response after that.
I have made sure that this is the only IP interfacing with the SDM. I made sure to reset the block for at least 2 clock cycles as the user guide stipulates.
Any additional guidance would be appreciated.
I am signaltapping signals deep in the autogenerated mailbox client and I see the command request go to internals that I can't see, but never a valid response back.
I took a look at the TCL file and I realized I was doing the 2 words of data in the incorrect order. It needs to be the 0x004A8000 data first and then 0x0. I tried that and I still get 0x1 as my response. It seems that I get the error command as soon as I send the first command. The data I am sending to base+0 is 0x0000205C. I don't know what else to do to get a valid response.
I am continuing to read the tcl file and see if there is anything I could have missed.