0
votes

I am using a VC707 FPGA board which includes a Virtex 7 series Xilinx FPGA. I want to transfer the data contained in the DDR3 Memory to a PC using an ethernet connection. I'm looking for a tutorial to do that? I have no requirements on the speed of the data transfer.

Thank you for your help

1

1 Answers

1
votes

It turns out that communicating between the FPGA and a PC over ethernet is a very complicated process. Most people use PCI Express to communicate between a VC707 and a PC.

In my experience, PCI Express is much easier to use than ethernet when communicating between the FPGA and PC. First, no software is required on the FPGA side to configure PCI Express -- it's all done from the host. Second, the Xilinx PCI Express reference design is complete -- once you have the reference design you have a working system. The ethernet reference designs I found on Xilinx.com did not even show how to configure the device driver for the MAC, nor did they connect the MAC to an ethernet cable. The ethernet/microblaze example below does seem complete, but look how many steps there are to get it working.

I found a tutorial to set up ethernet communication which uses a microblaze soft processor in the FPGA to configure the ethernet. https://reference.digilentinc.com/learn/programmable-logic/tutorials/arty-getting-started-with-microblaze-servers/start

I usually use the PCI Express core because I want more control over the interface, but the PCI Express AXI Bridge is very straightforward to use.

The answer is much to long to include here.

If you cannot plug the vc707 into the PC and setting up ethernet is too daunting, then there are two more options that come to mind:

  1. Transfer data over Uart
  2. Add an FTDI UMFT600X-B FMC FIFO board and use USB 3 to transfer data

Both UART and the FTDI FIFO are bi-directional, so they can send data both from PC to FPGA as well as return data from FPGA to PC.

I generally use a UART that has RX and TX FIFOs rather than a register interface to make it easy to integrate with RTL.

Given that you have no speed requirement and you already have UART working in one direction, it's probably easiest to use the UART for both directions.