I’d recommend starting with understanding PCIe first. Th following is a great book: PCIe System Architecture. You’ll have to master a few concepts to get going, like bus master DMA, PCI config regs, and then Xilinx/Altera PCIe IP cores. Some boards also have a chip that handles PCIe for you too, depends on the board. But start with understanding PCIe first. You can also learn quite a bit about it by reading the PCI kernel modules in the Linux source code.
That's strange, it worked when I posted it but it looks like its 404 now. Here's an amazon link.
