У Альтеры все зависит от желаемой продуктивности. Есть ядро PCIe (IP Compiler for PCI Express) для QSYS, с красивым интерфейсом Avalon-MM, к этому ядру по тому же интерфейсу подключается DMA (DMA Controller или Scatter-Gather DMA (он же SG-DMA)). Этими DMA можно управлять и с FPGA и с PC (или другого PCIe Root Complex). Все работает без проблем, только PCIe используется не эффективно. Зато не надо самому складывать PCIe пакеты. То есть нужно только сказать какие данные и куда записать (или откуда прочесть).
Для задач, где нужно взять максимально из PCIe, нужно брать ядро не для QSYS а простое с MegaWizard, где придётся пакет самому собирать, самому анализировать кому какой ответ пришёл и т. д. и конечно писать самому DMA, потому что если Вы разберетесь с этим всем то DMA написать конкретно под свою задачу не составит большого труда. (DMA, то есть прямым доступом к памяти будет любая команда на чтения или запись данных инициированных FPGA (End Point лезет в память Root Complex))
Если скорость не требуется и не надо MSI-X, то можете попробовать 1й вариант.