Altera_Forum
Honored Contributor
12 years agoNeed Advice - First time PCIe device development + QSYS
I appreciate any advice/reading materials you can suggest to clarify my issues.
I am developing a StratixV-based PCIe card. The card was developed by another company, but they have provided all of the specs for the external DDR interfaces and PCIe interfaces. The card has a PCIe 3.0 compatible interface and two external DDR3 banks. I am trying to use QSYS to instantiate the PCIe hard IP core for Stratix V, and have some questions. q1: For the PCIe core instance I am using the Avalon-MM interface. I configured two BARs, 0 and 1, as 32-bit non-prefetchable memory. BAR0 I am reserving for the control and status register (CSR) hookups. BAR1 I am using for the scatter-gather DMA controller descriptor table memory. Is this a good design choice? Is there a typical design pattern for choosing how to assign each BAR? q2:I originally started my design using the Avalon-ST Stratix V HIP PCIe core, but ran into some issues with the Stream-Memory SGDMA controller IP. The symbol size for the PCIe output was 128-bits, while the SGDMA was a single byte. I am assuming in streaming mode the ST interface is dumping the entire TLP packet on the streaming interface. In that case, I was thinking of doing a DC FIFO -> packet to byte IP -> SGDMA controller. Was I thinking along the correct lines? q3:
I am actually thinking this is more of a bug with QSYS 13.0sp1. I was generated my synthesis files as VHDL, and during compilation there was an error from the altera_pcie_sv_hip_avmm.vhd file that was complaining about the direction of tlbfm_out. The VHDL component declaration used an output, while the underlying verilog entity used that signal as an input. I am assuming this is either a bug, or I some how connected a signal incorrectly. Thank you for your help.