SoC Architecture

Xilinx FPGAs are heterogeneous compute platforms that include Block RAMs, DSP Slices, PCI Express support, and programmable fabric. They enable parallelism and pipelining of applications across the entire platform as all of these compute resources can be used simultaneously. SDSoC is the tool provided by Xilinx to target and enable these compute resources for C/C++ hardware functions.

The basic structure of an FPGA is composed of the following elements:

  • Look-up table (LUT) - This element performs logic operations.
  • Flip-Flop (FF) - This register element stores the result of the LUT.
  • Wires - These elements connect elements to one another.
  • Input/Output (I/O) pads - These physical ports get data in and out of the FPGA.

The combination of these elements results in the basic FPGA architecture shown in the following figure. Although this structure is sufficient for the implementation of any algorithm, the efficiency of the resulting implementation is limited in terms of computational throughput, required resources, and achievable clock frequency.

Contemporary FPGA architectures incorporate the basic elements along with additional computational and data storage blocks that increase the computational density and efficiency of the device. These additional elements, which are discussed in the following sections, include:

  • Embedded memories for distributed data storage
  • Phase-locked loops (PLLs) for driving the FPGA fabric at different clock rates
  • High-speed serial transceivers
  • Off-chip memory controllers
  • Multiply-accumulate blocks

The above figure shows the combination of these elements on a contemporary FPGA architecture. This provides the FPGA with the flexibility to implement any software algorithm running on a processor. Note that all of these elements across the entire FPGA device can be used concurrently, creating a unique compute platform for C/C++ applications.