FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6670 Discussions

PCIe - DMA - External Descriptor Controller Example

UserID4331231
New Contributor I
1,553 Views

Hello Everyone,

 

I have following Agilex FPGA design requirements.

  • PCIe x16 Endpoint with BAR size of minimum 8K - I have dependency that BAR 0 offset 0 to 8K must be reserved for my application specific usage. Offset above 8K is free.

 

  • Host to Device (H2D) and Device to Host (D2H) DMAs. - DMAs are totally controlled by custom HW login inside FPGA. Based on BAR0 accesses from host side;  Device would make its own descriptors and other control signal to Initiate H2D and D2H DMAs. This DMA transfer could be variable lengths.

 

I am reviewing Multi Channel DMA Intel® FPGA IP for PCI Express* Design Example User Guide and specifically External Descriptor Controller option as my staring point - https://www.intel.com/content/www/us/en/docs/programmable/683517/25-1/external-descriptor-controller-72769.html

 

Here is the block diagram for example design from the webpage

UserID4331231_0-1751653149798.png

 

 

 

I find that this example design is the closet to PoC design I want to create. I need more help in understanding the External Descriptor Controller Example design so that I can figure out where and what can I change to meet my design needs. I have following questions to begin

 

  1. While following steps to generate design example using quartus/platform designer, I see that BAR 0 is chosen to be 4MB. While analyzing design In platform designer I see that DUT (blue box in figure 22 above)dut.po_bam_master port is connected to  BAM_interpreter (grey box in figure 22 above)BAM_INTERPRETER_M0.AVMM_BAM_SLAVE port and address mapping is 0x0 to 0FFF_FFFF (256MB) which is greater than 4MB BAR0. 
    1. I want to understand how current design is using 256MB of space. can you help?
      1. What offset is used for what purpose ?
      2. Are BAR0 (4MB) accesses are mapped to "BAR interpreter" (grey box) in above figure 22? If yes, what 4MB range between 256MB address range is mapped to BAR0?
      3. How BAR0 4MB space is used? What offset is used for what purpose ?

 

  1. While analyzing design In platform designer I see that DUT (blue box in figure 22 above)dut.po_h2ddm_master port is connected to  DMA_MEM (grey box in figure 22 above)DMA_MEM_M0.AVMM_H2DDM_SLAVE port and address mapping is 0x1_0000 to 1_7FFF (32KB) . Similarly, dut.po_d2hdm_master port is connected to  DMA_MEM (grey box in figure 22 above)DMA_MEM_M0.AVMM_D2HDM_SLAVE port and address mapping is 0x1_0000 to 1_7FFF (32KB) .
    1. What is the reason here to have starting offset as 0x1_0000 for both AVMM connections? I mean the address ranges could also be  0x0 - 0x7FFF; but so what is the reason behind choosing address range 0x1_0000 to 1_7FFF?
    2. In platform designed when I click on DMA_MEM_M0 it shows an IP which I am not quite familiar with. But it feels like that it is Dual ported RAM.  My question is can I replace DMA_MEM_M0 with Dual ported RAM IP (2 AVMM slave ports and Ip Configured for 32KB memory) without breaking example design functionality ?
  2. I see that the example design has generated some driver and application code and https://www.intel.com/content/www/us/en/docs/programmable/683517/25-1/external-descriptor-controller-03941.html has steps on how to use it.  However I need detailed documentation on driver and application which could explain Flow diagrams of inner workings like - how device is initialized, how driver buffer are allocated, how DMA descriptors are created and loaded into DMA, how the data is actually transferred between host memory and Device memory (DMA_MEM and/or other memory/registers inside FPGA), how completions or acknowledgement is sent etc. can you point me to this level of details? Understanding all this will help me towards how can I take this base driver and application, and modify them to fit into my

 

thank you and looking forward to this journey

Labels (1)
0 Kudos
4 Replies
RongYuan
Employee
1,295 Views

Hi,

I'd like to confirm that you're targeting a MCDMA Data Mover+External Descriptor Controller design using Q25.1 Pro, right?


Regards,

Rong



0 Kudos
RongYuan
Employee
1,281 Views

P-Tile or F-Tile?


0 Kudos
UserID4331231
New Contributor I
1,225 Views

Hi RongYuan

I confirm that I am using  MCDMA Data Mover+External Descriptor Controller design using Q25.1 Pro.

and I plan on using PCIe EP on R-tile. The FPGA Device I have is  Agilex 7 - AGIB027R29A1E1V.

 

Thanks

 

 

0 Kudos
RongYuan
Employee
865 Views

Hi,

After reviewing, these questions require more detailed investigation. Please kindly contact your local FAE/DFAE or create an IPS for this.


Thanks,

Rong


0 Kudos
Reply