Altera_Forum
Honored Contributor
16 years agoAvalon-to-PCIe Address Translation
Hi,
I am trying to transfer data from PCIe endpoint's DDR2 to host's mem via DMA. I can setup DMA and initiate a transfer; I can also see DMA performing DDR2 'reads' on SignalTap-II; but DMA write operations (to PCIe Tx slave) are not going through. My PCIe core has dynamic address translation table enabled and has two pages, 128MB each. Let's say my virtual address for large chunk of mem on host (win32) side is 0x9344_7000. Following the Avalon-to-PCIe address translation description from PCIe core's manual, I perform the following ops: a. Write (9344_7000 & FFFF_FF00) at offset 0x1000 (Dynamic translation table entry) on BAR0 (PCIe's CRA slave). b. Write 2000_0000 (DDR2 start on avalon) as DMA's read address. c. Write 0344_7000 as DMA's write address. d. Write 0 to DMA's status reg e. Write 0x1000 to DMA's length reg - to test small chunk of data first. f. Write 0x488 to DMA's control reg to start a doubleword transfer and continue until length is 0. I do see my DDR2 being read on SignalTap-II. And the DMA status reads back 0x11, which seems to make sense (Transfer complete). But I don't see any changes in the content of my host (win32) mem where the DMA writes are supposed to go. Any pointers would help. Thanks! regards,