The High Level Controller (HLC) is significantly
more complex than the other blocks in the CLB tile. The HLC performs two main
functions:
- Provides a means of communication and data exchange with the rest of the
device. This is done through two methods: a global access path to four general
purpose HLC registers (R0 through R3) and PUSH and PULL FIFOs between the CPU
and the HLC. The general-purpose HLC registers are designed to only be written
to during device configuration time. To avoid unexpected behavior, the HLC
registers must not be written to during run-time operation. The PUSH and PULL
FIFOs are the primary avenues of data exchange during run-time, refer to Section 8.4.7.4 for more
information.
- Provides a programmable, event-based action system, which performs computation, manipulation of logic functionality, and data movement. In other words, events can be configured to trigger a predefined set of actions in the CLB tile, or to initiate data exchange with the rest of the device.
The architecture of the HLC is shown in Figure 8-20. The HLC is an event-based system capable of handling up to four simultaneous
events that can be selected from any outputs of the other blocks within the tile or
from an external input.