Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
11 years ago

PCIe master transfers from dedicated dual-ported memory

Has anyone tried interfacing the PCIe master logic to a dedicated dual ported memory block?

So you'd tell the logic the address in the dual ported memory, the PCIe address (64bit),

the transfer length (maybe limited to a single TLP), and the direction and then read a status

bit for completion.

This ought to be simpler (and use a lot less resources) than the schemes that need a DMA engine with an internal fifo large enough for the PCIe data bursts.

The transfers themselves would be scheduled by other logic (eg a nios cpu) which could an fpga-side data copy for data that doesn't permanently reside in the correct memory block.

2 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    Has anyone tried interfacing the PCIe master logic to a dedicated dual ported memory block?

    So you'd tell the logic the address in the dual ported memory, the PCIe address (64bit),

    the transfer length (maybe limited to a single TLP), and the direction and then read a status

    bit for completion.

    This ought to be simpler (and use a lot less resources) than the schemes that need a DMA engine with an internal fifo large enough for the PCIe data bursts.

    The transfers themselves would be scheduled by other logic (eg a nios cpu) which could an fpga-side data copy for data that doesn't permanently reside in the correct memory block.

    --- Quote End ---

    Hi Dave, I have been somewhat busy and had used dual ported IMEM with one port for NIOS and one port for the PCIe Bar master ... but you are indication the PCIe master port ... that would fetch

    from the dual ported memory and send out as a TLP ... Can you say how you configure the PCIe core to do that ( master / DMA function ). ?

    Also, for Avalon MM interconnect, can you answer this , to get a greater than single DW write transaction on PCIe , is that a reflection that the Avalon MM transaction was also a greater than DW transaction.

    ie 64 bit transaction or a burst 32 bit transaction ?

    One final question while I am here ... I have only used the PCIe Hard IP in Cyclone, Arria and Stratix FPGA's .... I want to know how to control two TLP level items.

    1) the Relaxed Ordering ( RO ) bit .

    2) the AT bits that will define a normal address 2b00 versus a ATS translation request or a Read or Write with a cached ATS translated address.

    I have a feeling these may require the Soft PCIe IP which is licensed .

    Thanks, Bob.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I can only answer one of your questions.

    If a dma controller does an Avalon master transfer to the PCIe Avalon slave (PCIe master) then it does generate large TLP.

    I don't actually know how the transfer (or burst) length gets to the PCIe block.

    To my mind it would be much easier if the PCIe master interface had an embedded dma controller.

    We were fortunate in our previous design that the ppc processor (at the other end of the PCIe link) did have such a dma controller.