This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Problem with PCIe Inbound address translation

Hello all.

I'm having problem with PCIe Inbound address translation.

My configuration setting:

  • C6678 is Root Complex and FPGA (Virtex-6) is End Point;
  • Reference clock frequency 100MHz;
  • Number of lanes x1;
  • Endpoint BAR[1:0] - 64 bit, 2 Kbytes;
  • Endpoint BAR[2] - 32 bit, prefetchable, 2 Kbytes;
  • Root BAR0 - 70000000h;
  • Outbound translation is enable and work.

Root Inbound configuration:

  • IB_BAR0 (300h) - 1;
  • IB_START0_LO (304h) - 70000000h;
  • IB_START0_Hi (308h) - 0h;
  • IB_OFFSET0 (30Ch) - (uint32_t)pcieConvert_CoreLocal2GlobalAddr((uint32_t)dstBuf.buf) (local buffer - 00855C00 convert to global - 11855C00h);

I'm just trying to Write 1 dword (0000BEAF ) from FPGA to C6678 destination address 70000004h, but the result is wrong.

I saw on FPGA PIPE_TX interface this Memory Request:

  • FB 00 9A
  • 40 00 00 01 (Fmt | Type = 40 - Memory Request, Lenght = 1 dword)
  • 01 00 00 0F (ReqID = 0100, LBE = 0, FBE = F)
  • 70 00 00 04 (Address = 70000004h)
  • AF BE 00 00 (Data = 0000BEAF)

What am I doing wrong ?

Tnank You,

Andrey B.