cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Visitor
Visitor
384 Views
Registered: ‎04-28-2020

I am getting DmaIntErr in CDMA IP. Is there anyway I can probe internal signals to debug that IP?

Jump to solution

Hi,

 

I am getting DmaIntErr in my CDMA design. The manual for CDMA, PG-034, says it will occur when DataMover gets 0 value for BTT(Byte to transfer). But this is not my case because I gave it "4" as a value.

 

I think I need to look inside the CDMA module. Is there any way I can do it?

 

I will post my waveforms too just in case if someone can help me with this.

 

1. I am dispatching this descriptor to CDMA.

hsuh6_0-1604268131655.png

 

2. the descriptor above will copy data from the "0x5000_0010" address(DDR memory) to the "0x8000_0004"(BRAM buffer) address.

After that, 4 bytes of data will be transferred to the buffer.

hsuh6_1-1604268485132.png

Now, as you can see in the waveform, the CDMA module issue and ARADDR 0x5000_0010 to read data from DDR memory. However, the data read from the previous data read operation makes "RLAST" go high again and it stays there even if the RVALID is not asserted. Why does this behavior happen? I think this makes CDMA get confused and mess up with DataMover. Is this the cause of DmaIntErr?

 

Any input will be appreciated.

 

Thank you.

 

Best,

Hsuh

 

 

 

 

 

0 Kudos
Reply
1 Solution

Accepted Solutions
Contributor
Contributor
369 Views
Registered: ‎02-18-2019

Did you select "allow unaligned transfers"? Because your address is not aligned to 512/8 = 64 and you should select this option or you should align your address to 64.

Capture2.JPG

View solution in original post

0 Kudos
Reply
2 Replies
Contributor
Contributor
370 Views
Registered: ‎02-18-2019

Did you select "allow unaligned transfers"? Because your address is not aligned to 512/8 = 64 and you should select this option or you should align your address to 64.

Capture2.JPG

View solution in original post

0 Kudos
Reply
Visitor
Visitor
86 Views
Registered: ‎04-28-2020

Thank you for your reply adem369.

 

Yes. As you indicated above, the cause was the "Allow unaligned transfers" not ticked in the settings.

I have two CDMA modules in my design. But forgot to turn this on in one CDMA and that created a problem.

 

On top of this, I also had the problem in the CDMA descriptor block chain.

In the page 35 of the CDMA IP manual(PG034), there is a description on how to form Buffer Descriptor(BD) Chain.

I am using Scatter-Gather mode and not a cyclic BD mode. So I didn't look into it and just issuing next descriptor address as an incremental address.

e.g.) 

1st descriptor points 0xC000_0040 as a next descriptor

2nd descriptor points 0xC000_0080

....

4th descriptor points 0xC000_0100 (and I expect CDMA Scatter Gather operation ends here)

 

Even if I gave a stopping address of 0xC000_00C0 to AXI_lite port, it looks like I need to give 0xC000_0000(start of the Buffer Descriptor address, the addr of the first DMA descriptor.) as a next descriptor pointer in the fourth DMA descriptor. In this way, CDMA can point the first descriptor correctly. So the content of the fourth descriptor in the memory will be,

NXTDESC_PNTR: 0xC000_0000

SA: <whatever the source address you are using>

DA: <whatever the destination address you are using>

CONTROL: <specify your length of transfer here>

After I corrected these two, the problem is gone now.

0 Kudos
Reply