User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 651
UG585 (v1.11) September 27, 2016
Chapter 22: Programmable Logic Design Guide
PL Interrupt Servicing
PS interrupts are routed to the PL and can be serviced by a MicroBlaze processor or by hardware
state machines.
HW State Machines
When programmable response times from a MicroBlaze or PicoBlaze CPU are not sufficient,
hardware state machines can be created to respond to events. These state machines are generally
created in RTL, but can also be generated using MATLAB Simulink and Labview graphical design
languages.
22.2.6 Reconfigurable Computing
The programmable logic in each Zynq device can be reconfigured as needed to provide new
hardware accelerators. Either the entire device can be reconfigured, or a selected portion of the PL
can be reconfigured. This allows for a library of accelerator functions to be stored on disk, flash
memory, or DRAM and downloaded on demand. The PS can be used to orchestrate this
reconfiguration over the PCAP interface and manage the allocation of PL resources.
Programmable Engines
Typically programmable logic based accelerators implement a specific data flow graph which directly
converts input data to output data. An example would be a matrix multiply which pushes data from
an input buffer through an array of multipliers and adders and stores the result in a result buffer. An
alternative approach might be to build a programmable engine with multipliers and adder
instructions to implement the algorithms and general purpose memories to store the data.
While not generally as efficient as fixed function flowgraphs, programmable engines have the
advantage of being reprogrammable to implement alternate algorithms. An additional advantage is
that they can be used to implement complex functions as the number of operations is limited only by
the instruction memory or the bandwidth required to fetch instructions from DRAM. Also a
programmable engine might more easily match the required computational rate than a fixed
function flowgraph. In general, programmable engines require access to local memories for code
and data storage and can require significantly more memory than fixed function flowgraphs as well
as additional logic for address generation and instruction decoding.
OpenCL has been used as a programming language for these types of engines, but assembly code is
also viable. These engines are an area of active research and some IP is now commercially available.