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

PCIe on Cyclone 10 gx dev kit

KRow
Beginner
1,150 Views

I bought the cyclone 10 gx dev kit to learn how to implement PCIe.  I do not have large amounts of data to move.  Less the 1Gbs, so Gen 2 or Gen 2 is plenty.  I have tried the examples for this board but I don't understand how I can interface to this with the "User" firmware on the FPGA side.  I need to send and receive data.  Sending from the FPGA needs to be initiated on the FPGA side and sending data from the computer to FPGA needs to be initiated on the computer side. How do I do this.  I am missing some documentation on this?  Is there examples of FPGA send its own data.  This will be used for a data acquisitions system sending and receiving 146 bytes at 200Khz rate.  I want the PCIe for low latency.  Is DMA the way to do this or Streaming?

 

I normally design in the block schematic type.  For my it is easier to see how things are tied together.  I don't see an example for PCIe in the block schematic format?

 

Thank you for any help on this.  I am stuck....

 

Kerry

0 Kudos
9 Replies
ventt
Employee
1,066 Views

Hi @KRow,


Thanks for reaching out.


Allow me some time to investigate your issue. I shall come back to you with the findings.


Thanks.

Best Regards,

Ven


0 Kudos
KRow
Beginner
1,051 Views
0 Kudos
ventt
Employee
1,019 Views

Hi @KRow,


You may use either DMA or streaming for data transfer. Note that with DMA, the data transfer occurs without the intervention of the CPU.


We have PCIe Gen 2x4 Avalon Streaming and Gen 2x4 DMA Design Example available in our FPGA Design Store:

1. PCIe Gen 2x4 Avalon Streaming: https://www.intel.com/content/www/us/en/design-example/714943/intel-cyclone-10-gx-fpga-pcie-2-0-x4-avalon-streaming-design-example.html

2. PCIe Gen 2x4 DMA Design Example: https://www.intel.com/content/www/us/en/design-example/714945/intel-cyclone-10-gx-fpga-pcie-2-0-x4-dma-design-example.html


You may follow the design example user guide above to install the driver and run the application.


We do not have the PCIe design example in the block schematic type.

Additionally, starting from the Quartus® Prime Pro Edition software version 23.3, the compiler cannot synthesize schematic Block Design File (.bdf).

Quartus® Prime Pro Edition User Guide Getting Started: https://www.intel.com/content/www/us/en/docs/programmable/683463/24-1/converting-symbolic-bdf-files-to-acceptable.html


Typically, PCIe design examples are built from the parameterizable IP cores in which you can use the IP Catalog (Tools > IP Catalog) to instantiate the PCIe IP core. You may notice in these PCIe design examples, the PCIe IP cores are usually integrated with other IP components to create a functional design. The IP components are then instantiated and wrapped in a top-level module or Qsys file through Platform Designer. To see the interconnection of the IP components in the design example, 

1. You may open the Qsys file and view it in Platform Design. 

Quartus® Prime Pro Edition User Guide Platform Designer: https://www.intel.com/content/www/us/en/docs/programmable/683609/24-1/creating-a-system-with.html

2. Alternatively, you may open the RTL Viewer (Tools > Netlist Viewers > RTL Viewer) after running Analysis & Synthesis to visualize the connections between blocks in the PCIe design example.

Quartus® Prime Pro Edition User Guide Design Compilation: https://www.intel.com/content/www/us/en/docs/programmable/683236/24-1/exploring-the-rtl-analyzer.html


Thanks.

Best Regards,

Ven


0 Kudos
KRow
Beginner
986 Views

Thank you, however I still do not understand how to initiate a transfer or read from the FPGA side.  These examples only have the computer side requesting reads and writes.  How does the FPGA request read and writes?  Am I missing something?  What do I use on the FPGA side to do this?  Still confused.

 

Thank you,

Kerry

0 Kudos
KRow
Beginner
976 Views

Also I want PCIe for low latency to transfer small chunks of data (146 bytes) in both direction.  I am hoping for latency to be less than 1us.  Is this possible with PCIe?  If not what kind of numbers should I expect?

 

Thank you,

Kerry

0 Kudos
ventt
Employee
884 Views

Hi @KRow,


Yes, these design examples initiate the read/write DMA from the host side. Unfortunately, we do not have design examples where the read/write DMA is initiated from the FPGA side.


May I ask what specific latency you are measuring?

We do not have the information on the internal latency of the PCIe Hard IP. The achievable latency will depend on the specific implementation of the PCIe interface.


Thanks.

Best Regards,

Ven


0 Kudos
ventt
Employee
854 Views

Hi @KRow,


May I know if you have further inquiries on this thread?


Thanks.

Best Regards,

Ven


0 Kudos
ventt
Employee
773 Views

Hi @KRow,


We have not received any response from you to our previous reply. Please login to ‘https://supporttickets.intel.com’, view details of the desired request, and post a feed/response within the next 15 days to allow me to continue to support you.


After 15 days, this thread will be transitioned to community support.

The community users will be able to help you with your follow-up questions.


Thanks.

Best Regards,

Ven


p/s: If any answers from the community or Intel support are helpful, please feel free to mark them as solutions, give them kudos, and rate the survey 4/5.


0 Kudos
MinzhiWang
Novice
419 Views

Could i ask question her? I just want to know whether user can implement PCIe IP without using QSYS? You know, not every user familiy with QSYS.

0 Kudos
Reply