I'm bootstrapping a new stand-alone, network-attached project based on an FPGA. The target chip is from the Xilinx Zynq UltraScale+ series.
The architecture I'm thinking of is:
- All the network stack and latency-critical logic is implemented in hardware, and attached to a 100GE interface.
- The ARM cores would run Linux, handle all management systems (statistics and management agent, cluster maintenance server, ...), and be attached to a 1GE interface.
- The two would be connected via a PCI-Express bus using Riffa (for example).
One question I'm asking myself is whether it is possible to program the FPGA right from the linux distribution running on the ARM cores, using command-line tools. Or does it have to be done right from an external device?
Doing so would allow seamless user logic updates without adding yet another chip in the box dedicated to performing remote upgrades.